admin
2019-04-15 eccfb59bb0347731afdaf71b3422848649e44b26
阿里云短信发送添加
4个文件已修改
1个文件已添加
114 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/entity/config/SMSConfig.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SMSServiceImpl.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/AliyunSMSUtil.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java 4 ●●●● 补丁 | 查看 | 原始文档 | 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倒计时