| 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()); | 
|         } | 
|     } | 
| } |