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