【電商項目】-實現用戶登錄

前言

本篇博客主要是實現電商項目的登錄功能,希望通過查看本篇博客,能給您帶來收穫:


  • service層:
    在這裏插入圖片描述

   package com.zcw.service;

import com.zcw.pojo.Users;
import com.zcw.pojo.bo.UserBO;

/**
 * @program: zcw-foodie-dev
 * @description:
 * @author: Zhaocunwei
 * @create: 2020-05-05 11:01
 **/

public interface UserService {
    /**
     * <h1>判斷用戶名是否存在</h1>
     */
    boolean queryUserNameIsExist(String username);
    /**
     * <h1>創建用戶接受前端表單提交的數據</h1>
     */
    Users createUser(UserBO userBO) throws Exception;

    /**
     * <h1>根據用戶名稱與密碼查詢用戶信息,用於登錄</h1>
     * @param username
     * @param password
     * @return
     */
    Users queryUserForLogin(String username,String password);
}


  • 實現類Impl
    在這裏插入圖片描述
package com.zcw.service.impl;

import com.zcw.my.mapper.UsersMapper;
import com.zcw.pojo.Users;
import com.zcw.pojo.bo.UserBO;
import com.zcw.service.UserService;
import com.zcw.utils.DateUtil;
import com.zcw.utils.MD5Utils;
import lombok.extern.slf4j.Slf4j;
import org.n3r.idworker.Sid;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;

import java.util.Date;

/**
 * @program: zcw-foodie-dev
 * @description:
 * @author: Zhaocunwei
 * @create: 2020-05-05 11:13
 **/
@Slf4j
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UsersMapper usersMapper;
    @Autowired
    private Sid sid; //id生成器
    @Transactional(propagation= Propagation.SUPPORTS)
    @Override
    public boolean queryUserNameIsExist(String username) {
        Example userExample = new Example(Users.class);
        Example.Criteria userCriteria = userExample.createCriteria();
        userCriteria.andEqualTo("username",username);
        Users  result = usersMapper.selectOneByExample(userExample);
        return result == null ? false:true;
    }
    @Transactional(propagation= Propagation.REQUIRED)
    @Override
    public Users createUser(UserBO userBO)  {

        String userId = sid.nextShort();
        try {
            userBO.setPassword(MD5Utils.getMD5Str(userBO.getPassword()));
        } catch (Exception e) {
            e.printStackTrace();
        }
        Users users = new Users();
        BeanUtils.copyProperties(userBO,users);
        users.setNickname(userBO.getUsername());
        users.setBirthday(DateUtil.stringToDate("1900-01-01"));
        users.setSex(2);
        users.setCreatedTime(new Date());
        users.setUpdatedTime(new Date());
        users.setId(userId);
        users.setFace("http://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=cangjingkong&step_word=&hs=2&pn=20&spn=0&di=15080&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=2202894901%2C3846724683&os=3950259263%2C2468176693&simid=3492294725%2C535044886&adpicid=0&lpn=0&ln=101&fr=&fmq=1588684138597_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=15&oriquery=&objurl=http%3A%2F%2Fimg.qqzhi.com%2Fupload%2Fimg_4_4126074775D2137311337_27.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bqqzit_z%26e3Bv54AzdH3Fhjy_z%26e3Brir%3Fo1%3Dvwg23tg2h5g2&gsm=15&rpstart=0&rpnum=0&islist=&querylist=&force=undefined");
        usersMapper.insert(users);
        return users;
    }
    @Transactional(propagation=Propagation.SUPPORTS)
    @Override
    public Users queryUserForLogin(String username, String password) {
        Example userExample = new Example(Users.class);
        Example.Criteria userCriteria = userExample.createCriteria();
        userCriteria.andEqualTo("username",username).andEqualTo("password",password);
        Users result = usersMapper.selectOneByExample(userExample);
        return result;
    }


}


  • controller 層實現:
    在這裏插入圖片描述
package com.zcw.controller;

import com.zcw.pojo.Users;
import com.zcw.pojo.bo.UserBO;
import com.zcw.service.UserService;
import com.zcw.utils.MD5Utils;
import com.zcw.utils.ZCWJSONResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @program: zcw-foodie-dev
 * @description:
 * @author: Zhaocunwei
 * @create: 2020-05-05 11:29
 **/
@Api(value = "註冊登錄",tags = {"用於註冊登錄的相關接口"})
@RestController
@RequestMapping("passport")
public class UserController {
    @Autowired
    private UserService userService;

    @ApiOperation(value="用戶名是否存在",notes = "用戶名是否存在",httpMethod ="GET" )
    @GetMapping("/usernameIsExist")
    public ZCWJSONResult usernameIsExist(@RequestParam String username){

        // 1.判斷用戶名不能爲空
        if(StringUtils.isBlank(username)){
            return ZCWJSONResult.errorMsg("用戶名不能爲空");
        }
        // 2.查找註冊的用戶名是否存在
        boolean isExist = userService.queryUserNameIsExist(username);
        if(isExist){
           return ZCWJSONResult.errorMsg("用戶名已經存在");
        }
        //3.請求成功,用戶名沒有重複
        return ZCWJSONResult.ok();
    }
    @ApiOperation(value="用戶註冊",notes = "用戶註冊",httpMethod ="POST" )
    @PostMapping("/regist")
    public ZCWJSONResult  regist(@RequestBody UserBO userBO) throws Exception {
        String confirmPassword = userBO.getConfirmPassword();
        String password = userBO.getPassword();
        String username = userBO.getUsername();
        //判斷用戶名和密碼必須不爲空
        if(StringUtils.isBlank(username)||
        StringUtils.isBlank(password)||
        StringUtils.isBlank(confirmPassword)){
            return ZCWJSONResult.errorMsg("用戶名或密碼不能爲空");
        }
        //查詢用戶名是否存在
        boolean isExist = userService.queryUserNameIsExist(username);
        if(isExist){
            return ZCWJSONResult.errorMsg("用戶名已經存在");
        }
        //密碼長度不能少於6位
        if(password.length()<6){
            return ZCWJSONResult.errorMsg("密碼長度不能少於6");
        }
        //判斷兩次密碼是否一致
        if(!password.equals(confirmPassword)){
            return ZCWJSONResult.errorMsg("兩次密碼輸入不一致");
        }
        //實現註冊®️
        userService.createUser(userBO);
        return ZCWJSONResult.ok();
    }
    @ApiOperation(value="用戶登錄",notes="用戶登錄",httpMethod="POST")
    @PostMapping("/login")
    public ZCWJSONResult login(@RequestBody UserBO userBO) throws Exception {
        String username = userBO.getUsername();
        String password = userBO.getPassword();
        //判斷用戶名和密碼必須不爲空
        if(StringUtils.isBlank(username)||
        StringUtils.isBlank(password)){
            return ZCWJSONResult.errorMsg("用戶名或密碼不能爲空");
        }
        //實現登錄
        Users users = userService.queryUserForLogin(username,
                MD5Utils.getMD5Str(password));
        if(users == null){
            return ZCWJSONResult.errorMsg("用戶名或密碼不能爲空");
        }
        return ZCWJSONResult.ok(users);
    }
}



  • 安裝
    在這裏插入圖片描述
    在這裏插入圖片描述

啓動:

在這裏插入圖片描述

訪問接口文檔:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

總結

本篇博客主要是介紹了電商項目中的登錄,通過接口文檔進行調試成功,了,雖然本篇博客看似非常簡單,如果我們在實際項目開發中,不注意一些細節,會出現一些馬虎的錯誤,希望大家在demo練習時注意,千萬不要馬虎大意,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章