package com.ruoyi.web.controller.tool;
|
|
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
|
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
|
import com.aliyun.tea.TeaException;
|
import com.aliyun.teaopenapi.models.Config;
|
import com.aliyun.teautil.models.RuntimeOptions;
|
import com.ruoyi.system.model.TSysMessageConfig;
|
import com.ruoyi.system.service.TSysMessageConfigService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.Map;
|
|
@Component
|
@Slf4j
|
public class MsgUtils {
|
|
@Autowired
|
private TSysMessageConfigService messageConfigService;
|
|
/**
|
* 使用AK&SK初始化账号Client
|
* @param accessKeyId
|
* @param accessKeySecret
|
* @return Client
|
* @throws Exception
|
*/
|
public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
|
Config config = new Config()
|
// 您的 AccessKey ID
|
.setAccessKeyId(accessKeyId)
|
// 您的 AccessKey Secret
|
.setAccessKeySecret(accessKeySecret);
|
// 访问的域名
|
config.endpoint = "dysmsapi.aliyuncs.com";
|
return new com.aliyun.dysmsapi20170525.Client(config);
|
}
|
|
public void sendMsg(String phone, Map<String,String> params, String templateCode) throws Exception {
|
TSysMessageConfig sysMessageConfig = messageConfigService.getById(1);
|
com.aliyun.dysmsapi20170525.Client client = MsgUtils.createClient(sysMessageConfig.getAccessKeyId(),sysMessageConfig.getAccessKeySecret());
|
SendSmsRequest sendSmsRequest = new SendSmsRequest()
|
.setSignName(sysMessageConfig.getSignName())
|
.setTemplateCode(templateCode)
|
.setPhoneNumbers(phone);
|
if(!CollectionUtils.isEmpty(params)){
|
StringBuilder builder = new StringBuilder();
|
params.forEach((key,value)->{
|
builder.append("\""+key+"\":\""+value+"\"");
|
builder.append(",");
|
});
|
builder.deleteCharAt(builder.length()-1);
|
sendSmsRequest.setTemplateParam("{"+builder.toString()+"}");
|
}
|
RuntimeOptions runtime = new RuntimeOptions();
|
try {
|
// 复制代码运行请自行打印 API 的返回值
|
SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
|
log.info("短信发送成功:{},{}",sendSmsResponse.getBody().getMessage(),sendSmsResponse.getStatusCode());
|
} catch (TeaException error) {
|
// 如有需要,请打印 error
|
com.aliyun.teautil.Common.assertAsString(error.message);
|
log.info("短信发送失败:{}",error.message);
|
} catch (Exception _error) {
|
TeaException error = new TeaException(_error.getMessage(), _error);
|
// 如有需要,请打印 error
|
com.aliyun.teautil.Common.assertAsString(error.message);
|
log.info("短信发送失败:{}",error.message);
|
}
|
}
|
|
}
|