05-用户注册与登录-

用户注册

用户注册之前我们要先判断用户名是否存在,因此我么在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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值