From 9e8a10c4d1e49d250322a9fa533462eef23a598b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 21 Apr 2022 22:41:09 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=95=B4=E5=90=88=20aliyun=20=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E6=9C=8D=E5=8A=A1=20update=20=E8=85=BE=E8=AE=AF?= =?UTF-8?q?=E4=BA=91sdk=E7=89=88=E6=9C=AC=20=E8=A7=A3=E5=86=B3=E4=B8=8Eali?= =?UTF-8?q?yun=E4=BE=9D=E8=B5=96=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ballcat-spring-boot-starter-sms/pom.xml | 8 ++- .../starter/sms/SmsAutoConfiguration.java | 9 +++ .../hccake/starter/sms/SmsSenderParams.java | 11 ++-- .../hccake/starter/sms/SmsSenderResult.java | 13 ++++ .../hccake/starter/sms/enums/TypeEnum.java | 3 + .../starter/sms/impl/AliyunSenderImpl.java | 63 +++++++++++++++++++ .../starter/sms/properties/SmsProperties.java | 8 +++ .../starter/sms/properties/extra/Aliyun.java | 30 +++++++++ 8 files changed, 140 insertions(+), 5 deletions(-) create mode 100644 ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/impl/AliyunSenderImpl.java create mode 100644 ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/properties/extra/Aliyun.java diff --git a/ballcat-starters/ballcat-spring-boot-starter-sms/pom.xml b/ballcat-starters/ballcat-spring-boot-starter-sms/pom.xml index 00d7114f..5e94420d 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-sms/pom.xml +++ b/ballcat-starters/ballcat-spring-boot-starter-sms/pom.xml @@ -40,7 +40,13 @@ com.tencentcloudapi tencentcloud-sdk-java - 3.1.42 + 3.1.270 + + + + com.aliyun + dysmsapi20170525 + 2.0.9 diff --git a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsAutoConfiguration.java b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsAutoConfiguration.java index 9f19c3c8..4ae38e61 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsAutoConfiguration.java +++ b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsAutoConfiguration.java @@ -1,6 +1,7 @@ package com.hccake.starter.sms; import com.fasterxml.jackson.databind.ObjectMapper; +import com.hccake.starter.sms.impl.AliyunSenderImpl; import com.hccake.starter.sms.impl.TencentSenderImpl; import com.hccake.starter.sms.impl.TianYiHongSenderImpl; import com.hccake.starter.sms.properties.SmsProperties; @@ -12,6 +13,7 @@ import org.springframework.context.annotation.Bean; /** * @author lingting 2020/4/26 9:45 + * @author 疯狂的狮子Li 2022-04-21 */ @EnableConfigurationProperties({ SmsProperties.class }) public class SmsAutoConfiguration { @@ -33,4 +35,11 @@ public class SmsAutoConfiguration { return new TianYiHongSenderImpl(properties); } + @Bean + @ConditionalOnMissingBean(SmsSender.class) + @ConditionalOnProperty(name = "ballcat.sms.type", havingValue = "ALIYUN") + public SmsSender aliyunSmsSender(ObjectMapper om) { + return new AliyunSenderImpl(properties, om); + } + } diff --git a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsSenderParams.java b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsSenderParams.java index ac781da5..bd488e15 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsSenderParams.java +++ b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsSenderParams.java @@ -6,13 +6,11 @@ import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; /** * @author lingting 2020/4/26 11:40 + * @author 疯狂的狮子Li 2022-04-21 */ @ToString @Getter @@ -33,6 +31,11 @@ public class SmsSenderParams { */ private List templateParam = new ArrayList<>(); + /** + * 短信模板参数 aliyun专用 + */ + private Map aliyunTemplateParam = new HashMap<>(); + /** * 短信内容 */ diff --git a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsSenderResult.java b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsSenderResult.java index f7c530ff..cd352a05 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsSenderResult.java +++ b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/SmsSenderResult.java @@ -14,6 +14,7 @@ import lombok.experimental.Accessors; * 短信发送结果 * * @author lingting 2020/4/26 13:22 + * @author 疯狂的狮子Li 2022-04-21 */ @Getter @Accessors(chain = true) @@ -121,6 +122,18 @@ public class SmsSenderResult { return result; } + @SneakyThrows + public static SmsSenderResult generateAliyun(String resp, String req, Set phoneNumbers) { + SmsSenderResult result = new SmsSenderResult(); + result.res = resp; + // 没有异常就是成功! + result.success = true; + result.platform = TypeEnum.ALIYUN.name(); + result.target = JsonUtils.toJson(phoneNumbers); + result.req = req; + return result; + } + @SneakyThrows @Override public String toString() { diff --git a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/enums/TypeEnum.java b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/enums/TypeEnum.java index bc7e6df7..2f9579ab 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/enums/TypeEnum.java +++ b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/enums/TypeEnum.java @@ -2,6 +2,7 @@ package com.hccake.starter.sms.enums; /** * @author lingting 2020-08-30 22:20 + * @author 疯狂的狮子Li 2022-04-21 */ public enum TypeEnum { @@ -15,6 +16,8 @@ public enum TypeEnum { TIAN_YI_HONG, + ALIYUN, + ; } diff --git a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/impl/AliyunSenderImpl.java b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/impl/AliyunSenderImpl.java new file mode 100644 index 00000000..7aa0d45e --- /dev/null +++ b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/impl/AliyunSenderImpl.java @@ -0,0 +1,63 @@ +package com.hccake.starter.sms.impl; + +import cn.hutool.core.collection.CollUtil; +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.fasterxml.jackson.databind.ObjectMapper; +import com.hccake.ballcat.common.util.JsonUtils; +import com.hccake.starter.sms.SmsSender; +import com.hccake.starter.sms.SmsSenderParams; +import com.hccake.starter.sms.SmsSenderResult; +import com.hccake.starter.sms.enums.TypeEnum; +import com.hccake.starter.sms.properties.SmsProperties; +import com.hccake.starter.sms.properties.extra.Aliyun; +import lombok.SneakyThrows; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; + +import java.util.*; + +/** + * @author 疯狂的狮子Li 2022-04-21 + */ +@ConditionalOnProperty(name = "ballcat.sms.type", havingValue = "ALIYUN") +public class AliyunSenderImpl extends BaseServiceImpl implements SmsSender { + + private final Client client; + + private final Aliyun aliyun; + + private final ObjectMapper om; + + @SneakyThrows + public AliyunSenderImpl(SmsProperties properties, ObjectMapper om) { + aliyun = properties.getAliyun(); + Config config = new Config() + // 您的AccessKey ID + .setAccessKeyId(aliyun.getAccessKeyId()) + // 您的AccessKey Secret + .setAccessKeySecret(aliyun.getAccessKeySecret()) + // 访问的域名 + .setEndpoint(aliyun.getEndpoint()); + client = new Client(config); + this.om = om; + } + + @Override + public SmsSenderResult send(SmsSenderParams sp) { + try { + SendSmsRequest req = new SendSmsRequest() + .setPhoneNumbers(CollUtil.join(sp.getPhoneNumbers(), ",")) + .setSignName(aliyun.getSignName()) + .setTemplateCode(aliyun.getTemplateId()) + .setTemplateParam(om.writeValueAsString(sp.getAliyunTemplateParam())); + + SendSmsResponse resp = client.sendSms(req); + return SmsSenderResult.generateAliyun(om.writeValueAsString(resp), sp.toString(), sp.getPhoneNumbers()); + } catch (Exception e) { + return errRet(TypeEnum.ALIYUN, sp.getPhoneNumbers(), "阿里云平台发送短信出现异常!", e); + } + } + +} diff --git a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/properties/SmsProperties.java b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/properties/SmsProperties.java index 12370416..3f13a851 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/properties/SmsProperties.java +++ b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/properties/SmsProperties.java @@ -2,6 +2,7 @@ package com.hccake.starter.sms.properties; import com.hccake.starter.sms.enums.TypeEnum; import com.hccake.starter.sms.properties.extra.Account; +import com.hccake.starter.sms.properties.extra.Aliyun; import com.hccake.starter.sms.properties.extra.Tencent; import com.hccake.starter.sms.properties.extra.TianYiHong; import lombok.Data; @@ -12,6 +13,7 @@ import java.util.Map; /** * @author lingting 2020/4/26 9:43 + * @author 疯狂的狮子Li 2022-04-21 */ @Data @ConfigurationProperties(prefix = "ballcat.sms") @@ -54,4 +56,10 @@ public class SmsProperties { @NestedConfigurationProperty private TianYiHong tianYiHong; + /** + * 阿里云所需额外参数 + */ + @NestedConfigurationProperty + private Aliyun aliyun; + } diff --git a/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/properties/extra/Aliyun.java b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/properties/extra/Aliyun.java new file mode 100644 index 00000000..9be5e1be --- /dev/null +++ b/ballcat-starters/ballcat-spring-boot-starter-sms/src/main/java/com/hccake/starter/sms/properties/extra/Aliyun.java @@ -0,0 +1,30 @@ +package com.hccake.starter.sms.properties.extra; + +import lombok.Data; + +/** + * @author 疯狂的狮子Li 2022-04-21 + */ +@Data +public class Aliyun { + + /** + * 配置节点 + */ + private String endpoint = "dysmsapi.aliyuncs.com"; + + private String accessKeyId; + + private String accessKeySecret; + + /* + * 短信签名名称 + */ + private String signName; + + /** + * 短信模板ID + */ + private String templateId; + +} -- Gitee