浏览代码

短信和图片验证

zhoutg 6 年之前
父节点
当前提交
240ea00614

+ 2 - 0
user-service/src/main/java/com/diagbot/entity/ImgVerInfo.java

@@ -21,4 +21,6 @@ public class ImgVerInfo {
     private Date createTime;
     //验证码过期时间
     private Date expireTime;
+    //验证码过期时间字符串
+    private String expireTimeStr;
 }

+ 2 - 0
user-service/src/main/java/com/diagbot/entity/SwsVerInfo.java

@@ -21,4 +21,6 @@ public class SwsVerInfo {
     private Date createTime;
     //验证码过期时间
     private Date expireTime;
+    //验证码过期时间字符串
+    private String expireTimeStr;
 }

+ 53 - 0
user-service/src/main/java/com/diagbot/enums/ConstantEnum.java

@@ -0,0 +1,53 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description: 常量枚举类
+ * @Author: ztg
+ * @Date: 2018/9/28 10:45
+ */
+public enum ConstantEnum implements KeyedNamed {
+
+    //TODO 短信过期时间,上线后设为3,测试阶段设大
+    SMS_EXPIRED_INTERVAL(99999, "短信失效时间(分钟)"),
+
+    IMG_EXPIRED_INTERVAL(3, "图片验证码失效时间(分钟)");
+
+    @Setter
+    private Integer key;
+
+    @Setter
+    private String name;
+
+    ConstantEnum(Integer key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static ConstantEnum getEnum(Integer key) {
+        for (ConstantEnum item : ConstantEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(Integer key) {
+        ConstantEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 3 - 3
user-service/src/main/java/com/diagbot/facade/VerFacade.java

@@ -4,6 +4,7 @@ import com.diagbot.dto.ImgVerCreatDTO;
 import com.diagbot.entity.ImgVerInfo;
 import com.diagbot.entity.SwsVerInfo;
 import com.diagbot.entity.User;
+import com.diagbot.enums.ConstantEnum;
 import com.diagbot.enums.VisibleIdTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -29,7 +30,6 @@ import org.springframework.stereotype.Component;
 @Component
 public class VerFacade {
 
-    public final static int SMS_MINS = 3000; //短信验证码间隔为3分钟 //TODO 时间间隔先调大了,之后改为3
     @Autowired
     private ImgVerService imgVerService;
     @Autowired
@@ -104,7 +104,7 @@ public class VerFacade {
             //验证是否超过三分钟
             SwsVerInfo swsVerInfoCheck = smsVerService.getSmsVerification(smsVerCreatVO.getMobile());
             if (null != swsVerInfoCheck) {
-                if (DateUtil.after(DateUtil.addMinutes(swsVerInfoCheck.getCreateTime(), VerFacade.SMS_MINS),
+                if (DateUtil.after(DateUtil.addMinutes(swsVerInfoCheck.getCreateTime(), ConstantEnum.SMS_EXPIRED_INTERVAL.getKey()),
                         DateUtil.now())) {
                     throw new CommonException(ServiceErrorCode.SMS_SEND_ERROR,
                             "同一用户三分钟之内不能重复发送验证短信,请三分钟之后再次发送!");
@@ -158,7 +158,7 @@ public class VerFacade {
         //验证是否超过三分钟
         SwsVerInfo swsVerInfoCheck = smsVerService.getSmsVerification(smsVerCreatVO.getMobile());
         if (null != swsVerInfoCheck) {
-            if (DateUtil.after(DateUtil.addMinutes(swsVerInfoCheck.getCreateTime(), 3000), //TODO 方便测试先加大时间间隔
+            if (DateUtil.after(DateUtil.addMinutes(swsVerInfoCheck.getCreateTime(), ConstantEnum.SMS_EXPIRED_INTERVAL.getKey()),
                     DateUtil.now())) {
                 throw new CommonException(ServiceErrorCode.SMS_SEND_ERROR,
                         "同一用户三分钟之内不能重复发送验证短信,请三分钟之后再次发送!");

+ 3 - 1
user-service/src/main/java/com/diagbot/service/impl/ImgVerServiceImpl.java

@@ -1,6 +1,7 @@
 package com.diagbot.service.impl;
 
 import com.diagbot.entity.ImgVerInfo;
+import com.diagbot.enums.ConstantEnum;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.service.ImgVerService;
@@ -68,8 +69,9 @@ public class ImgVerServiceImpl implements ImgVerService {
         Object[] obj = VerifyCodeUtils.createImage();
         imgVerInfo.setCode(obj[0].toString());
         imgVerInfo.setCreateTime(DateUtil.now());
-        final Date expireDate = DateUtil.addMinutes(DateUtil.now(), 20);
+        final Date expireDate = DateUtil.addMinutes(DateUtil.now(), ConstantEnum.IMG_EXPIRED_INTERVAL.getKey());
         imgVerInfo.setExpireTime(expireDate);
+        imgVerInfo.setExpireTimeStr(DateUtil.format(expireDate, "yyyy-MM-dd HH:mm:ss"));
         final byte[] redis_key = getUserImgKey(imgVerInfo.getImgId());
         redisForImg.execute(new RedisCallback<Object>() {
             @Override

+ 3 - 1
user-service/src/main/java/com/diagbot/service/impl/SmsVerServiceImpl.java

@@ -4,6 +4,7 @@ import com.aliyuncs.IAcsClient;
 import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
 import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
 import com.diagbot.entity.SwsVerInfo;
+import com.diagbot.enums.ConstantEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.ServiceErrorCode;
@@ -113,8 +114,9 @@ public class SmsVerServiceImpl implements SmsVerService {
                     "验证码不能为空!");
         }
         swsVerInfo.setCreateTime(DateUtil.now());
-        final Date expireDate = DateUtil.addMinutes(DateUtil.now(), 3);
+        final Date expireDate = DateUtil.addMinutes(DateUtil.now(),  ConstantEnum.SMS_EXPIRED_INTERVAL.getKey());
         swsVerInfo.setExpireTime(expireDate);
+        swsVerInfo.setExpireTimeStr(DateUtil.format(expireDate, "yyyy-MM-dd HH:mm:ss"));
         final byte[] redis_key = getUserSmsKey(swsVerInfo.getMobile());
         redisForSms.execute(new RedisCallback<Object>() {
             @Override