package com.farriver.bwf.service.system; import com.aliyun.dysmsapi20170525.models.*; import com.aliyun.teaopenapi.models.Config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Service; import java.util.Random; @Service @Configuration @ConfigurationProperties("sms") public class SystemAliyunSMSService { private static final Logger logger = LoggerFactory.getLogger(SystemAliyunSMSService.class); private String accessKeyId = "LTAI5tMF7AFYuMpC2piqp37y"; private String accessKeySecret = "1VzzREEmzMf6qdOykJdZ6v9riZpNvx"; private String product = "Dysmsapi"; private String domain = "dysmsapi.aliyuncs.com"; private String signName = "远江智工"; private String templateCode = "SMS_232495027"; public static String getRandomCode() { int n = 6; StringBuilder code = new StringBuilder(); Random ran = new Random(); for (int i = 0; i < n; i++) { code.append(Integer.valueOf(ran.nextInt(10)).toString()); } return code.toString(); } public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception { Config config = new Config(); config.accessKeyId = accessKeyId; config.accessKeySecret = accessKeySecret; return new com.aliyun.dysmsapi20170525.Client(config); } public void sendSms(String phoneNumbers, String randomCode) throws Exception { com.aliyun.dysmsapi20170525.Client client = createClient(accessKeyId, accessKeySecret); String message = "{'code':" + randomCode + "}"; // 1.发送短信 SendSmsRequest sendReq = new SendSmsRequest() .setPhoneNumbers(phoneNumbers) .setSignName(signName) .setTemplateCode(templateCode) .setTemplateParam(message); SendSmsResponse sendResp = client.sendSms(sendReq); String code = sendResp.body.code; if (!com.aliyun.teautil.Common.equalString(code, "OK")) { logger.error("错误信息: " + sendResp.body.message + ""); return; } String bizId = sendResp.body.bizId; // 2. 等待 10 秒后查询结果 com.aliyun.teautil.Common.sleep(10000); // 3.查询结果 java.util.List phoneNums = com.aliyun.darabonbastring.Client.split(phoneNumbers, ",", -1); for (String phoneNum : phoneNums) { QuerySendDetailsRequest queryReq = new QuerySendDetailsRequest() .setPhoneNumber(com.aliyun.teautil.Common.assertAsString(phoneNum)) .setBizId(bizId) .setSendDate(com.aliyun.darabonbatime.Client.format("yyyyMMdd")) .setPageSize(10L) .setCurrentPage(1L); QuerySendDetailsResponse queryResp = client.querySendDetails(queryReq); java.util.List dtos = queryResp.body.smsSendDetailDTOs.smsSendDetailDTO; // 打印结果 for (QuerySendDetailsResponseBody.QuerySendDetailsResponseBodySmsSendDetailDTOsSmsSendDetailDTO dto : dtos) { if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "3")) { logger.info("" + dto.phoneNum + " 发送成功,接收时间: " + dto.receiveDate + ""); } else if (com.aliyun.teautil.Common.equalString("" + dto.sendStatus + "", "2")) { logger.error("" + dto.phoneNum + " 发送失败"); } else { logger.error("" + dto.phoneNum + " 正在发送中..."); } } } } public static void main(String[] args) { try { SystemAliyunSMSService SystemAliyunSMSService = new SystemAliyunSMSService(); SystemAliyunSMSService.sendSms("18222052509", SystemAliyunSMSService.getRandomCode()); logger.info("Completed!"); } catch (Exception e) { logger.error(e.getMessage(), e); } } }