全栈开发邮件激活功能实现

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; //激活失败
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值