Explorar el Código

1、修改账号密码登录,未注册效验逻辑

rayson hace 9 meses
padre
commit
c32ef8e73c

+ 1 - 1
menduner/menduner-im-biz/src/main/resources/i18n/messages_en_US.properties

@@ -91,7 +91,7 @@
 1_100_015_004=Access date does not exist
 # ========== 用户登录 1_100_016_000 ==========
 1_100_016_001=User does not exist
-1_100_016_002=Unregistered user with phone number
+1_100_016_002=Unregistered with phone number
 1_100_016_003=Modifying phone failed, the phone number ({}) has already been used
 1_100_016_004=User account already exists
 1_100_016_005=Phone number already exists

+ 1 - 1
menduner/menduner-im-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -91,7 +91,7 @@
 1_100_015_004=访问日期不存在
 # ========== 用户登录 1_100_016_000 ==========
 1_100_016_001=用户不存在
-1_100_016_002=手机号未注册用户
+1_100_016_002=手机号未注册
 1_100_016_003=修改手机失败,该手机号({})已经被使用
 1_100_016_004=用户账号已经存在
 1_100_016_005=手机号已经存在

+ 1 - 1
menduner/menduner-mall-biz/src/main/resources/i18n/messages_en_US.properties

@@ -91,7 +91,7 @@
 1_100_015_004=Access date does not exist
 # ========== 用户登录 1_100_016_000 ==========
 1_100_016_001=User does not exist
-1_100_016_002=Unregistered user with phone number
+1_100_016_002=Unregistered with phone number
 1_100_016_003=Modifying phone failed, the phone number ({}) has already been used
 1_100_016_004=User account already exists
 1_100_016_005=Phone number already exists

+ 1 - 1
menduner/menduner-mall-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -91,7 +91,7 @@
 1_100_015_004=访问日期不存在
 # ========== 用户登录 1_100_016_000 ==========
 1_100_016_001=用户不存在
-1_100_016_002=手机号未注册用户
+1_100_016_002=手机号未注册
 1_100_016_003=修改手机失败,该手机号({})已经被使用
 1_100_016_004=用户账号已经存在
 1_100_016_005=手机号已经存在

+ 5 - 1
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -116,7 +116,7 @@ public interface ErrorCodeConstants {
 
     // ========== 用户登录 1_100_016_000 ==========
     ErrorCode MDE_USER_NOT_EXISTS = new ErrorCode(1_100_016_001, "用户不存在");
-    ErrorCode MDE_USER_MOBILE_NOT_EXISTS = new ErrorCode(1_100_016_002, "手机号未注册用户");
+    ErrorCode MDE_USER_MOBILE_NOT_EXISTS = new ErrorCode(1_100_016_002, "手机号未注册");
     ErrorCode MDE_USER_MOBILE_USED = new ErrorCode(1_100_016_003, "修改手机失败,该手机号({})已经被使用");
 
     ErrorCode MDE_USER_USERNAME_EXISTS = new ErrorCode(1_100_016_004, "用户账号已经存在");
@@ -142,6 +142,7 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_USER_EMAIL_LENGTH = new ErrorCode(1_100_016_023, "邮箱长度不能超过 255 个字符");
     ErrorCode MDE_USER_EMAIL_NOT_NULL = new ErrorCode(1_100_016_024, "邮箱不能为空");
 
+    ErrorCode MDE_USER_MOBILE_EXISTS_OTHER = new ErrorCode(1_100_016_025, "该手机号已被其他用户使用");
 
     // ========== AUTH 模块 1_100_017_000 ==========
     ErrorCode MDE_AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1_100_017_001, "登录失败,账号密码不正确");
@@ -165,6 +166,9 @@ public interface ErrorCodeConstants {
             = new ErrorCode(1_100_017_017, "未注册用户,请先注册个人用户再申请企业用户");
     ErrorCode MDE_AUTH_TOKEN_NOT_NULL = new ErrorCode(1_100_017_018, "访问令牌不能为空");
 
+    ErrorCode MDE_USER_EMAIL_NOT_REGISTERED = new ErrorCode(1_100_017_019, "邮箱号未注册");
+
+
 
     // ========== 角色模块 1_100_018_000 ==========
     ErrorCode MDE_ROLE_NOT_EXISTS = new ErrorCode(1_100_018_001, "角色不存在");

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/auth/AppMdeAuthController.java

@@ -76,6 +76,12 @@ public class AppMdeAuthController {
         return success(authService.smsLogin(reqVO));
     }
 
+    @PostMapping("/register")
+    @Operation(summary = "注册用户并登录")
+    public CommonResult<AppMdeAuthLoginRespVO>  register(@RequestBody @Valid AppMdeAuthSmsRegisterReqVO reqVO) {
+        return success(authService.register(reqVO));
+    }
+
     @PostMapping("/send-sms-code")
     @Operation(summary = "发送手机验证码")
     public CommonResult<Boolean> sendSmsCode(@RequestBody @Valid AppMdeAuthSmsSendReqVO reqVO) {

+ 31 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/jobhunt/auth/vo/AppMdeAuthSmsRegisterReqVO.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.app.jobhunt.auth.vo;
+
+import com.citu.framework.common.validation.Mobile;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Pattern;
+
+@Schema(description = "menduner - 手机 + 验证码注册 Request VO")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AppMdeAuthSmsRegisterReqVO {
+
+    @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300")
+    @NotEmpty(message = "{1_100_016_007}")
+    @Mobile
+    private String phone;
+
+    @Schema(description = "手机验证码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @NotEmpty(message = "{1_100_016_013}")
+    @Length(min = 4, max = 6, message = "{1_100_016_014}")
+    @Pattern(regexp = "^[0-9]+$", message = "{1_100_016_016}")
+    private String code;
+}

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/MdeAuthConvert.java

@@ -32,4 +32,6 @@ public interface MdeAuthConvert {
 
     SocialWxJsapiSignatureRespDTO convert(SocialWxJsapiSignatureRespDTO bean);
 
+    SmsCodeUseReqDTO convert(AppMdeAuthSmsRegisterReqVO bean,Integer scene, String usedIp);
+
 }

+ 9 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthService.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.service.auth;
 
 
 import com.citu.module.menduner.system.controller.app.jobhunt.auth.vo.*;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 
@@ -37,6 +38,14 @@ public interface MdeAuthService {
      */
     AppMdeAuthLoginRespVO smsLogin(@Valid AppMdeAuthSmsLoginReqVO reqVO);
 
+    /**
+     * 手机 + 验证码注册并登录
+     *
+     * @param reqVO 注册信息
+     * @return 注册结果
+     */
+    AppMdeAuthLoginRespVO register(AppMdeAuthSmsRegisterReqVO reqVO);
+
     /**
      * 社交登录,使用 code 授权码
      *

+ 30 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeAuthServiceImpl.java

@@ -106,7 +106,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         validateCaptcha(reqVO);
         LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_MOBILE;
         // TODO 求职端用户 手机号+密码,招聘端用户 邮箱+密码
-        if(ValidationUtils.isMobile(reqVO.getAccount())) {
+        if (ValidationUtils.isMobile(reqVO.getAccount())) {
             // 使用手机 + 密码,进行登录。
             MdeUserDO user = check(logTypeEnum, reqVO.getAccount(), reqVO.getPassword());
 
@@ -118,7 +118,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
             }
             // 创建 Token 令牌,记录登录日志
             return createTokenAfterLoginSuccess(user, reqVO.getAccount(), logTypeEnum, openid);
-        }else if (ValidationUtils.isEmail(reqVO.getAccount())) {
+        } else if (ValidationUtils.isEmail(reqVO.getAccount())) {
             // 企业邮箱登录
             return enterpriseAuthService.login(reqVO.getAccount(), reqVO.getPassword());
         }
@@ -130,7 +130,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         MdeUserDO user = userService.getUserByPhone(account);
         if (null == user) {
             createLoginLog(null, account, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
-            throw exception(MDE_AUTH_LOGIN_BAD_CREDENTIALS);
+            throw exception(MDE_USER_MOBILE_NOT_EXISTS);
         }
         if (!userService.isPasswordMatch(password, user.getPassword())) {
             createLoginLog(user.getId(), account, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
@@ -177,9 +177,12 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         smsCodeApi.useSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.MENDUNER_LOGIN.getScene(), userIp).setMobile(reqVO.getPhone())).getCheckedData();
 
         // 获得获得注册用户
-        MdeUserDO user = userService.createUserIfAbsent(reqVO.getPhone(), userIp, getTerminal().toString());
-        Assert.notNull(user, "获取用户失败,结果为空");
-
+        //  MdeUserDO user = userService.createUserIfAbsent(reqVO.getPhone(), userIp, getTerminal().toString());
+        MdeUserDO user = userService.getUserByPhone(reqVO.getPhone());
+        if (null == user) {
+            createLoginLog(null, reqVO.getPhone(), LoginLogTypeEnum.LOGIN_MOBILE, LoginResultEnum.BAD_CREDENTIALS);
+            throw exception(MDE_USER_MOBILE_NOT_EXISTS);
+        }
         // 如果 socialType 非空,说明需要绑定社交用户
         String openid = null;
         if (reqVO.getSocialType() != null) {
@@ -191,6 +194,27 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         return createTokenAfterLoginSuccess(user, reqVO.getPhone(), LoginLogTypeEnum.LOGIN_SMS, openid);
     }
 
+    @Override
+    public AppMdeAuthLoginRespVO register(AppMdeAuthSmsRegisterReqVO reqVO) {
+        String userIp = getClientIP();
+
+        // 使用验证码
+        smsCodeApi.useSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.MENDUNER_LOGIN.getScene(), userIp)
+                .setMobile(reqVO.getPhone())).getCheckedData();
+
+        // 效验是否存在
+        MdeUserDO user = userService.getUserByPhone(reqVO.getPhone());
+        if (null != user) {
+            throw exception(MDE_USER_MOBILE_EXISTS_OTHER);
+        }
+
+        // 创建用户并返回
+        user = userService.createUserIfAbsent(reqVO.getPhone(), userIp, getTerminal().toString());
+
+        // 登录
+        return createTokenAfterLoginSuccess(user, reqVO.getPhone(), LoginLogTypeEnum.LOGIN_SMS, null);
+    }
+
     @Override
     @DSTransactional
     public AppMdeAuthLoginRespVO socialLogin(AppMdeAuthSocialLoginReqVO reqVO) {

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/auth/MdeEnterpriseAuthServiceImpl.java

@@ -100,7 +100,7 @@ public class MdeEnterpriseAuthServiceImpl implements MdeEnterpriseAuthService {
         EnterpriseUserBindDO user = userBindService.getByEmail(email);
         if (null == user) {
             createLoginLog(null, email, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
-            throw exception(MDE_AUTH_LOGIN_BAD_CREDENTIALS);
+            throw exception(MDE_USER_EMAIL_NOT_REGISTERED);
         }
         if (!userBindService.isPasswordMatch(password, user.getPassword())) {
             createLoginLog(user.getId(), email, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);

+ 3 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties

@@ -92,7 +92,7 @@
 1_100_015_004=Access date does not exist
 # ========== 用户登录 1_100_016_000 ==========
 1_100_016_001=User does not exist
-1_100_016_002=Unregistered user with phone number
+1_100_016_002=Unregistered with phone number
 1_100_016_003=Modifying phone failed, the phone number ({}) has already been used
 1_100_016_004=User account already exists
 1_100_016_005=Phone number already exists
@@ -115,6 +115,7 @@
 1_100_016_022=Email format incorrect
 1_100_016_023=Email length cannot exceed 255 characters
 1_100_016_024=Email cannot be empty
+1_100_016_025=This phone number has already been used by another user
 # ========== AUTH 模块 1_100_017_000 ==========
 1_100_017_001=Login failed, incorrect account and password
 1_100_017_002=Login failed, account disabled
@@ -134,6 +135,7 @@
 1_100_017_016=No enterprise selected
 1_100_017_017=Unregistered user, please register individual user first before applying for enterprise user
 1_100_017_018=Access token cannot be empty
+1_100_017_019=Email number not registered
 # ========== 角色模块 1_100_018_000 ==========
 1_100_018_001=Character does not exist
 1_100_018_002=A role named [{}] already exists

+ 3 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -92,7 +92,7 @@
 1_100_015_004=访问日期不存在
 # ========== 用户登录 1_100_016_000 ==========
 1_100_016_001=用户不存在
-1_100_016_002=手机号未注册用户
+1_100_016_002=手机号未注册
 1_100_016_003=修改手机失败,该手机号({})已经被使用
 1_100_016_004=用户账号已经存在
 1_100_016_005=手机号已经存在
@@ -115,6 +115,7 @@
 1_100_016_022=邮箱格式不正确
 1_100_016_023=邮箱长度不能超过 255 个字符
 1_100_016_024=邮箱不能为空
+1_100_016_025=该手机号已被其他用户使用
 # ========== AUTH 模块 1_100_017_000 ==========
 1_100_017_001=登录失败,账号密码不正确
 1_100_017_002=登录失败,账号被禁用
@@ -134,6 +135,7 @@
 1_100_017_016=未选择企业
 1_100_017_017=未注册用户,请先注册人才用户再申请企业用户
 1_100_017_018=访问令牌不能为空
+1_100_017_019=邮箱号未注册
 # ========== 角色模块 1_100_018_000 ==========
 1_100_018_001=角色不存在
 1_100_018_002=已经存在名为【{}】的角色