From 2ba431be9c12a79783e0f9ef249292b7fa95f2a1 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 25 一月 2021 19:13:58 +0800
Subject: [PATCH] 拼多多备案调整

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java |  214 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 132 insertions(+), 82 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..908b11e 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,98 +1,148 @@
 package com.yeshi.fanli.service.impl.user;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
-import javax.annotation.Resource;
-
+import com.yeshi.fanli.dao.mybatis.SMSHistoryMapper;
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.bus.user.SMSHistory;
+import com.yeshi.fanli.exception.config.SMSException;
+import com.yeshi.fanli.service.inter.user.SMSService;
+import com.yeshi.fanli.util.*;
+import net.sf.json.JSONObject;
 import org.springframework.stereotype.Service;
 
-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.service.inter.user.SMSService;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.RedisManager;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.TencentSMSUtil;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Date;
 
 @Service
 public class SMSServiceImpl implements SMSService {
 
-	@Resource
-	private SMSHistoryMapper smsHistoryMapper;
+    @Resource
+    private SMSHistoryMapper smsHistoryMapper;
 
-	@Resource
-	private RedisManager redisManager;
+    @Resource
+    private RedisManager redisManager;
 
-	@Override
-	public String sendLoginVCode(String phone) 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 msg = Constant.smsConfig.getSmsLogin().replace("[绛惧悕]", Constant.smsConfig.getSmsSign()).replace("[楠岃瘉鐮乚",
-				msgCode);
-		// 鍙戦�佺煭淇�
-		TencentSMSUtil.sendSingleMsg(phone, msg);
-		// 缂撳瓨
-		redisManager.sendSms(phone, SMSHistory.TYPE_LOGIN);
-		redisManager.saveSMSVCode(phone, SMSHistory.TYPE_LOGIN, msgCode);
-		SMSHistory smsHistory = new SMSHistory();
-		smsHistory.setContent(msg);
-		smsHistory.setCreateTime(new Date());
-		smsHistory.setPhone(phone);
-		smsHistory.setType(SMSHistory.TYPE_LOGIN);
-		smsHistoryMapper.insertSelective(smsHistory);
-		return msgCode;
-	}
+    @Override
+    public String sendLoginVCode(SystemEnum system, String phone, int codeLength) throws SMSException {
+        boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_LOGIN);
+        if (limit)
+            throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
 
-	@Override
-	public void sendBindVCode(String phone) throws SMSException {
-		boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_BIND);
-		if (limit)
-			throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
-		String msgCode = StringUtil.getRandomCode(6);
-		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);
-	}
+        String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.emptyKey, StringUtil.Md5("sms-login-tencent-latest-" + phone));
 
-	@Override
-	public void sendExtractVCode(String phone) throws SMSException {
-		boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_EXTRACT);
-		if (limit)
-			throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
-		String msgCode = StringUtil.getRandomCode(6);
-		String msg = Constant.smsConfig.getSmsExtract().replace("[绛惧悕]", Constant.smsConfig.getSmsSign())
-				.replace("[楠岃瘉鐮乚", msgCode);
-		// 鍙戦�佺煭淇�
-		TencentSMSUtil.sendSingleMsg(phone, msg);
-		// 缂撳瓨
-		redisManager.sendSms(phone, SMSHistory.TYPE_EXTRACT);
-		redisManager.saveSMSVCode(phone, SMSHistory.TYPE_EXTRACT, msgCode);
-	}
+        String msgCode = StringUtil.getVerifyCode(codeLength);
 
-	@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);
-	}
+        // 楠岃瘉鐮佹ā鏉�
+        String msg = Constant.smsConfig.getSmsLogin().replace("[绛惧悕]", system.getSmsAlias()).replace("[楠岃瘉鐮乚",
+                msgCode);
+        if (Constant.IS_TEST)
+            System.out.println(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);
 
-	@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);
-	}
+        SMSHistory smsHistory = new SMSHistory();
+        smsHistory.setContent(msg);
+        smsHistory.setCreateTime(new Date());
+        smsHistory.setPhone(phone);
+        smsHistory.setType(SMSHistory.TYPE_LOGIN);
+        smsHistoryMapper.insertSelective(smsHistory);
+        return msgCode;
+    }
+
+    @Override
+    public void sendBindVCode(SystemEnum system, String phone, int codeLength) throws SMSException {
+        boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_BIND);
+        if (limit)
+            throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
+        String msgCode = StringUtil.getVerifyCode(codeLength);
+
+        // 楠岃瘉鐮佹ā鏉�
+        String msg = Constant.smsConfig.getSmsBind().replace("[绛惧悕]", system.getSmsAlias()).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
+    public void sendRemoveVCode(SystemEnum system, String phone, int codeLength) throws SMSException {
+        boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_REMVOE);
+        if (limit)
+            throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
+        String msgCode = StringUtil.getVerifyCode(codeLength);
+
+        // 楠岃瘉鐮佹ā鏉�
+        String msg = Constant.smsConfig.getSmsBind().replace("[绛惧悕]", system.getSmsAlias()).replace("[楠岃瘉鐮乚",
+                msgCode);
+        // 鍙戦�佺煭淇�
+        TencentSMSUtil.sendSingleMsg(phone, msg);
+
+        // 缂撳瓨
+        redisManager.sendSms(phone, SMSHistory.TYPE_REMVOE);
+        redisManager.saveSMSVCode(phone, SMSHistory.TYPE_REMVOE, msgCode);
+
+        SMSHistory smsHistory = new SMSHistory();
+        smsHistory.setContent(msg);
+        smsHistory.setCreateTime(new Date());
+        smsHistory.setPhone(phone);
+        smsHistory.setType(SMSHistory.TYPE_REMVOE);
+        smsHistoryMapper.insertSelective(smsHistory);
+    }
+
+    @Override
+    public void sendExtractVCode(SystemEnum system, String phone) throws SMSException {
+        boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_EXTRACT);
+        if (limit)
+            throw new SMSException(1001, "璇疯繃60绉掑啀璇�");
+        String msgCode = StringUtil.getRandomCode(6);
+        String msg = Constant.smsConfig.getSmsExtract().replace("[绛惧悕]", system.getSmsAlias())
+                .replace("[楠岃瘉鐮乚", msgCode);
+        // 鍙戦�佺煭淇�
+        TencentSMSUtil.sendSingleMsg(phone, msg);
+        // 缂撳瓨
+        redisManager.sendSms(phone, SMSHistory.TYPE_EXTRACT);
+        redisManager.saveSMSVCode(phone, SMSHistory.TYPE_EXTRACT, msgCode);
+    }
+
+    @Override
+    public void sendExtractSuccessMsg(SystemEnum system, String phone, BigDecimal money) throws SMSException {
+        String msg = Constant.smsConfig.getSmsExtractSuccess().replace("[绛惧悕]", system.getSmsAlias())
+                .replace("[閲戦]", money.toString());
+        // 鍙戦�佺煭淇�
+        TencentSMSUtil.sendSingleMsg(phone, msg);
+    }
+
+    @Override
+    public void sendExtractFailMsg(SystemEnum system, String phone, BigDecimal money) throws SMSException {
+        String msg = Constant.smsConfig.getSmsExtractFail().replace("[绛惧悕]", system.getSmsAlias())
+                .replace("[閲戦]", money.toString());
+        // 鍙戦�佺煭淇�
+        TencentSMSUtil.sendSingleMsg(phone, msg);
+    }
 
 }

--
Gitblit v1.8.0