认证服务(7)-注册完成

1.MemberController中添加register

 /**
  * 会员注册
  * @param vo
  * @return
  */
 @PostMapping(value = "/register")
 public R register(@RequestBody MemberUserRegisterVo vo) {
     try {
         memberService.register(vo);
     } catch (PhoneException e) {
         return R.error(BizCodeEnume.PHONE_EXIST_EXCEPTION.getCode(),BizCodeEnume.PHONE_EXIST_EXCEPTION.getMsg());
     } catch (UsernameException e) {
         return R.error(BizCodeEnume.USER_EXIST_EXCEPTION.getCode(),BizCodeEnume.USER_EXIST_EXCEPTION.getMsg());
     }
     return R.ok();
 }

2.MemberService中添加register

void register(MemberUserRegisterVo vo);

3.MemberServiceImpl中添加register实现

 /**
  * 会员注册
  * @param vo
  */
 @Override
 public void register(MemberUserRegisterVo vo) {
     MemberDao memberDao = this.baseMapper;
     MemberEntity memberEntity = new MemberEntity();

     //设置默认等级
     MemberLevelEntity levelEntity = memberLevelDao.getDefaultLevel();
     memberEntity.setLevelId(levelEntity.getId());

     //设置其它的默认信息
     //检查用户名和手机号是否唯一。感知异常,异常机制
     checkPhoneUnique(vo.getPhone());
     checkUserNameUnique(vo.getUserName());

     memberEntity.setNickname(vo.getUserName());
     memberEntity.setUsername(vo.getUserName());

     //密码进行MD5加密
     BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
     String encode = bCryptPasswordEncoder.encode(vo.getPassword());
     memberEntity.setPassword(encode);
     memberEntity.setMobile(vo.getPhone());
     memberEntity.setGender(0);
     memberEntity.setCreateTime(new Date());

     //保存数据
     memberDao.insert(memberEntity);
 }

4.在gulimall-auth-server项目中新建feign包

在MemberFeignService中添加register

 @PostMapping( "/member/member/register")
 R register(@RequestBody UserRegisterVo vo) ;

5.LoginController中添加register

 /**
  * TODO 重定向携带数据,利用session原理        分布式下session问题待解决
  * 注册
  * @return
  */
 @PostMapping("/register")
 public String register(@Valid UserRegisterVo vos, BindingResult result, RedirectAttributes attributes){
     //1.表单字段的校验  如果有错误回到注册页面
     if (result.hasErrors()) {
         Map<String, String> errors = result.getFieldErrors().stream()
                 .collect(Collectors.toMap(FieldError::getField, FieldError::getDefaultMessage));
         attributes.addFlashAttribute("errors",errors);
         //校验出错回到注册页面
         return "redirect:http://auth.gulimall.com/reg.html";
     }

     //2.验证码的校验
     String code = vos.getCode();
     System.out.println("验证码获取成功");
     //获取存入Redis里的验证码
     String redisCode = stringRedisTemplate.opsForValue().get(AuthServerConstant.SMS_CODE_CACHE_PREFIX + vos.getPhone());
     System.out.println("redisCode =" + redisCode);
     if(!StringUtils.isEmpty(redisCode)){
         if(code.equals(redisCode.split("_")[0])){
             //删除验证码;令牌机制
             stringRedisTemplate.delete(AuthServerConstant.SMS_CODE_CACHE_PREFIX+vos.getPhone());
             System.out.println("校验通过");
             //验证码校验通过,调用远程服务进行真正的注册
             R r = memberFeignService.register(vos);
             if(r.getCode() == 0){
                 System.out.println("注册成功");
                 //注册成功
                 return "redirect:http://auth.gulimall.com/login.html";
             }else {
                 Map<String, String> errors = new HashMap<>();
                 errors.put("msg", r.getData("msg",new TypeReference<String>(){}));
                 attributes.addFlashAttribute("errors",errors);
                 return "redirect:http://auth.gulimall.com/reg.html";
             }
         }else{
             Map<String, String> errors = new HashMap<>();
             errors.put("code","验证码错误");
             attributes.addFlashAttribute("errors",errors);
             return "redirect:http://auth.gulimall.com/reg.html";
         }
     }else {
         //校验出错回到注册页面
         Map<String, String> errors = new HashMap<>();
         errors.put("code","验证码错误");
         attributes.addFlashAttribute("errors",errors);
         return "redirect:http://auth.gulimall.com/reg.html";
     }
 }

6.修改reg.html

 <form  action="/register" method="post" class="one">
		<!--		<div style="color: red" th:text="${errors != null ? (#maps.containsKey(errors, 'msg') ? errors.msg : '') : ''}">-->
      <div class="register-box">
           <label class="username_label">用 户 名
               <input name="userName" maxlength="20" type="text" placeholder="您的用户名和登录名">
           </label>
		<div class="tips" style="color: red" th:text="${errors != null ? (#maps.containsKey(errors, 'userName') ? errors.userName : '') : ''}">
		</div>
       </div>
       <div class="register-box">
           <label class="other_label">设 置 密 码
               <input name="password" maxlength="20" type="password" placeholder="建议至少使用两种字符组合">
           </label>
		<div class="tips" style="color: red" th:text="${errors != null ? (#maps.containsKey(errors, 'password') ? errors.password : '') : ''}">
		</div>
       </div>
       <div class="register-box">
           <label  class="other_label">确 认 密 码
               <input  maxlength="20" type="password" placeholder="请再次输入密码">
           </label>
           <div class="tips">
           </div>
       </div>
       <div class="register-box">
           <label  class="other_label">
               <span>中国 0086∨</span>
               <input name="phone" class="phone" id="phoneNum" maxlength="20" type="text" placeholder="建议使用常用手机">
           </label>
		<div class="tips" style="color: red" th:text="${errors != null ? (#maps.containsKey(errors, 'phone') ? errors.phone : '') : ''}">
		</div>
       </div>
       <div class="register-box">
           <label  class="other_label">验 证 码
               <input name="code" maxlength="20" type="text" placeholder="请输入验证码" class="caa">
           </label>
           <a id="sendCode" class="">发送验证码</a>
       </div>
       <div class="arguement">
           <input type="checkbox" id="xieyi"> 阅读并同意
           <a href="/static/reg/#">《谷粒商城用户注册协议》</a>
           <a href="/static/reg/#">《隐私政策》</a>
		<div class="tips" style="color: red" th:text="${errors != null ? (#maps.containsKey(errors, 'code') ? errors.code : '') : ''}">
		</div>
           <br/>
           <div class="submit_btn">
               <button type="submit" id="submit_btn">立 即 注 册</button>
           </div>
       </div>

   </form>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值