fanli/src/main/java/com/yeshi/fanli/entity/config/SMSConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/util/AliyunSMSUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
fanli/src/main/java/com/yeshi/fanli/entity/config/SMSConfig.java
@@ -25,6 +25,36 @@ private String smsAppKey; @Map("sms_sign") private String smsSign; @Map("sms_aliyun_accesskey_id") private String aliyunAppId; @Map("sms_aliyun_accesskey_secret") private String aliyunAppSecret; @Map("sms_aliyun_login_template_code") private String aliyunLoginTemplatecode;// 阿里云登录验证码模板 public String getAliyunLoginTemplatecode() { return aliyunLoginTemplatecode; } public void setAliyunLoginTemplatecode(String aliyunLoginTemplatecode) { this.aliyunLoginTemplatecode = aliyunLoginTemplatecode; } public String getAliyunAppId() { return aliyunAppId; } public void setAliyunAppId(String aliyunAppId) { this.aliyunAppId = aliyunAppId; } public String getAliyunAppSecret() { return aliyunAppSecret; } public void setAliyunAppSecret(String aliyunAppSecret) { this.aliyunAppSecret = aliyunAppSecret; } public String getSmsExtractSuccess() { return smsExtractSuccess; fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml
@@ -65,7 +65,7 @@ parameterType="java.lang.String"> select <include refid="Base_Column_List" /> from yeshi_ec_taobao_order where to_order_id = #{0} from yeshi_ec_taobao_order where to_order_id = #{0} for update </select> <select id="selectLatestByAuctionId" resultMap="BaseResultMap" parameterType="java.lang.Long"> @@ -79,7 +79,7 @@ parameterType="java.lang.String"> select <include refid="Base_Column_List" /> from yeshi_ec_taobao_order where to_trade_id = #{0} from yeshi_ec_taobao_order where to_trade_id = #{0} for update </select> fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java
@@ -11,10 +11,13 @@ 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.AliyunSMSUtil; 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 net.sf.json.JSONObject; @Service public class SMSServiceImpl implements SMSService { @@ -30,17 +33,27 @@ boolean limit = redisManager.isSmsFrequencyLimit(phone, SMSHistory.TYPE_LOGIN); if (limit) throw new SMSException(1001, "请过60秒再试"); String key = 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分钟内的采用阿里云短信发送 if (StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) { TencentSMSUtil.sendSingleMsg(phone, msg); redisManager.cacheCommonString(key, "1", 120); } else { // 发送阿里云短信 JSONObject data = new JSONObject(); 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()); @@ -56,17 +69,17 @@ if (limit) throw new SMSException(1001, "请过60秒再试"); 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()); fanli/src/main/java/com/yeshi/fanli/util/AliyunSMSUtil.java
New file @@ -0,0 +1,51 @@ package com.yeshi.fanli.util; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import com.yeshi.fanli.exception.SMSException; import net.sf.json.JSONArray; //腾讯短信发送 public class AliyunSMSUtil { /** * 发送单一短信 * * @param phone * @param msg */ public static void sendSingleMsg(String phone, String templateCode, String templateParamJson) throws SMSException { DefaultProfile profile = DefaultProfile.getProfile("default", Constant.smsConfig.getAliyunAppId(), Constant.smsConfig.getAliyunAppSecret()); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); // request.setProtocol(ProtocolType.HTTPS); request.setMethod(MethodType.POST); request.setDomain("dysmsapi.aliyuncs.com"); request.setVersion("2017-05-25"); request.setAction("SendBatchSms"); JSONArray array = new JSONArray(); array.add(phone); request.putQueryParameter("PhoneNumberJson", array.toString()); request.putQueryParameter("SignNameJson", Constant.smsConfig.getSmsSign()); request.putQueryParameter("TemplateCode", templateCode); request.putQueryParameter("TemplateParamJson", templateParamJson); try { CommonResponse response = client.getCommonResponse(request); System.out.println(response.getData()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } } fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java
@@ -336,6 +336,10 @@ else return true; } /** * 设置短信60s倒计时