- 涉及到的工具有DateUtil,MD5Utils,n3r,tkMyBatis
- Mapper类由MyBatis逆向生成工具生成,实现了通用Mapper接口类,所以在调用相关CRUD方法时要根据tkMyBatis相关规则
- Service和Controller编写如下
UserServiceImpl
package com.zkx.service.impl;
import com.zkx.bo.UserBO;
import com.zkx.enums.Sex;
import com.zkx.mapper.UsersMapper;
import com.zkx.pojo.Users;
import com.zkx.service.UserService;
import com.zkx.utils.DateUtil;
import com.zkx.utils.MD5Utils;
import org.n3r.idworker.Sid;
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;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UsersMapper usersMapper;
@Autowired
private Sid sid;
public static final String USER_FACE = "src/main/java/com/zkx/utils/pic.jpg";
/**
* 判断用户名是否存在
*/
@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;
}
/**
* 创建用户
* @param userBO
* @return
*/
@Transactional(propagation = Propagation.REQUIRED)
@Override
public Users createUser(UserBO userBO) {
String userId = sid.nextShort();
Users user = new Users();
user.setId(userId);
user.setUsername(userBO.getUsername());
try {
user.setPassword(MD5Utils.getMD5Str(userBO.getPassword()));
} catch (Exception e) {
e.printStackTrace();
}
//默认用户昵称同用户名
user.setNickname(userBO.getUsername());
//默认头像
user.setFace(USER_FACE);
//默认生日
user.setBirthday(DateUtil.stringToDate("1900-01-01"));
//默认性别为保密
user.setSex(Sex.secret.type);
user.setCreatedTime(new Date());
user.setUpdatedTime(new Date());
usersMapper.insert(user);
return user;
}
/**
* 检索用户名和密码是否匹配,用于登录
* @param username
* @param password
* @return
*/
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public Users queryUserForLogin(String username, String password) {
Example userExample = new Example(Users.class);
Example.Criteria userCriteria = userExample.createCriteria();
//去数据库中比对username和password
userCriteria.andEqualTo("username",username);
userCriteria.andEqualTo("password",password);
Users result = usersMapper.selectOneByExample(userExample);
return result;
}
}
PassportController
package com.zkx.controller;
import com.zkx.bo.UserBO;
import com.zkx.pojo.Users;
import com.zkx.service.UserService;
import com.zkx.utils.IMOOCJSONResult;
import com.zkx.utils.MD5Utils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.catalina.User;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
@Api(value = "注册登录", tags = {"用于注册登录的相关接口"})
@RestController
@RequestMapping("passport")
public class PassportController {
@Autowired
private UserService userService;
@ApiOperation(value = "用户名是否存在", notes = "用户名是否存在", httpMethod = "GET")
@GetMapping("/usernameIsExist")
public IMOOCJSONResult usernameIsExist(@RequestParam String username) {
//1.判断用户名不能为空
if (StringUtils.isBlank(username)) {
return IMOOCJSONResult.errorMsg("用户名不能为空");
}
//2.查找注册的用户名是否存在
boolean isExist = userService.queryUsernameIsExist(username);
if (isExist) {
return IMOOCJSONResult.errorMsg("用户名已经存在");
}
//3.请求成功,用户名没有重复
return IMOOCJSONResult.ok();
}
@ApiOperation(value = "用户注册", notes = "用户注册", httpMethod = "POST")
@PostMapping("/regist")
public IMOOCJSONResult regist(@RequestBody UserBO userBO) {
String username = userBO.getUsername();
String password = userBO.getPassword();
String confirmPwd = userBO.getConfirmPassword();
//0.判断用户名和密码必须不为空
if (StringUtils.isBlank(username) ||
StringUtils.isBlank(password) ||
StringUtils.isBlank(confirmPwd)) {
return IMOOCJSONResult.errorMsg("用户名或密码不能为空");
}
//1.查询用户名是否存在
boolean isExist = userService.queryUsernameIsExist(username);
if (isExist) {
return IMOOCJSONResult.errorMsg("用户名已经存在");
}
//2.密码长度不能少于6位
if (password.length() < 6) {
return IMOOCJSONResult.errorMsg("密码长度不能少于6");
}
//3.判断两次密码是否一致
if (!password.equals(confirmPwd)) {
return IMOOCJSONResult.errorMsg("两次密码输入不一致");
}
//4.实现注册
userService.createUser(userBO);
return IMOOCJSONResult.ok();
}
@ApiOperation(value = "用户登录", notes = "用户登录", httpMethod = "POST")
@PostMapping("/login")
public IMOOCJSONResult login(@RequestBody UserBO userBO) throws Exception {
String username = userBO.getUsername();
String password = userBO.getPassword();
//0.判断用户名和密码不能为空
if (StringUtils.isBlank(username) ||
StringUtils.isBlank(password)) {
return IMOOCJSONResult.errorMsg("用户名密码不能为空");
}
//1.实现登录
Users userResult = userService.queryUserForLogin(username, MD5Utils.getMD5Str(password));
if(userResult == null){
return IMOOCJSONResult.errorMsg("用户名或密码不正确");
}
return IMOOCJSONResult.ok(userResult);
}
}