用户注册
用户注册之前我们要先判断用户名是否存在,因此我么在UserService层写一个方法
//判断用户名是否存在
public boolean queryUsernameIsExist(String username);
在UserServiceImpl中实现该方法
@Autowired
private UsersMapper usersMapper;
@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;
}
然后我们在controller层进行调用service层
@GetMapping("/usernameIsExist")
public IMOOCJSONResult usernameIsExist(@RequestParam String username){
//判断用户名不能为空
if(StringUtils.isBlank(username)){
return IMOOCJSONResult.errorMsg("用户名不能为空");
}
//查找注册的用户名是否存在
boolean isExist = userService.queryUsernameIsExist(username);
if(isExist){
return IMOOCJSONResult.errorMsg("用户名已经存在");
}
//请求成功,用户名没有错误
return IMOOCJSONResult.ok();
}
上述中我们用到了工具类中的IMOOCJSONResult,其代码如下:
public class IMOOCJSONResult {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
// 响应业务状态
private Integer status;
// 响应消息
private String msg;
// 响应中的数据
private Object data;
@JsonIgnore
private String ok; // 不使用
public static IMOOCJSONResult build(Integer status, String msg, Object data) {
return new IMOOCJSONResult(status, msg, data);
}
public static IMOOCJSONResult build(Integer status, String msg, Object data, String ok) {
return new IMOOCJSONResult(status, msg, data, ok);
}
public static IMOOCJSONResult ok(Object data) {
return new IMOOCJSONResult(data);
}
public static IMOOCJSONResult ok() {
return new IMOOCJSONResult(null);
}
public static IMOOCJSONResult errorMsg(String msg) {
return new IMOOCJSONResult(500, msg, null);
}
public static IMOOCJSONResult errorMap(Object data) {
return new IMOOCJSONResult(501, "error", data);
}
public static IMOOCJSONResult errorTokenMsg(String msg) {
return new IMOOCJSONResult(502, msg, null);
}
public static IMOOCJSONResult errorException(String msg) {
return new IMOOCJSONResult(555, msg, null);
}
public static IMOOCJSONResult errorUserQQ(String msg) {
return new IMOOCJSONResult(556, msg, null);
}
public IMOOCJSONResult() {
}
public IMOOCJSONResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public IMOOCJSONResult(Integer status, String msg, Object data, String ok) {
this.status = status;
this.msg = msg;
this.data = data;
this.ok = ok;
}
public IMOOCJSONResult(Object data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}
public Boolean isOK() {
return this.status == 200;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getOk() {
return ok;
}
public void setOk(String ok) {
this.ok = ok;
}
}
由此,我们的判断用户名是否为空就写完了。
接下来就是用户注册的方法了,同样的,首先定义方法:
//创建用户
public Users createUser(UserBO userBO);
在UserServiceImpl中
@Transactional(propagation = Propagation.REQUIRED)//一般我们增删改用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;
}
接下来就是controller层的代码了
@PostMapping("/register") //一般增删改我们请求用Post
public IMOOCJSONResult register(@RequestBody UserBO userBO){
String username = userBO.getUsername();
String password = userBO.getPassword();
String confirmPassword= userBO.getConfirmPassword();
//用户名和密码不能为空
if(StringUtils.isBlank(username)
||StringUtils.isBlank(password)
||StringUtils.isBlank(confirmPassword)
){
return IMOOCJSONResult.errorMsg("用户名或者密码不能为空");
}
//查询用户名是否已经存在
boolean isExist = userService.queryUsernameIsExist(username);
if(isExist){
return IMOOCJSONResult.errorMsg("用户名已经存在");
}
//密码长度不能少于6位
if(password.length()<6){
return IMOOCJSONResult.errorMsg("密码长度不能少于6位");
}
//判断两次密码是否一致
if(!password.equals(confirmPassword)){
return IMOOCJSONResult.errorMsg("两次密码不一致");
}
//实现注册
userService.createUser(userBO);
return IMOOCJSONResult.ok();
}