فهرست منبع

1、拓展验证码发送

rayson 1 سال پیش
والد
کامیت
9e072b8c65

+ 6 - 1
citu-module-system/citu-module-system-api/src/main/java/com/citu/module/system/enums/sms/SmsSceneEnum.java

@@ -21,7 +21,12 @@ public enum SmsSceneEnum implements IntArrayValuable {
     MEMBER_UPDATE_PASSWORD(3, "user-update-password", "会员用户 - 修改密码"),
     MEMBER_RESET_PASSWORD(4, "user-reset-password", "会员用户 - 忘记密码"),
 
-    ADMIN_MEMBER_LOGIN(21, "admin-sms-login", "后台用户 - 手机号登录");
+    ADMIN_MEMBER_LOGIN(21, "admin-sms-login", "后台用户 - 手机号登录"),
+
+    MENDUNER_LOGIN(30, "menduner-user-sms-login", "手机号登陆"),
+    MENDUNER_UPDATE_MOBILE(31, "menduner-user-update-mobile", "求职者 - 修改手机"),
+    MENDUNER_UPDATE_PASSWORD(32, "menduner-user-update-password", "求职者 - 修改密码"),
+    MENDUNER_RESET_PASSWORD(33, "menduner-user-reset-password", "求职者 - 忘记密码");
 
     public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SmsSceneEnum::getScene).toArray();
 

+ 7 - 1
citu-module-system/citu-module-system-biz/src/main/java/com/citu/module/system/service/sms/SmsCodeServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.Map;
 
 import static cn.hutool.core.util.RandomUtil.randomInt;
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -45,9 +46,14 @@ public class SmsCodeServiceImpl implements SmsCodeService {
         Assert.notNull(sceneEnum, "验证码场景({}) 查找不到配置", reqDTO.getScene());
         // 创建验证码
         String code = createSmsCode(reqDTO.getMobile(), reqDTO.getScene(), reqDTO.getCreateIp());
+        Map<String, Object> templateParams = MapUtil.of("code", code);
+        if (null != smsCodeProperties.getExpireTimes()) {
+            // 加入时间
+            templateParams.put("minute", smsCodeProperties.getExpireTimes().toMinutes());
+        }
         // 发送验证码
         smsSendService.sendSingleSms(reqDTO.getMobile(), null, null,
-                sceneEnum.getTemplateCode(), MapUtil.of("code", code));
+                sceneEnum.getTemplateCode(), templateParams);
     }
 
     private String createSmsCode(String mobile, Integer scene, String ip) {

+ 0 - 50
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/sms/MdeSmsSceneEnum.java

@@ -1,50 +0,0 @@
-package com.citu.module.menduner.system.enums.sms;
-
-import cn.hutool.core.util.ArrayUtil;
-import com.citu.framework.common.core.IntArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * 用户短信验证码发送场景的枚举
- *
- * @author rayson
- */
-@Getter
-@AllArgsConstructor
-public enum MdeSmsSceneEnum implements IntArrayValuable {
-
-    MENDUNER_LOGIN(1, "menduner-user-sms-login", "手机号登陆"),
-    MENDUNER_UPDATE_MOBILE(2, "menduner-user-update-mobile", "求职者 - 修改手机"),
-    MENDUNER_UPDATE_PASSWORD(3, "menduner-user-update-password", "求职者 - 修改密码"),
-    MENDUNER_RESET_PASSWORD(4, "menduner-user-reset-password", "求职者 - 忘记密码");
-
-
-    public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(MdeSmsSceneEnum::getScene).toArray();
-
-    /**
-     * 验证场景的编号
-     */
-    private final Integer scene;
-    /**
-     * 模版编码
-     */
-    private final String templateCode;
-    /**
-     * 描述
-     */
-    private final String description;
-
-    @Override
-    public int[] array() {
-        return ARRAYS;
-    }
-
-    public static MdeSmsSceneEnum getCodeByScene(Integer scene) {
-        return ArrayUtil.firstMatch(sceneEnum -> sceneEnum.getScene().equals(scene),
-                values());
-    }
-
-}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/auth/vo/MdeAuthCheckCodeReqVO.java

@@ -25,7 +25,7 @@ public class MdeAuthCheckCodeReqVO {
     @Schema(description = "手机号", example = "15601691234")
     @NotBlank(message = "手机号不能为空")
     @Mobile
-    private String mobile;
+    private String phone;
 
     @Schema(description = "手机验证码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     @NotBlank(message = "手机验证码不能为空")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/auth/vo/MdeAuthLoginReqVO.java

@@ -24,7 +24,7 @@ public class MdeAuthLoginReqVO {
     @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300")
     @NotEmpty(message = "手机号不能为空")
     @Mobile
-    private String mobile;
+    private String phone;
 
     @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "buzhidao")
     @NotEmpty(message = "密码不能为空")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/auth/vo/MdeAuthSmsLoginReqVO.java

@@ -25,7 +25,7 @@ public class MdeAuthSmsLoginReqVO {
     @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300")
     @NotEmpty(message = "手机号不能为空")
     @Mobile
-    private String mobile;
+    private String phone;
 
     @Schema(description = "手机验证码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     @NotEmpty(message = "手机验证码不能为空")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/auth/vo/MdeAuthSmsSendReqVO.java

@@ -16,7 +16,7 @@ public class MdeAuthSmsSendReqVO {
 
     @Schema(description = "手机号", example = "15601691234")
     @Mobile
-    private String mobile;
+    private String phone;
 
     @Schema(description = "发送场景,对应 SmsSceneEnum 枚举", example = "1")
     @NotNull(message = "发送场景不能为空")

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/auth/vo/MdeAuthSmsValidateReqVO.java

@@ -19,7 +19,7 @@ public class MdeAuthSmsValidateReqVO {
 
     @Schema(description = "手机号", example = "15601691234")
     @Mobile
-    private String mobile;
+    private String phone;
 
     @Schema(description = "发送场景,对应 SmsSceneEnum 枚举", example = "1")
     @NotNull(message = "发送场景不能为空")

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

@@ -10,7 +10,6 @@ import com.citu.framework.common.util.servlet.ServletUtils;
 import com.citu.module.menduner.system.controller.admin.auth.vo.*;
 import com.citu.module.menduner.system.convert.MdeAuthConvert;
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
-import com.citu.module.menduner.system.enums.sms.MdeSmsSceneEnum;
 import com.citu.module.menduner.system.service.user.MdeUserService;
 import com.citu.module.system.api.logger.LoginLogApi;
 import com.citu.module.system.api.logger.dto.LoginLogCreateReqDTO;
@@ -39,9 +38,7 @@ import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exce
 import static com.citu.framework.common.util.servlet.ServletUtils.getClientIP;
 import static com.citu.framework.web.core.util.WebFrameworkUtils.getTerminal;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.AUTH_LOGIN_BAD_CREDENTIALS;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.AUTH_LOGIN_USER_DISABLED;
-import static com.citu.module.system.enums.ErrorCodeConstants.*;
+import static com.citu.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS;
 
 /**
  * menduner的认证 Service 接口 实现
@@ -68,7 +65,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     @Override
     public MdeAuthLoginRespVO login(MdeAuthLoginReqVO reqVO) {
         // 使用手机 + 密码,进行登录。
-        MdeUserDO user = check(reqVO.getMobile(), reqVO.getPassword());
+        MdeUserDO user = check(reqVO.getPhone(), reqVO.getPassword());
 
         // 如果 socialType 非空,说明需要绑定社交用户
         String openid = null;
@@ -78,7 +75,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         }
 
         // 创建 Token 令牌,记录登录日志
-        return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, openid);
+        return createTokenAfterLoginSuccess(user, reqVO.getPhone(), LoginLogTypeEnum.LOGIN_MOBILE, openid);
     }
 
     private MdeUserDO check(String mobile, String password) {
@@ -130,10 +127,10 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     public MdeAuthLoginRespVO smsLogin(MdeAuthSmsLoginReqVO reqVO) {
         // 校验验证码
         String userIp = getClientIP();
-        smsCodeApi.useSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO, MdeSmsSceneEnum.MENDUNER_LOGIN.getScene(), userIp)).getCheckedData();
+        smsCodeApi.useSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.MENDUNER_LOGIN.getScene(), userIp).setMobile(reqVO.getPhone())).getCheckedData();
 
         // 获得获得注册用户
-        MdeUserDO user = userService.createUserIfAbsent(reqVO.getMobile(), userIp, getTerminal());
+        MdeUserDO user = userService.createUserIfAbsent(reqVO.getPhone(), userIp, getTerminal());
         Assert.notNull(user, "获取用户失败,结果为空");
 
         // 如果 socialType 非空,说明需要绑定社交用户
@@ -144,7 +141,7 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         }
 
         // 创建 Token 令牌,记录登录日志
-        return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_SMS, openid);
+        return createTokenAfterLoginSuccess(user, reqVO.getPhone(), LoginLogTypeEnum.LOGIN_SMS, openid);
     }
 
     @Override
@@ -205,14 +202,14 @@ public class MdeAuthServiceImpl implements MdeAuthService {
     public void sendSmsCode(Long userId, MdeAuthSmsSendReqVO reqVO) {
         // 情况 1:如果是修改手机场景,需要校验新手机号是否已经注册,说明不能使用该手机了
         if (Objects.equals(reqVO.getScene(), SmsSceneEnum.MEMBER_UPDATE_MOBILE.getScene())) {
-            MdeUserDO user = userService.getUserByPhone(reqVO.getMobile());
+            MdeUserDO user = userService.getUserByPhone(reqVO.getPhone());
             if (user != null && !Objects.equals(user.getId(), userId)) {
                 throw exception(AUTH_MOBILE_USED);
             }
         }
         // 情况 2:如果是重置密码场景,需要校验手机号是存在的
         if (Objects.equals(reqVO.getScene(), SmsSceneEnum.MEMBER_RESET_PASSWORD.getScene())) {
-            MdeUserDO user = userService.getUserByPhone(reqVO.getMobile());
+            MdeUserDO user = userService.getUserByPhone(reqVO.getPhone());
             if (user == null) {
                 throw exception(MDE_USER_MOBILE_NOT_EXISTS);
             }
@@ -221,16 +218,16 @@ public class MdeAuthServiceImpl implements MdeAuthService {
         if (Objects.equals(reqVO.getScene(), SmsSceneEnum.MEMBER_UPDATE_PASSWORD.getScene())) {
             MdeUserDO user = userService.getMdeUser(userId);
             // TODO 芋艿:后续 member user 手机非强绑定,这块需要做下调整;
-            reqVO.setMobile(user.getPhone());
+            reqVO.setPhone(user.getPhone());
         }
 
         // 执行发送
-        smsCodeApi.sendSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO).setCreateIp(getClientIP()));
+        smsCodeApi.sendSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO).setCreateIp(getClientIP()).setMobile(reqVO.getPhone()));
     }
 
     @Override
     public void validateSmsCode(Long userId, MdeAuthSmsValidateReqVO reqVO) {
-        smsCodeApi.validateSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO));
+        smsCodeApi.validateSmsCode(MdeAuthConvert.INSTANCE.convert(reqVO).setMobile(reqVO.getPhone()));
     }
 
     @Override