开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情
用户注册模块开发
1.定义memberService
public interface MemberService {
public Member createMember(String username,String password, String nickname);
}
代码说明:
- createMember:新建用户,需要三个参数,分别是username(用户名),password(密码),nickname(用户昵称)
2.实现注册用户的方法
@Resource
private MemberMapper memberMapper;
@Override
public Member createMember(String username, String password, String nickname) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username", username);
List<Member> memberList = memberMapper.selectList(queryWrapper);
if (memberList.size() > 0) {
throw new BusinessException("M01", "用户已存在");
}
Member member = new Member();
member.setUsername(username);
member.setNickname(nickname);
member.setCreateTime(new Date());
int salt = new Random().nextInt(1000) + 1000;
String md5 = MD5Utils.md5Digest(password, salt);
member.setPassword(md5);
member.setSalt((long) salt);
memberMapper.insert(member);
return member;
}
代码说明:
- memberMapper.selectList(queryWrapper):查询是否有重名的用户
- int salt = new Random().nextInt(1000) + 1000:生成4位随机数
- String md5 = MD5Utils.md5Digest(password, salt):password加密
3.定义md5加密方法
pom文件引入加密依赖
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.14</version>
</dependency>
别忘记更新lib
新增utils包
public class MD5Utils {
public static String md5Digest(String source,Integer salt){
char[] ca = source.toCharArray();
for (int i = 0; i < ca.length; i++) {
ca[i]= (char) (ca[i]+salt);
}
String target = new String(ca);
String md5 = DigestUtils.md5Hex(target);
return md5;
}
}
4.service新增exception包,用来处理异常
package com.imooc.reader.service.exception;
public class BusinessException extends RuntimeException {
private String code;
private String msg;
public BusinessException(String code,String msg){
super(msg);
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
代码说明:
- BusinessException extends RuntimeException:继承RuntimeException
- public BusinessException(String code,String msg):BusinessException(业务异常)构造函数
5.控制器新增判断逻辑
try {
memberService.createMember(username,password,nickname);
result.put("code",0);
}catch (BusinessException e){
e.printStackTrace();
result.put("code",e.getCode());
result.put("msg",e.getMsg());
}
代码说明:
- memberService.createMember(username,password,nickname):调用createMember方法,并且传递参数
- try {}catch(BusinessException e):捕获异常
6.重启项目
注册成功
注册失败