From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 23 五月 2020 09:54:38 +0800
Subject: [PATCH] 足迹、收藏订单兼容新需求

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java |   43 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java
index 1595cbc..8278293 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java
@@ -9,12 +9,16 @@
 
 import com.yeshi.fanli.dao.mybatis.SMSHistoryMapper;
 import com.yeshi.fanli.entity.bus.user.SMSHistory;
-import com.yeshi.fanli.exception.SMSException;
+import com.yeshi.fanli.exception.config.SMSException;
 import com.yeshi.fanli.service.inter.user.SMSService;
+import com.yeshi.fanli.util.AliyunSMSUtil;
 import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.RedisKeyEnum;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TencentSMSUtil;
+
+import net.sf.json.JSONObject;
 
 @Service
 public class SMSServiceImpl implements SMSService {
@@ -26,20 +30,35 @@
 	private RedisManager redisManager;
 
 	@Override
-	public String sendLoginVCode(String phone) throws SMSException {
+	public String sendLoginVCode(String phone, int codeLength) throws SMSException {
 		boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
 		if (limit)
 			throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
-		String msgCode = StringUtil.getVerifyCode(6);
-		System.out.println(msgCode);
+
+		String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.emptyKey, StringUtil.Md5("sms-login-tencent-latest-" + phone));
+
+		String msgCode = StringUtil.getVerifyCode(codeLength);
 		// 楠岃瘉鐮佹ā鏉�
 		String msg = Constant.smsConfig.getSmsLogin().replace("[绛惧悕]", Constant.smsConfig.getSmsSign()).replace("[楠岃瘉鐮乚",
 				msgCode);
 		// 鍙戦�佺煭淇�
-		TencentSMSUtil.sendSingleMsg(phone, msg);
+		// 鍙戦�侀棿闅�2鍒嗛挓鍐呯殑閲囩敤闃块噷浜戠煭淇″彂閫�
+		String cacheString = redisManager.getCommonString(key);
+		if (StringUtil.isNullOrEmpty(cacheString) || Integer.parseInt(cacheString) < 2) {
+			TencentSMSUtil.sendSingleMsg(phone, msg);
+			redisManager.increase(key);
+			redisManager.expire(key, 120);
+		} else {
+			redisManager.removeCommonString(key);
+			// 鍙戦�侀樋閲屼簯鐭俊
+			JSONObject data = new JSONObject();
+			data.put("code", msgCode);
+			AliyunSMSUtil.sendSingleMsg(phone, Constant.smsConfig.getAliyunLoginTemplatecode(), data.toString());
+		}
 		// 缂撳瓨
 		redisManager.sendSms(phone, SMSHistory.TYPE_LOGIN);
 		redisManager.saveSMSVCode(phone, SMSHistory.TYPE_LOGIN, msgCode);
+
 		SMSHistory smsHistory = new SMSHistory();
 		smsHistory.setContent(msg);
 		smsHistory.setCreateTime(new Date());
@@ -50,18 +69,28 @@
 	}
 
 	@Override
-	public void sendBindVCode(String phone) throws SMSException {
+	public void sendBindVCode(String phone, int codeLength) throws SMSException {
 		boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_BIND);
 		if (limit)
 			throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
-		String msgCode = StringUtil.getRandomCode(6);
+		String msgCode = StringUtil.getVerifyCode(codeLength);
+
+		// 楠岃瘉鐮佹ā鏉�
 		String msg = Constant.smsConfig.getSmsBind().replace("[绛惧悕]", Constant.smsConfig.getSmsSign()).replace("[楠岃瘉鐮乚",
 				msgCode);
 		// 鍙戦�佺煭淇�
 		TencentSMSUtil.sendSingleMsg(phone, msg);
+
 		// 缂撳瓨
 		redisManager.sendSms(phone, SMSHistory.TYPE_BIND);
 		redisManager.saveSMSVCode(phone, SMSHistory.TYPE_BIND, msgCode);
+
+		SMSHistory smsHistory = new SMSHistory();
+		smsHistory.setContent(msg);
+		smsHistory.setCreateTime(new Date());
+		smsHistory.setPhone(phone);
+		smsHistory.setType(SMSHistory.TYPE_BIND);
+		smsHistoryMapper.insertSelective(smsHistory);
 	}
 
 	@Override

--
Gitblit v1.8.0