Преглед изворни кода

注册、找回密码接口

dudm пре 3 година
родитељ
комит
d003a9183a

+ 175 - 0
tianhu-system/src/main/java/com/tianhu/system/controller/SysUserController.java

@@ -967,4 +967,179 @@ public class SysUserController extends BaseController
        return AjaxResult.success();
     }
 
+
+    /**
+     * 用户注册
+     */
+    @Transactional(rollbackFor=Exception.class)
+    @GetMapping("/registerUser")
+    @Log(title = "用户注册", businessType = BusinessType.INSERT)
+    public R registerUser(@RequestParam(required = false) String company,
+                          @RequestParam(required = false) String username,
+                          @RequestParam(required = false) String phone,
+                          @RequestParam(required = false) String code,
+                          @RequestParam(required = false) String shortMessageCode,
+                          @RequestParam(required = false) String password,
+                          @RequestParam(required = false) String again,
+                          HttpServletResponse resp)
+    {
+
+        SysUser checkUser = userService.selectUserByUserName(phone);
+        if(checkUser != null){
+            return R.fail("当前手机号已注册,请检查后重试!");
+        }
+        String checkPassword = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$";
+        Pattern regePassword = Pattern.compile(checkPassword);
+        Matcher matcherPassword = regePassword.matcher(password);
+        boolean isMatPassword = matcherPassword.matches();
+        if (!isMatPassword) {
+            return R.fail("密码请包含数字,英文,字符中的两种以上,长度6-20位");
+        }
+        if(!password.equals(again)){
+            return R.fail("两次输入密码不一致,请重新输入!");
+        }
+        Map<String, Object> resMap = new HashMap<>();
+        // 验证短信验证码
+        if(CommonUtil.isNotEmpty(shortMessageCode)){
+            LambdaQueryWrapper<PubVerifyCode> pubVerifyCode = new LambdaQueryWrapper<>();
+            pubVerifyCode.eq(PubVerifyCode::getPvcPhone,phone);
+            pubVerifyCode.eq(PubVerifyCode::getPvcCode,shortMessageCode);
+            pubVerifyCode.orderByDesc(PubVerifyCode::getPvcLastTime);
+            List<PubVerifyCode> staffInf = iPubVerifyCodeService.findPubVerifyCodes(pubVerifyCode);
+            if(staffInf.size()>0){
+                if("01".equals(staffInf.get(0).getPvcState())){
+                    return R.fail("验证码已失效,请重新获取!");
+                }
+                //取得指定时间间隔后的系统时间
+                GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
+                calendar.add( Calendar.MINUTE, -5);
+                SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
+                if(formatter.format(calendar.getTime()).compareTo(formatter.format(staffInf.get(0).getPvcLastTime()))>0){
+                    return R.fail("验证码已失效,请重新获取!");
+                }
+
+                staffInf.get(0).setPvcState("01");
+                iPubVerifyCodeService.updatePubVerifyCode(staffInf.get(0));
+
+            }else{
+                return R.fail("验证码错误,请重新输入!");
+            }
+        }else{
+            return R.fail("请填写验证码");
+        }
+        //创建企业
+        SysCompany sysCompany = new SysCompany();
+        String id = IdUtils.fastSimpleUUID();
+        sysCompany.setScyId(id);
+        sysCompany.setScyType("02");
+        sysCompany.setScyName(company);
+        sysCompany.setCreateTime(DateUtils.getNowDate());
+        companyService.save(sysCompany);
+        // 创建用户
+        SysUser sysUser = new SysUser();
+        sysUser.setUserName(phone);
+        sysUser.setNickName(username);
+        sysUser.setPassword(SecurityUtils.encryptPassword(password));
+        sysUser.setCompanyId(id);
+        userService.insertUser(sysUser);
+        sysUser = userService.selectUserByUserName(phone);
+        //创建企业用户关联
+        SysUserCompanyRel userCompanyRel = new SysUserCompanyRel();
+        userCompanyRel.setSucrUserId(sysUser.getUserId());
+        userCompanyRel.setSucrCompanyId(id);
+        userCompanyRel.setSucrHandler("0");
+        userCompanyRel.setSucrDeptId(sysUser.getDeptId());
+        userCompanyRel.setCreateTime(DateUtils.getNowDate());
+        userCompanyRel.setCreateBy(CommonUtil.objToString(sysUser.getUserId()));
+        userCompanyRelService.createSysUserCompanyRel(userCompanyRel);
+
+        LoginUser sysUserVo = new LoginUser();
+        sysUserVo.setSysUser(sysUser);
+        resMap.put("code", "0");
+        resMap.put("message", "用户未绑定企业");
+        resMap.put("loginUser", sysUserVo);
+        return R.ok(resMap);
+    }
+
+    /**
+     * 忘记密码
+     */
+    @GetMapping("/forgetUser")
+    @Log(title = "忘记密码验证", businessType = BusinessType.UPDATE)
+    public R forgetUser(@RequestParam(value = "phone", required = false) String phone,
+                        @RequestParam(value = "code", required = false) String code,
+                        @RequestParam(value = "shortMessageCode", required = false) String shortMessageCode)
+    {
+
+        SysUser checkUser = userService.selectUserByUserName(phone);
+        if(checkUser == null){
+            return R.fail("当前手机号未注册,请检查后重试!");
+        }
+
+        // 验证短信验证码
+        if(CommonUtil.isNotEmpty(shortMessageCode)){
+            LambdaQueryWrapper<PubVerifyCode> pubVerifyCode = new LambdaQueryWrapper<>();
+            pubVerifyCode.eq(PubVerifyCode::getPvcPhone,phone);
+            pubVerifyCode.eq(PubVerifyCode::getPvcCode,shortMessageCode);
+            pubVerifyCode.orderByDesc(PubVerifyCode::getPvcLastTime);
+            List<PubVerifyCode> staffInf = iPubVerifyCodeService.findPubVerifyCodes(pubVerifyCode);
+            if(staffInf.size()>0){
+                if("01".equals(staffInf.get(0).getPvcState())){
+                    return R.fail("验证码已失效,请重新获取!");
+                }
+                //取得指定时间间隔后的系统时间
+                GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
+                calendar.add( Calendar.MINUTE, -5);
+                SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
+                if(formatter.format(calendar.getTime()).compareTo(formatter.format(staffInf.get(0).getPvcLastTime()))>0){
+                    return R.fail("验证码已失效,请重新获取!");
+                }
+
+                staffInf.get(0).setPvcState("01");
+                iPubVerifyCodeService.updatePubVerifyCode(staffInf.get(0));
+
+            }else{
+                return R.fail("验证码错误,请重新输入!");
+            }
+        }else{
+            return R.fail("请填写验证码");
+        }
+
+        return R.ok();
+    }
+
+    /**
+     * 修改密码
+     */
+    @GetMapping("/updateUser")
+    @Log(title = "忘记密码修改", businessType = BusinessType.UPDATE)
+    public R updateUser(@RequestParam(value = "phone", required = false) String phone,
+                          @RequestParam(value = "code", required = false) String code,
+                          @RequestParam(value = "shortMessageCode", required = false) String shortMessageCode,
+                          @RequestParam(value = "password", required = false) String password,
+                          @RequestParam(value = "again", required = false) String again)
+    {
+
+        SysUser checkUser = userService.selectUserByUserName(phone);
+        if(checkUser == null){
+            return R.fail("当前手机号未注册,请检查后重试!");
+        }
+
+        String checkPassword = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$";
+        Pattern regePassword = Pattern.compile(checkPassword);
+        Matcher matcherPassword = regePassword.matcher(password);
+        boolean isMatPassword = matcherPassword.matches();
+        if (!isMatPassword) {
+            return R.fail("密码请包含数字,英文,字符中的两种以上,长度6-20位");
+        }
+        if(!password.equals(again)){
+            return R.fail("两次输入密码不一致,请重新输入!");
+        }
+
+        // 修改密码
+        checkUser.setPassword(SecurityUtils.encryptPassword(password));
+        userService.updateUserLogin(checkUser);
+        return R.ok();
+    }
+
 }