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