From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 18 一月 2020 12:06:27 +0800
Subject: [PATCH] 用户注册信息

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 53 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 8cd9a9d..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
@@ -1,5 +1,6 @@
 package com.yeshi.fanli.service.impl.user;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 import javax.annotation.Resource;
@@ -8,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 {
@@ -25,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());
@@ -49,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
@@ -78,4 +108,20 @@
 		redisManager.saveSMSVCode(phone, SMSHistory.TYPE_EXTRACT, msgCode);
 	}
 
+	@Override
+	public void sendExtractSuccessMsg(String phone, BigDecimal money) throws SMSException {
+		String msg = Constant.smsConfig.getSmsExtractSuccess().replace("[绛惧悕]", Constant.smsConfig.getSmsSign())
+				.replace("[閲戦]", money.toString());
+		// 鍙戦�佺煭淇�
+		TencentSMSUtil.sendSingleMsg(phone, msg);
+	}
+
+	@Override
+	public void sendExtractFailMsg(String phone, BigDecimal money) throws SMSException {
+		String msg = Constant.smsConfig.getSmsExtractFail().replace("[绛惧悕]", Constant.smsConfig.getSmsSign())
+				.replace("[閲戦]", money.toString());
+		// 鍙戦�佺煭淇�
+		TencentSMSUtil.sendSingleMsg(phone, msg);
+	}
+
 }

--
Gitblit v1.8.0