From cd7767932dddeaf6d9c73a83d4a9b38f0341b77f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 28 一月 2022 12:46:17 +0800
Subject: [PATCH] bug修复

---
 src/main/java/com/yeshi/buwan/service/imp/SMSServiceImpl.java |   72 +++++++++++++++++++++++++++++++-----
 1 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/service/imp/SMSServiceImpl.java b/src/main/java/com/yeshi/buwan/service/imp/SMSServiceImpl.java
index 029ea7b..2296008 100644
--- a/src/main/java/com/yeshi/buwan/service/imp/SMSServiceImpl.java
+++ b/src/main/java/com/yeshi/buwan/service/imp/SMSServiceImpl.java
@@ -4,6 +4,7 @@
 import com.yeshi.buwan.dto.config.TencentSMSConfig;
 import com.yeshi.buwan.exception.SMSException;
 import com.yeshi.buwan.service.inter.SMSService;
+import com.yeshi.buwan.service.inter.system.SystemConfigService;
 import com.yeshi.buwan.util.Constant;
 import com.yeshi.buwan.util.RedisKeyEnum;
 import com.yeshi.buwan.util.RedisManager;
@@ -19,21 +20,14 @@
     @Resource
     private RedisManager redisManager;
 
-    @Override
-    public void sendBindVCode(String uid, String phone, int codeLength) throws SMSException {
-        String limitKey = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSLIMIT, uid + "");
-        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSVCode, phone + "-" + 0);
-        if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(limitKey)))
-            throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
+    @Resource
+    private DetailSystemConfigService detailSystemConfigService;
 
+    private void sendSMSCode(String phone, String msg) throws SMSException {
 
-        String msgCode = StringUtil.getNumberVerifyCode(codeLength);
 
         TencentSMSConfig tencentSMSConfig = Constant.tencentSMSConfig;
 
-        // 楠岃瘉鐮佹ā鏉�
-        String msg = tencentSMSConfig.getContentBind().replace("[绛惧悕]", tencentSMSConfig.getSign()).replace("[楠岃瘉鐮乚",
-                msgCode);
         SmsSingleSenderResult result = TencentSMSUtil.sendSingleMsg(Integer.parseInt(tencentSMSConfig.getAppId()), tencentSMSConfig.getAppKey(), phone, msg);
         if (result == null)
             throw new SMSException(2, "鐭俊鍙戦�佸け璐�");
@@ -42,6 +36,23 @@
         } else if (result.result != 0) {// 鍙戦�佸け璐�
             throw new SMSException(result.result, "鐭俊鍙戦�佸け璐�");
         }
+
+
+    }
+
+    @Override
+    public void sendBindVCode(String uid, String phone, int codeLength) throws SMSException {
+        String limitKey = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSLIMIT, uid + "");
+        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSVCode, phone + "-" + 0);
+        if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(limitKey)))
+            throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
+
+        String msgCode = StringUtil.getNumberVerifyCode(codeLength);
+        // 楠岃瘉鐮佹ā鏉�
+        TencentSMSConfig tencentSMSConfig = Constant.tencentSMSConfig;
+        String msg = tencentSMSConfig.getContentBind().replace("[绛惧悕]", tencentSMSConfig.getSign()).replace("[楠岃瘉鐮乚",
+                msgCode);
+        sendSMSCode(phone, msg);
         //淇濆瓨楠岃瘉鐮�
         redisManager.cacheCommonString(key, msgCode, 60 * 5);
         //60s鍚庡啀鍙戦��
@@ -58,4 +69,45 @@
         }
         return false;
     }
+
+    @Override
+    public void sendLoginVCode(String phone, int codeLength, String detailSystemId, int version) throws SMSException {
+        String limitKey = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSLIMIT, phone);
+        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSVCode, phone + "-" + 1);
+        if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(limitKey)))
+            throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
+
+        String msgCode = StringUtil.getNumberVerifyCode(codeLength);
+        // 楠岃瘉鐮佹ā鏉�
+        TencentSMSConfig tencentSMSConfig = Constant.tencentSMSConfig;
+        String msg = tencentSMSConfig.getContentBind().replace("[绛惧悕]", detailSystemConfigService.getConfigValueByKey("tencent_sms_sign", detailSystemId, version)).replace("[楠岃瘉鐮乚",
+                msgCode);
+        sendSMSCode(phone, msg);
+        //淇濆瓨楠岃瘉鐮�
+        redisManager.cacheCommonString(key, msgCode, 60 * 5);
+        //60s鍚庡啀鍙戦��
+        redisManager.cacheCommonString(limitKey, "1", 60);
+    }
+
+    @Override
+    public boolean verifyLoginVCode(String phone, String code, String detailSystemId, int version) {
+
+        String value = detailSystemConfigService.getConfigValueByKey("test_phone_account", detailSystemId, version);
+
+//娴嬭瘯璐﹀彿
+        if (value != null) {
+            if (phone.equalsIgnoreCase(value.split("#")[0]) && code.equalsIgnoreCase(value.split("#")[1])) {
+                return true;
+            }
+        }
+
+
+        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.SMSVCode, phone + "-" + 1);
+        String cacheCode = redisManager.getCommonString(key);
+        if (cacheCode != null && cacheCode.equalsIgnoreCase(code)) {
+            redisManager.removeCommonString(key);
+            return true;
+        }
+        return false;
+    }
 }

--
Gitblit v1.8.0