Просмотр исходного кода

短信请求频率1分钟1次,验证码有效时间5分钟

yzc 2 лет назад
Родитель
Сommit
6fe51d4aca

+ 18 - 9
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/constant/RedisConstant.java

@@ -10,38 +10,47 @@ public class RedisConstant {
     /**
      * 短信验证码值key
      */
-    public static final String MESSAGE_SMS_VERIFY_CODE_VALUE_KEY = "sckw:sms:verifyCode:value:%s:%s";
+    public static final String MESSAGE_SMS_VERIFY_CODE_VALUE_KEY = "message:sms:verifyCode:value:%s:%s";
     /**
      * 短信验证码请求key
      */
-    public static final String MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY = "sckw:sms:verifyCode:request:%s:%s";
+    public static final String MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY = "message:sms:verifyCode:request:%s:%s";
+
+    /**
+     * 短信验证码请求时间
+     */
+    public static final Long SMS_VERIFY_CODE_REQUEST_TIME = 60L;
+    /**
+     * 短信验证码锁key
+     */
+    public static final String MESSAGE_SMS_VERIFY_CODE_LOCK_KEY = "message:sms:verifyCode:lock:%s:%s";
     /**
-     * 短信验证码有效时间(秒)
+     * 短信验证码有效时间(秒)5分钟
      */
-    public static final Long SMS_VERIFY_CODE_VALID_TIME = 180L;
+    public static final Long SMS_VERIFY_CODE_VALID_TIME = 300L;
 
     /**
      * message消费请求key
      */
-    public static final String MESSAGE_CONSUMER_REQUEST_KEY = "sckw:message:consumer:request:%s";
+    public static final String MESSAGE_CONSUMER_REQUEST_KEY = "message:msg:consumer:request:%s";
 
     /**
      * 商品更新库存锁key
      */
-    public static final String GOODS_UPDATE_AMOUNT_KEY = "sckw:product:goods:update:amount:%s";
+    public static final String GOODS_UPDATE_AMOUNT_KEY = "product:goods:update:amount:%s";
     /**
      * 更新贸易订单委托量、已履约量锁key
      */
-    public static final String TORDER_UPDATE_AMOUNT_KEY = "sckw:trade:order:update:amount:%s";
+    public static final String TORDER_UPDATE_AMOUNT_KEY = "order:trade:update:amount:%s";
     /**
      * 合同签约完成更新贸易订单状态锁key
      */
-    public static final String TORDER_CONTRACT_UPDATE_KEY = "sckw:trade:order:contract:update:%s";
+    public static final String TORDER_CONTRACT_UPDATE_KEY = "order:trade:contract:update:%s";
 
     /**
      * 合同签约完成更新物流订单状态锁key
      */
-    public static final String LOGISTICS_ORDER_CONTRACT_UPDATE_KEY = "sckw:logistics:order:contract:update:%s";
+    public static final String LOGISTICS_ORDER_CONTRACT_UPDATE_KEY = "order:trade:logistics:update:%s";
 
     /**
      * 消费请求有效时间(秒)

+ 7 - 5
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwSmsHandlerService.java

@@ -35,19 +35,21 @@ public class SckwSmsHandlerService {
         log.info("接收到发送短信消息:{},开始处理", JSON.toJSONString(sckwSms));
         String type = sckwSms.getType();
         String phone = sckwSms.getPhone();
-        String requestKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY, type, phone);
-        if (Boolean.FALSE.equals(RedissonUtils.tryLock(requestKey, 5L, 10L))) {
+        String lockKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_LOCK_KEY, type, phone);
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
             log.info("获取发送短信锁失败,不处理");
             return;
         }
         try {
-            String valueKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_VALUE_KEY, type, phone);
-            if (Boolean.TRUE.equals(RedissonUtils.exists(valueKey))) {
+            String requestKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY, type, phone);
+            if (Boolean.TRUE.equals(RedissonUtils.exists(requestKey))) {
                 throw new BusinessException("请勿频繁获取短信验证码!");
             }
+            RedissonUtils.putString(requestKey, String.valueOf(sckwSms.getParams().get("code")), RedisConstant.SMS_VERIFY_CODE_REQUEST_TIME);
             //发送短信
             SmsUtil.sendSms(sckwSms.getPhone(), sckwSms.getSignName(), sckwSms.getTemplateCode().getName(), JSON.toJSONString(sckwSms.getParams()));
             //放入缓存
+            String valueKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_VALUE_KEY, type, phone);
             RedissonUtils.putString(valueKey, String.valueOf(sckwSms.getParams().get("code")), RedisConstant.SMS_VERIFY_CODE_VALID_TIME);
             //数据入库
             SmsCodeEnum smsCodeEnum = sckwSms.getTemplateCode();
@@ -58,7 +60,7 @@ public class SckwSmsHandlerService {
             kwmSms.setUpdateBy(sckwSms.getCreateBy());
             kwmSmsService.add(kwmSms);
         } finally {
-            RedissonUtils.unlock(requestKey);
+            RedissonUtils.unlock(lockKey);
         }
     }
 

+ 1 - 1
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SmsService.java

@@ -45,7 +45,7 @@ public class SmsService {
             throw new BusinessException("非法短信类型!");
         }
         String phone = param.getPhone();
-        String key = StringUtils.format(RedisConstant.MESSAGE_SMS_VERIFY_CODE_VALUE_KEY, type, phone);
+        String key = StringUtils.format(RedisConstant.MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY, type, phone);
         if (Boolean.TRUE.equals(RedissonUtils.exists(key))) {
             throw new BusinessException("请勿频繁获取短信验证码!");
         }