package com.dl.sms.core; import com.aliyun.dysmsapi20170525.Client; import com.aliyun.dysmsapi20170525.models.SendSmsRequest; import com.aliyun.dysmsapi20170525.models.SendSmsResponse; import com.aliyun.teaopenapi.models.Config; import com.dl.common.utils.JsonUtils; import com.dl.common.utils.StringUtils; import com.dl.sms.config.properties.SmsProperties; import com.dl.sms.entity.SmsResult; import com.dl.sms.exception.SmsException; import lombok.SneakyThrows; import java.util.Map; /** * Aliyun 短信模板 * * @author Lion Li * @version 4.2.0 */ public class AliyunSmsTemplate implements SmsTemplate { private SmsProperties properties; private Client client; @SneakyThrows(Exception.class) public AliyunSmsTemplate(SmsProperties smsProperties) { this.properties = smsProperties; Config config = new Config() // 您的AccessKey ID .setAccessKeyId(smsProperties.getAccessKeyId()) // 您的AccessKey Secret .setAccessKeySecret(smsProperties.getAccessKeySecret()) // 访问的域名 .setEndpoint(smsProperties.getEndpoint()); this.client = new Client(config); } @Override public SmsResult send(String phones, String templateId, Map param) { if (StringUtils.isBlank(phones)) { throw new SmsException("手机号不能为空"); } if (StringUtils.isBlank(templateId)) { throw new SmsException("模板ID不能为空"); } SendSmsRequest req = new SendSmsRequest() .setPhoneNumbers(phones) .setSignName(properties.getSignName()) .setTemplateCode(templateId) .setTemplateParam(JsonUtils.toJsonString(param)); try { SendSmsResponse resp = client.sendSms(req); return SmsResult.builder() .isSuccess("OK".equals(resp.getBody().getCode())) .message(resp.getBody().getMessage()) .response(JsonUtils.toJsonString(resp)) .build(); } catch (Exception e) { throw new SmsException(e.getMessage()); } } }