1.前端注册
2.前端接口
//注册的方法
registerMember(formItem){
return request({
url: /educenter/member/register
,
method: ‘post’,
data:formItem
})
},
3.后端接口
//注册方法
@PostMapping(“register”)
public R registerUser(@RequestBody RegisterVo registerVo){
Boolean isRegister = memberService.register(registerVo);
return R.ok().data("isRegister",isRegister);
}
3.后端服务的实现
//注册方法
@Override
public Boolean register(RegisterVo registerVo) {
Boolean isRegister = false;
//获取注册的数据
String mobile = registerVo.getMobile(); //手机号
String nickname = registerVo.getNickname(); //昵称
String password = registerVo.getPassword(); //密码
String email = registerVo.getEmail();//邮箱
String code = UuidUtil.getUuid();
//邮件主题
String emailTitle = "来自恶补网校的激活邮件";
String url ="http://localhost:8150/educenter/member/checkCode?code="+code+"";
//激活邮件发送
String emailContext ="<h2>【恶补网校】</h2><a href='"+url+"'>点击激活</a><br>网页链接:"+url+"<br>无需回复,祝您一切安好!";
//todo:1.完成向指定邮箱发送邮件;2.完成账号激活功能
//向邮箱发送邮件
MailUtils.sendMail(email,emailContext,emailTitle);
if(StringUtils.isEmpty(mobile) || StringUtils.isEmpty(password)
|| StringUtils.isEmpty(email) || StringUtils.isEmpty(nickname)) {
throw new GuliException(20001,"请输出,注册失败");
}
//判断手机号是否重复,表里面存在相同手机号不进行添加
QueryWrapper<UcenterMember> wrapper = new QueryWrapper<>();
wrapper.eq("mobile",mobile);
Integer count = baseMapper.selectCount(wrapper);
if(count > 0) {
throw new GuliException(20001,"手机号重复,注册失败");
}
//数据添加数据库中
isRegister=true;
UcenterMember member = new UcenterMember();
member.setEmail(email);
member.setCode(code);//激活码
member.setMobile(mobile);
member.setNickname(nickname);
member.setPassword(MD5.encrypt(password));//密码需要加密的
member.setIsDisabled(false);//用户不禁用
member.setAvatar("https://edu-unlock-1.oss-cn-chengdu.aliyuncs.com/2020/06/02/a82d0ec467204d178c85f7a8fa8b3802file.png");
baseMapper.insert(member);
return isRegister;
}
4.数据库结构
5.打开邮箱,点击激活链接,后端接口,利用网址传入参数
/**
*校验邮箱中的code激活账户
* 首先根据激活码code查询用户,之后再把状态修改为"1"
*/
@GetMapping(value = “/checkCode”)
@ResponseBody
public R checkCode(@RequestParam(“code”) String code){
//判断传入激活码参数不为空
if (code!=null) {
Boolean active = memberService.checkEmailCode(code);
}
return R.ok();
}
6.激活服务实现
//校验邮箱中的code,激活账户
@Override
public Boolean checkEmailCode(String code) {
//1.根据激活码查询
QueryWrapper wrapper = new QueryWrapper<>();
if (code!=null) {
wrapper.eq(“code”,code);
}
UcenterMember user = baseMapper.selectOne(wrapper);
//2.将状态设置为已激活
if (user != null) {
user.setStatus(“Y”);
//把code验证码清空,已经不需要了
user.setCode("");
baseMapper.updateById(user); //修改数据库值
return true; //激活成功
}else{
return false; //激活失败
}
}