package com.zbkj.common.utils;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.aliyun.dysmsapi20170525.models.SendBatchSmsResponse;
|
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.zbkj.common.constants.VehicleInfoConstants;
|
import com.zbkj.common.vo.SendSmsVo;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import java.util.*;
|
|
/**
|
* 发送短信工具——阿里云
|
*
|
* @author chenbing
|
* @date 2022/4/26 8:07
|
*/
|
public class SendSmsUtils {
|
|
|
private static final Logger logger = LoggerFactory.getLogger(SendSmsUtils.class);
|
|
|
public static void main(String[] args) throws Exception {
|
// String[] phoneNumbers = {"19821225203","15639016820","17306226976","15364268364","18602130625","15921836387"};
|
String[] phoneNumbers = {"19821225203","15639016820","17306226976","15364268364","15921836387"};
|
for (String phoneNumber : phoneNumbers) {
|
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
Random random = new Random();
|
StringBuilder sb = new StringBuilder(6);
|
|
for (int i = 0; i < 6; i++) {
|
int randomIndex = random.nextInt(characters.length());
|
char randomChar = characters.charAt(randomIndex);
|
sb.append(randomChar);
|
}
|
sendSms(phoneNumber,sb.toString());
|
Thread.sleep(2000);
|
}
|
}
|
|
private static void sendSms(String phoneNumber,String code) throws Exception {
|
SendSmsVo sendSmsVo = new SendSmsVo();
|
sendSmsVo.setAccessKeyIdSms("LTAI5tJ7Rq5y2BxVe6bJDcRH");
|
sendSmsVo.setAccessKeySecretSms("4TsClsbjma4lekYiH3KHS7CcLpdHoC");
|
sendSmsVo.setTemplateParam(JSONObject.toJSONString(saveSuccess_Link(code)));
|
sendSmsVo.setSignName(VehicleInfoConstants.SEND_SMS_OF_SIGN_NAME);
|
// sendSmsVo.setTempLateCode("SMS_490825093");
|
sendSmsVo.setTempLateCode("SMS_490635088");
|
sendSmsVo.setPhoneNumber(phoneNumber);
|
SendSmsUtils.sendSms(sendSmsVo);
|
}
|
|
private static HashMap<String,Object> saveSuccess_Link(String code){
|
HashMap<String, Object> justPram = new HashMap<>();
|
justPram.put("preNumber", "12");
|
justPram.put("carNumber", "6");
|
// justPram.put("code", code);
|
justPram.put("time", DateUtil.nowDateTime("yyyy-MM-dd HH:mm:ss"));
|
return justPram;
|
}
|
|
private static HashMap<String,Object> call_Link(String code){
|
HashMap<String, Object> justPram = new HashMap<>();
|
justPram.put("areaName", "东厂区-高压");
|
// justPram.put("code",code);
|
return justPram;
|
}
|
|
/**
|
* 使用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);
|
// 短信发送访问域名 Send SMS to access domain name "dysmsapi.aliyuncs.com"
|
config.endpoint = VehicleInfoConstants.SEND_SMS_TO_ACCESS_DOMAIN_NAME;
|
return new com.aliyun.dysmsapi20170525.Client(config);
|
}
|
|
/**
|
* @Description:发送短信
|
* @author:chenbing
|
* @date 2023/1/4 10:13
|
*/
|
public static Boolean sendSms(SendSmsVo sendSmsVo) throws Exception {
|
com.aliyun.dysmsapi20170525.Client client = SendSmsUtils.createClient(sendSmsVo.getAccessKeyIdSms(), sendSmsVo.getAccessKeySecretSms());
|
SendSmsRequest sendSmsRequest = new SendSmsRequest()
|
.setPhoneNumbers(sendSmsVo.getPhoneNumber())
|
.setSignName(sendSmsVo.getSignName())
|
.setTemplateCode(sendSmsVo.getTempLateCode())
|
.setTemplateParam(sendSmsVo.getTemplateParam());
|
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
|
logger.info("开始发送短信......");
|
try {
|
// 复制代码运行请自行打印 API 的返回值
|
SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
|
String code = sendSmsResponse.getBody().getCode();
|
logger.info("code--->{}", code);
|
Map<String, String> headers = sendSmsResponse.getHeaders();
|
logger.info("==========发送短信headers=========\n" + headers);
|
if (!com.aliyun.teautil.Common.equalString(code, "OK")) {
|
logger.info("发送失败......");
|
logger.info("错误信息: {}", sendSmsResponse.body.message + "");
|
return false;
|
}
|
logger.info("发送成功......");
|
} catch (TeaException error) {
|
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
|
// 错误 message
|
System.out.println(error.getMessage());
|
// 诊断地址
|
System.out.println(error.getData().get("Recommend"));
|
com.aliyun.teautil.Common.assertAsString(error.message);
|
} catch (Exception _error) {
|
TeaException error = new TeaException(_error.getMessage(), _error);
|
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
|
// 错误 message
|
System.out.println(error.getMessage());
|
// 诊断地址
|
System.out.println(error.getData().get("Recommend"));
|
com.aliyun.teautil.Common.assertAsString(error.message);
|
}
|
return true;
|
}
|
|
/**
|
* @Description:批量发送短信
|
* @author:chenbing
|
* @date 2023/4/14 11:21
|
*/
|
public static Boolean sendSmsList(SendSmsVo sendSmsVo) throws Exception {
|
System.getProperties().clear();
|
com.aliyun.dysmsapi20170525.Client client = SendSmsUtils.createClient(sendSmsVo.getAccessKeyIdSms(), sendSmsVo.getAccessKeySecretSms());
|
List<String> phones = Arrays.asList(sendSmsVo.getPhoneNumber().split(","));
|
List<String> sginNames = new ArrayList<>();
|
List<String> templates = new ArrayList<>();
|
for (String phone : phones) {
|
sginNames.add(sendSmsVo.getSignName());
|
templates.add(sendSmsVo.getTemplateParam());
|
}
|
com.aliyun.dysmsapi20170525.models.SendBatchSmsRequest sendBatchSmsRequest = new com.aliyun.dysmsapi20170525.models.SendBatchSmsRequest()
|
.setTemplateCode(sendSmsVo.getTempLateCode())
|
.setPhoneNumberJson(JSONObject.toJSONString(phones))
|
.setSignNameJson(JSONObject.toJSONString(sginNames))
|
.setTemplateParamJson(JSONObject.toJSONString(templates));
|
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
|
try {
|
// 复制代码运行请自行打印 API 的返回值
|
SendBatchSmsResponse sendBatchSmsResponse = client.sendBatchSmsWithOptions(sendBatchSmsRequest, runtime);
|
String code = sendBatchSmsResponse.getBody().getCode();
|
logger.info("code--->{}", code);
|
Map<String, String> headers = sendBatchSmsResponse.getHeaders();
|
logger.info("==========批量发送短信headers=========\n" + headers);
|
if (!com.aliyun.teautil.Common.equalString(code, "OK")) {
|
logger.info("发送失败......");
|
logger.info("错误信息: {}", sendBatchSmsResponse.body.message + "");
|
return false;
|
}
|
logger.info("发送成功......");
|
} catch (TeaException error) {
|
// 如有需要,请打印 error
|
com.aliyun.teautil.Common.assertAsString(error.message);
|
} catch (Exception _error) {
|
TeaException error = new TeaException(_error.getMessage(), _error);
|
// 如有需要,请打印 error
|
com.aliyun.teautil.Common.assertAsString(error.message);
|
}
|
return true;
|
}
|
}
|