package com.matrix.core.tools; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.aliyuncs.CommonRequest; 
 | 
import com.aliyuncs.CommonResponse; 
 | 
import com.aliyuncs.IAcsClient; 
 | 
import com.aliyuncs.exceptions.ClientException; 
 | 
import com.aliyuncs.http.MethodType; 
 | 
import com.google.gson.JsonObject; 
 | 
import com.matrix.config.properties.AliSmsProperties; 
 | 
import com.matrix.core.exception.GlobleException; 
 | 
import com.matrix.system.hive.bean.SysSmsTemplate; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Component; 
 | 
  
 | 
import javax.annotation.Resource; 
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * @Author wzy 
 | 
 * @Date 2020/3/15 
 | 
 * @email wangdoubleone@gmail.com 
 | 
 * @Version V1.0 
 | 
 **/ 
 | 
@Component 
 | 
public class SmsUtils { 
 | 
  
 | 
//    private static AliSmsProperties aliSmsProperties = WebUtil.getApplicationContext().getBean(AliSmsProperties.class); 
 | 
  
 | 
    @Autowired 
 | 
    private IAcsClient iAcsClient; 
 | 
  
 | 
    @Resource 
 | 
    private AliSmsProperties aliSmsProperties; 
 | 
  
 | 
    private CommonRequest commonRequest(String action) { 
 | 
        CommonRequest request = new CommonRequest(); 
 | 
        request.setMethod(MethodType.POST); 
 | 
        request.setDomain("dysmsapi.aliyuncs.com"); 
 | 
        request.setVersion("2017-05-25"); 
 | 
        request.setAction(action); 
 | 
        request.putQueryParameter("SignName", aliSmsProperties.getSignName()); 
 | 
        return request; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 发送短信,带变量参数 
 | 
     * 
 | 
     * @param phoneNum     手机号 
 | 
     * @param templateCode 短信模板编号 
 | 
     * @param values       变量参数 
 | 
     */ 
 | 
    public void sendSms(String phoneNum, String templateCode, Map<String, String> values) { 
 | 
        CommonRequest request = commonRequest(SysSmsTemplate.SMS_ACTION_SEND); 
 | 
        request.putQueryParameter("PhoneNumbers", phoneNum); 
 | 
        request.putQueryParameter("TemplateCode", templateCode); 
 | 
        String jsonStr = JSONObject.toJSONString(values); 
 | 
        request.putQueryParameter("TemplateParam", jsonStr); 
 | 
  
 | 
        CommonResponse response = null; 
 | 
        try { 
 | 
            response = iAcsClient.getCommonResponse(request); 
 | 
            LogUtil.info("ali api result:{}", response.getData()); 
 | 
        } catch (ClientException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        System.out.println(response.getData()); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 批量发送短信消息,并没有变量参数 
 | 
     * 
 | 
     * @param phoneNums    手机号,多个逗号隔开,最多批量1000 
 | 
     * @param templateCode 短信模板编号 
 | 
     */ 
 | 
    public String sendBatchSms(String phoneNums, String templateCode) { 
 | 
        CommonRequest request = commonRequest(SysSmsTemplate.SMS_ACTION_SEND); 
 | 
        request.putQueryParameter("PhoneNumbers", phoneNums); 
 | 
        request.putQueryParameter("TemplateCode", templateCode); 
 | 
  
 | 
        CommonResponse response = null; 
 | 
        try { 
 | 
            response = iAcsClient.getCommonResponse(request); 
 | 
            LogUtil.info("ali api result:{}", response.getData()); 
 | 
        } catch (ClientException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
  
 | 
        JSONObject result = JSON.parseObject(response.getData()); 
 | 
        if ("OK".equals(result.getString("Code"))) { 
 | 
            return result.getString("Code"); 
 | 
        } else { 
 | 
            throw new GlobleException(result.getString("Message")); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 添加阿里短信模板 
 | 
     * 
 | 
     * @param type    类型 0:验证码 1:短信通知 2:推广短信 3:国际/港澳台消息 
 | 
     * @param name    短信模板名称 
 | 
     * @param content 短信模板内容 
 | 
     * @param remark  短信模板申请说明 
 | 
     */ 
 | 
    public String addSmsTemplate(String type, String name, String content, String remark) { 
 | 
        CommonRequest request = commonRequest(SysSmsTemplate.SMS_ACTION_ADD); 
 | 
        request.putQueryParameter("TemplateType", type); 
 | 
        request.putQueryParameter("TemplateName", name); 
 | 
        request.putQueryParameter("TemplateContent", content); 
 | 
        request.putQueryParameter("Remark", remark); 
 | 
        CommonResponse response = null; 
 | 
        try { 
 | 
            response = iAcsClient.getCommonResponse(request); 
 | 
        } catch (ClientException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
  
 | 
        JSONObject result = JSON.parseObject(response.getData()); 
 | 
        LogUtil.info("ali api result:{}", response.getData()); 
 | 
        if ("OK".equals(result.get("Code"))) { 
 | 
            return result.get("TemplateCode").toString(); 
 | 
        } else { 
 | 
            throw new GlobleException(result.get("Message").toString()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询阿里短信模板 
 | 
     * 
 | 
     * @param code 短信模板code 
 | 
     */ 
 | 
    public String querySmsTemplate(String code) { 
 | 
        CommonRequest request = commonRequest(SysSmsTemplate.SMS_ACTION_QUERY); 
 | 
        request.putQueryParameter("TemplateCode", code); 
 | 
  
 | 
        CommonResponse response = null; 
 | 
        try { 
 | 
            response = iAcsClient.getCommonResponse(request); 
 | 
            LogUtil.info("ali api result:{}", response.getData()); 
 | 
        } catch (ClientException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return response.getData(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除阿里信息模板 
 | 
     * 
 | 
     * @param code 短信模板code 
 | 
     */ 
 | 
    public String deleteSmsTemplate(String code) { 
 | 
        CommonRequest request = commonRequest(SysSmsTemplate.SMS_ACTION_DELETE); 
 | 
        request.putQueryParameter("TemplateCode", code); 
 | 
  
 | 
        CommonResponse response = null; 
 | 
        try { 
 | 
            response = iAcsClient.getCommonResponse(request); 
 | 
        } catch (ClientException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        LogUtil.info("ali api result:{}", response.getData()); 
 | 
        JSONObject result = JSON.parseObject(response.getData()); 
 | 
        if ("OK".equals(result.get("Code"))) { 
 | 
            return result.get("Code").toString(); 
 | 
        } else { 
 | 
            throw new GlobleException(result.get("Message").toString()); 
 | 
        } 
 | 
    } 
 | 
} 
 |