Browse Source

验证码 修改密码 和注册

linxk 3 weeks ago
parent
commit
6da536797e

+ 1 - 1
cif-service/src/main/java/com/txz/cif/constants/RedisConstants.java

@@ -6,6 +6,6 @@ package com.txz.cif.constants;
  */
 public class RedisConstants {
 
-  public static final String USER_EMAIL_CODE = "user:email:code:%s";
+  public static final String USER_SMS_CODE = "user:sms:code:%s";
 
 }

+ 1 - 1
cif-service/src/main/java/com/txz/cif/core/ResultCode.java

@@ -59,7 +59,7 @@ public enum ResultCode {
     USERID_IS_ERROR("1067", "用户id异常" ),
     LOGINACCOUNT_IS_NULL("1068", "登录账号不能为空"),
     ORG_IS_NULL("1069", "组织机构未找到" ),
-    USER_IS_EXIST("7008", "用户已注册"),;
+    USER_IS_EXIST("7008", "用户已注册"), CODE_CHECK_FAIL("1070", "验证码校验失败");
 
     private final String code;   //状态码
     private final String message;

+ 4 - 2
cif-service/src/main/java/com/txz/cif/service/UserService.java

@@ -13,9 +13,9 @@ public interface UserService extends Service<User> {
 
     Boolean checkMail(String email);
 
-//    Result<Object> sendMail(String email);
+    Result<Object> sendCode(String phoneNo );
 
-    Boolean checkCode(String email, String code);
+    Boolean checkCode(String phoneNo, String code);
 
     Result<Object> resetPwd(Long userId, String pwd, String newPwd);
 
@@ -35,5 +35,7 @@ public interface UserService extends Service<User> {
 
     void add(User user);
 
+    Result<Object> resetPwdByCode(Long userId, String verifyCode, String newPwd);
+
 //    boolean sendMsg(MessageParam param);
 }

+ 30 - 16
cif-service/src/main/java/com/txz/cif/service/impl/UserServiceImpl.java

@@ -59,33 +59,31 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
         }
         return false;
     }
-    private String getMailKey(String email) {
-        return String.format(RedisConstants.USER_EMAIL_CODE, email);
+    private String getKey(String email) {
+        return String.format(RedisConstants.USER_SMS_CODE, email);
     }
 
-//    @Override public Result<Object> sendMail(String email) {
-//        boolean isEmail = Validator.isEmail(email);
-//        if (!isEmail) {
-//            log.warn("WalletCenterService#sendMail warn. email address error.  email:`{}`.", email);
-//            return Result.error("1002", "E-mail address error.");
-//        }
-//        String key = getMailKey(email);
-//        String code = RandomUtil.randomNumbers(6);
-//        String subject = "来自Free City的CODE码";
-//        String content = "您的CODE为: " + code;
+    @Override
+    public Result<Object> sendCode(String phoneNo) {
+        String key = getKey(phoneNo);
+        String code = RandomUtil.randomNumbers(6);
+        String subject = "来自Free City的CODE码";
+        String content = "您的CODE为: " + code;
+        //TODO 发短信
 //        Result<Object> result = MailClient.send(email, subject, content, null);
 //        if (result.isSuccess()) {
 //            redisClient.set(key, code, 60);
 //        }
-//        return result;
-//    }
+        redisClient.set(key, code, 60);
+        return Result.success(code);
+    }
 
     @Override
-    public Boolean checkCode(String email, String code) {
+    public Boolean checkCode(String phoneNo, String code) {
         if (StrUtil.equals("888888",code)){
             return true;
         }
-        String key = getMailKey(email);
+        String key = getKey(phoneNo);
         Object o = redisClient.get(key);
         if (StrUtil.equals(o.toString(),code)){
             return true;
@@ -194,6 +192,22 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
         accountService.saveUseGeneratedKeys(account);
     }
 
+    @Override
+    public Result<Object> resetPwdByCode(Long userId, String verifyCode, String newPwd) {
+        User user = findById(userId);
+        if (user == null){
+            return ResultGenerator.genFailResult(ResultCode.USER_IS_NULL);
+        }
+        String key = getKey(user.getPhoneNo());
+        Object o = redisClient.get(key);
+        if (!StrUtil.equals(o.toString(),verifyCode)){
+            return ResultGenerator.genFailResult(ResultCode.CODE_CHECK_FAIL);
+        }
+        update(User.builder().id(user.getId()).pwd(SecureUtil.md5(newPwd + user.getSalt())).build());
+
+        return Result.success();
+    }
+
 //    @Override
 //    public boolean sendMsg(MessageParam param) {
 //        if (param == null){

+ 28 - 0
cif-service/src/main/java/com/txz/cif/web/UserApiController.java

@@ -137,6 +137,16 @@ public class UserApiController extends AbstractApiController {
         return operator;
     }
 
+    @ApiOperation(value = "获取验证码", notes = "",httpMethod = "GET")
+    @GetMapping("/getCode")
+    public Result<UserInfoBO> getCode(@RequestParam String phoneNo) {
+//        Long userId = authService.getTokenUserId(request);
+        //TODO 发送短信
+        Result<Object> result = userService.sendCode(phoneNo);
+        return ResultGenerator.genSuccessResult(result.getData().toString());
+    }
+
+
     @ApiOperation(value = "查询用户资料", notes = "",httpMethod = "GET")
     @GetMapping("/getUserInfo")
     public Result<UserInfoBO> getUserInfo(HttpServletRequest request) {
@@ -200,6 +210,9 @@ public class UserApiController extends AbstractApiController {
         if(CollUtil.isNotEmpty(users)){
             return ResultGenerator.genFailResult(ResultCode.USER_IS_EXIST);
         }
+        if (!userService.checkCode(params.getPhone(), params.getVerifyCode())) {
+            return ResultGenerator.genFailResult(ResultCode.CODE_CHECK_FAIL);
+        }
         String salt = RandomUtil.randomString(4);
         String pwd2 = SecureUtil.md5(params.getPwd() + salt).toUpperCase();
         log.error("[密码]"+params.getPhone() + " :"+pwd2);
@@ -253,6 +266,21 @@ public class UserApiController extends AbstractApiController {
         return userService.resetPwd(userId,pwd,newPwd);
     }
 
+    /**
+     * 通过旧密码设置密码
+     *
+     * @param userId       用户 UID
+     * @return          执行结果
+     */
+    @ApiOperation(value = "通过验证码设置密码", notes = "",httpMethod = "GET")
+    @GetMapping("/resetPwd")
+    public Result<Object> resetPwdByCode(@RequestHeader(value = X_CLIENT_TOKEN_USERID,required = false) Long userId,
+                                   @RequestParam("verifyCode") String verifyCode,
+                                   @RequestParam("newPwd") String newPwd
+    ) {
+        return userService.resetPwdByCode(userId,verifyCode,newPwd);
+    }
+
 
     @PostMapping("/myUsers")
     @ApiOperation(value = "获取我的邀请的用户",httpMethod = "POST")

+ 4 - 1
cif-service/src/main/java/com/txz/cif/web/para/RegisterAccountParameters.java

@@ -15,9 +15,12 @@ public class RegisterAccountParameters {
     @ApiModelProperty(name="pwd",value = "登录密码",required=true)
     private String pwd;
 
-    @ApiModelProperty(name="pwd",value = "邀请码",required=true)
+    @ApiModelProperty(name="code",value = "邀请码",required=true)
     private String code;
 
+    @ApiModelProperty(name="verifyCode",value = "验证码",required=true)
+    private String verifyCode;
+
     @ApiModelProperty(name="type",value = "类型 1居民 2清洁工人 5业务员 6审核员",required=true)
     private Integer type;