diff --git a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/XPluginImpl.java b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/XPluginImpl.java index fea6bb21..e688ae15 100644 --- a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/XPluginImpl.java +++ b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/XPluginImpl.java @@ -1,7 +1,7 @@ package org.dromara.sms4j.solon; -import org.dromara.sms4j.solon.config.SmsAutowiredConfig; -import org.dromara.sms4j.solon.config.SupplierConfig; +import org.dromara.sms4j.solon.configuration.SmsAutowiredConfiguration; +import org.dromara.sms4j.solon.configuration.SupplierConfiguration; import org.noear.solon.core.AppContext; import org.noear.solon.core.Plugin; @@ -11,7 +11,7 @@ import org.noear.solon.core.Plugin; public class XPluginImpl implements Plugin { @Override public void start(AppContext context) { - context.beanMake(SmsAutowiredConfig.class); - context.beanMake(SupplierConfig.class); + context.beanMake(SmsAutowiredConfiguration.class); + context.beanMake(SupplierConfiguration.class); } } diff --git a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsAutowiredConfig.java b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SmsAutowiredConfiguration.java similarity index 92% rename from sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsAutowiredConfig.java rename to sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SmsAutowiredConfiguration.java index 55a5ddfc..f98f428c 100644 --- a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsAutowiredConfig.java +++ b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SmsAutowiredConfiguration.java @@ -1,4 +1,4 @@ -package org.dromara.sms4j.solon.config; +package org.dromara.sms4j.solon.configuration; import lombok.extern.slf4j.Slf4j; import org.dromara.sms4j.comm.constant.Constant; @@ -16,7 +16,7 @@ import java.util.concurrent.Executor; @Slf4j @Configuration -public class SmsAutowiredConfig implements LifecycleBean { +public class SmsAutowiredConfiguration implements LifecycleBean { @Inject AppContext context; diff --git a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsBlendsInitializer.java b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SmsBlendsInitializer.java similarity index 99% rename from sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsBlendsInitializer.java rename to sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SmsBlendsInitializer.java index 86c92d3e..3da0edea 100644 --- a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SmsBlendsInitializer.java +++ b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SmsBlendsInitializer.java @@ -1,4 +1,4 @@ -package org.dromara.sms4j.solon.config; +package org.dromara.sms4j.solon.configuration; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; diff --git a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SupplierConfig.java b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SupplierConfiguration.java similarity index 94% rename from sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SupplierConfig.java rename to sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SupplierConfiguration.java index d39793e4..c6b94cdf 100644 --- a/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/config/SupplierConfig.java +++ b/sms4j-solon-plugin/src/main/java/org/dromara/sms4j/solon/configuration/SupplierConfiguration.java @@ -1,4 +1,4 @@ -package org.dromara.sms4j.solon.config; +package org.dromara.sms4j.solon.configuration; import org.dromara.sms4j.api.SmsBlend; import org.dromara.sms4j.provider.config.SmsConfig; @@ -18,7 +18,7 @@ import java.util.Map; */ @Condition(onProperty = "${sms.configType}=config_file") @Configuration -public class SupplierConfig { +public class SupplierConfiguration { @Inject AppContext context; diff --git a/sms4j-spring-boot-example/src/main/resources/application.yml b/sms4j-spring-boot-example/src/main/resources/application.yml index 8de3c2ac..a7b89ab2 100644 --- a/sms4j-spring-boot-example/src/main/resources/application.yml +++ b/sms4j-spring-boot-example/src/main/resources/application.yml @@ -4,94 +4,114 @@ sms: # 账户上限 account-max: 1 blends: + alibaba: # 阿里短信例子 - ali: - #厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分 - supplier: alibaba - #您的accessKey - access-key-id: 您的accessKey - #您的accessKeySecret - access-key-secret: 您的accessKeySecret - #您的短信签名 - signature: 测试签名 - #模板ID 非必须配置,如果使用sendMessage的快速发送需此配置 - template-id: SMS_272470496 - # 模版名称 - templateName: code - # 腾讯短信例子 - tx: - #厂商标识 - supplier: tencent - #您的accessKey - access-key-id: 您的accessKey - #您的accessKeySecret - access-key-secret: 您的accessKeySecret - #您的短信签名 - signature: 测试签名 - #模板ID - template-id: 1603670 - #您的sdkAppId - sdk-app-id: 1400761645 - # 华为短信例子 - hw: - #厂商标识 - supplier: huawei - #您的accessKey - access-key-id: 您的accessKey - #您的accessKeySecret - access-key-secret: 您的accessKeySecret - #您的短信签名 - signature: 测试签名 - #模板ID - template-id: ac4888205c274b2a8263479b954c1ab5 - # APP接入地址 - url: https://smsapi.cn-north-4.myhuaweicloud.com:443 - # 模版名称 - templateName: code - # 通道号 - sender: 8823040504797 - # 合一短信例子 - uni: - #厂商标识 - supplier: unisms - #您的accessKey - access-key-id: 您的accessKey - #您的短信签名 - signature: 测试签名 - #模板ID - template-id: pub_verif_short - # 模版名称 - templateName: code - # 渠道上限 - maximum: 2 + ali1: + #厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分 + supplier: alibaba + #您的accessKey + access-key-id: 您的accessKey + #您的accessKeySecret + access-key-secret: 您的accessKeySecret + #您的短信签名 + signature: 测试签名 + #模板ID 非必须配置,如果使用sendMessage的快速发送需此配置 + template-id: SMS_272470496 + # 模版名称 + templateName: code + ali2: + #厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分 + supplier: alibaba + #您的accessKey + access-key-id: 您的accessKey + #您的accessKeySecret + access-key-secret: 您的accessKeySecret + #您的短信签名 + signature: 测试签名 + #模板ID 非必须配置,如果使用sendMessage的快速发送需此配置 + template-id: SMS_272470496 + # 模版名称 + templateName: code + # 腾讯短信例子: + tencent: + tx: + #厂商标识 + supplier: tencent + #您的accessKey + access-key-id: 您的accessKey + #您的accessKeySecret + access-key-secret: 您的accessKeySecret + #您的短信签名 + signature: 测试签名 + #模板ID + template-id: 1603670 + #您的sdkAppId + sdk-app-id: 1400761645 + # 华为短信例子 + huawei: + hw: + #厂商标识 + supplier: huawei + #您的accessKey + access-key-id: 您的accessKey + #您的accessKeySecret + access-key-secret: 您的accessKeySecret + #您的短信签名 + signature: 测试签名 + #模板ID + template-id: ac4888205c274b2a8263479b954c1ab5 + # APP接入地址 + url: https://smsapi.cn-north-4.myhuaweicloud.com:443 + # 模版名称 + templateName: code + # 通道号 + sender: 8823040504797 + # 合一短信例子 + unisms: + uni: + #厂商标识 + supplier: unisms + #您的accessKey + access-key-id: 您的accessKey + #您的短信签名 + signature: 测试签名 + #模板ID + template-id: pub_verif_short + # 模版名称 + templateName: code + # 渠道上限 + maximum: 2 lianlu: - supplier: lianlu - templateId: 模板id - appId: 100116 - appKey: d42d7 - mchId: 100 - signName: 【test】 + lianlu: + supplier: lianlu + templateId: 模板id + appId: 100116 + appKey: d42d7 + mchId: 100 + signName: 【test】 cloopen: - # 短信厂商 - supplier: cloopen - base-url: https://app.cloopen.com:8883/2013-12-26 - access-key-id: 你的Access Key - access-key-secret: 你的Access Key Secret - sdkAppId: 你的应用ID - #自定义广州掌骏短信,添加factory全路径。config,factory,SmsImpl复制其他默认实现即可,修改对应的supplier和发送核心逻辑即可 -# zhangjun: -# supplier: zhangjun -# factory: org.dromara.sms4j.example.zhangjun.ZhangJunFactory -# templateId: d2a****777 -# appId: 64c52d2a****77775fe72e3 -# sid: d2a****777 -# url: https://sms.idowe.com/**/**/**/send + cloopen: + # 短信厂商 + supplier: cloopen + base-url: https://app.cloopen.com:8883/2013-12-26 + access-key-id: 你的Access Key + access-key-secret: 你的Access Key Secret + sdkAppId: 你的应用ID + #自定义广州掌骏短信,添加factory全路径。config,factory,SmsImpl复制其他默认实现即可,修改对应的supplier和发送核心逻辑即可 + # zhangjun: + # supplier: zhangjun + # factory: org.dromara.sms4j.example.zhangjun.ZhangJunFactory + # templateId: d2a****777 + # appId: 64c52d2a****77775fe72e3 + # sid: d2a****777 + # url: https://sms.idowe.com/**/**/**/send qiniu: - access-key-id: EQcDflLTCYnU1******CmqIYLhog1lkWHb2 - access-key-secret: NeS2ptvZQoIy*****err2DdLe7wxFfQvji1 - templateId: 1752130****15859456 - signatureId: 175185*****1624960 - templateName: code + qiniu: + access-key-id: EQcDflLTCYnU1******CmqIYLhog1lkWHb2 + access-key-secret: NeS2ptvZQoIy*****err2DdLe7wxFfQvji1 + templateId: 1752130****15859456 + signatureId: 175185*****1624960 + templateName: code sms-oa: config-type: yaml diff --git a/sms4j-spring-boot-example/src/test/java/org/dromara/sms4j/example/Sms4jTest.java b/sms4j-spring-boot-example/src/test/java/org/dromara/sms4j/example/Sms4jTest.java index 70175646..9323ee71 100644 --- a/sms4j-spring-boot-example/src/test/java/org/dromara/sms4j/example/Sms4jTest.java +++ b/sms4j-spring-boot-example/src/test/java/org/dromara/sms4j/example/Sms4jTest.java @@ -26,7 +26,7 @@ class Sms4jTest { /** * 填测试手机号 */ - private static final String PHONE = ""; + private static final String PHONE = "18988889999"; @Test public void byLoadTest() { diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/AbstractMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/AbstractMultiConfig.java new file mode 100644 index 00000000..9ce2e14e --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/AbstractMultiConfig.java @@ -0,0 +1,7 @@ +package org.dromara.sms4j.starter.config; + +import org.dromara.sms4j.provider.config.BaseConfig; + +public abstract class AbstractMultiConfig { + +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/AlibabaMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/AlibabaMultiConfig.java new file mode 100644 index 00000000..279d5fdc --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/AlibabaMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.aliyun.config.AlibabaConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class AlibabaMultiConfig extends AbstractMultiConfig { + Map alibaba; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/CloopenMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/CloopenMultiConfig.java new file mode 100644 index 00000000..d3e79743 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/CloopenMultiConfig.java @@ -0,0 +1,21 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.aliyun.config.AlibabaConfig; +import org.dromara.sms4j.cloopen.config.CloopenConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class CloopenMultiConfig extends AbstractMultiConfig { + Map cloopen; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/CtyunMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/CtyunMultiConfig.java new file mode 100644 index 00000000..91a02fd0 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/CtyunMultiConfig.java @@ -0,0 +1,21 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.aliyun.config.AlibabaConfig; +import org.dromara.sms4j.ctyun.config.CtyunConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class CtyunMultiConfig extends AbstractMultiConfig { + Map ctyun; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/DingzhongMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/DingzhongMultiConfig.java new file mode 100644 index 00000000..1c697db5 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/DingzhongMultiConfig.java @@ -0,0 +1,21 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.aliyun.config.AlibabaConfig; +import org.dromara.sms4j.dingzhong.config.DingZhongConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class DingzhongMultiConfig extends AbstractMultiConfig { + Map dingzhong; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/EmayMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/EmayMultiConfig.java new file mode 100644 index 00000000..a9117fc8 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/EmayMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.emay.config.EmayConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class EmayMultiConfig extends AbstractMultiConfig { + Map emay; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/HuaweiMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/HuaweiMultiConfig.java new file mode 100644 index 00000000..2be9c334 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/HuaweiMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.huawei.config.HuaweiConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class HuaweiMultiConfig extends AbstractMultiConfig { + Map huawei; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/JdcloudMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/JdcloudMultiConfig.java new file mode 100644 index 00000000..72350912 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/JdcloudMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.jdcloud.config.JdCloudConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class JdcloudMultiConfig extends AbstractMultiConfig { + Map jdcloud; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/LianluMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/LianluMultiConfig.java new file mode 100644 index 00000000..29603f5d --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/LianluMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.lianlu.config.LianLuConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class LianluMultiConfig extends AbstractMultiConfig { + Map lianlu; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/MultiAccountConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/MultiAccountConfig.java new file mode 100644 index 00000000..60c50b7e --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/MultiAccountConfig.java @@ -0,0 +1,45 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.aliyun.config.AlibabaConfig; +import org.dromara.sms4j.cloopen.config.CloopenConfig; +import org.dromara.sms4j.ctyun.config.CtyunConfig; +import org.dromara.sms4j.dingzhong.config.DingZhongConfig; +import org.dromara.sms4j.emay.config.EmayConfig; +import org.dromara.sms4j.huawei.config.HuaweiConfig; +import org.dromara.sms4j.jdcloud.config.JdCloudConfig; +import org.dromara.sms4j.lianlu.config.LianLuConfig; +import org.dromara.sms4j.netease.config.NeteaseConfig; +import org.dromara.sms4j.qiniu.config.QiNiuConfig; +import org.dromara.sms4j.tencent.config.TencentConfig; +import org.dromara.sms4j.unisms.config.UniConfig; +import org.dromara.sms4j.yunpian.config.YunpianConfig; +import org.dromara.sms4j.zhutong.config.ZhutongConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class MultiAccountConfig { + + AbstractMultiConfig alibaba; + AbstractMultiConfig cloopen; + AbstractMultiConfig ctyun; + AbstractMultiConfig dingzhong; + AbstractMultiConfig emay; + AbstractMultiConfig huawei; + AbstractMultiConfig jdcloud; + AbstractMultiConfig lianlu; + AbstractMultiConfig netease; + AbstractMultiConfig qiniu; + AbstractMultiConfig tencent; + AbstractMultiConfig unisms; + AbstractMultiConfig yunpian; + AbstractMultiConfig zhutong; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/NeteaseMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/NeteaseMultiConfig.java new file mode 100644 index 00000000..e6a11e3b --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/NeteaseMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.netease.config.NeteaseConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class NeteaseMultiConfig extends AbstractMultiConfig { + Map netease; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/QiniuMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/QiniuMultiConfig.java new file mode 100644 index 00000000..04d1126d --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/QiniuMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.qiniu.config.QiNiuConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class QiniuMultiConfig extends AbstractMultiConfig { + Map qiniu; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/TencentMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/TencentMultiConfig.java new file mode 100644 index 00000000..4f8097bf --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/TencentMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.tencent.config.TencentConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class TencentMultiConfig extends AbstractMultiConfig { + Map tencent; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/UnismsMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/UnismsMultiConfig.java new file mode 100644 index 00000000..f6fa9318 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/UnismsMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.unisms.config.UniConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class UnismsMultiConfig extends AbstractMultiConfig { + Map unisms; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/YunpianMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/YunpianMultiConfig.java new file mode 100644 index 00000000..140d8092 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/YunpianMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.yunpian.config.YunpianConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class YunpianMultiConfig extends AbstractMultiConfig { + Map yunpian; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/ZhutongMultiConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/ZhutongMultiConfig.java new file mode 100644 index 00000000..0bfbdaf7 --- /dev/null +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/ZhutongMultiConfig.java @@ -0,0 +1,20 @@ +package org.dromara.sms4j.starter.config; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.sms4j.zhutong.config.ZhutongConfig; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Map; + +/** + * 此写法主要解决:由于定义抽象的ConfigMap定义,Spring boot 配置文件无法给予友好提示的问题 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ConfigurationProperties("sms.blends") +public class ZhutongMultiConfig extends AbstractMultiConfig { + Map zhutong; +} diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsBlendsInitializer.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SmsBlendsInitializer.java similarity index 99% rename from sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsBlendsInitializer.java rename to sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SmsBlendsInitializer.java index accbb2d9..0190d14a 100644 --- a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsBlendsInitializer.java +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SmsBlendsInitializer.java @@ -1,4 +1,4 @@ -package org.dromara.sms4j.starter.config; +package org.dromara.sms4j.starter.configration; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsMainConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SmsMainConfiguration.java similarity index 94% rename from sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsMainConfig.java rename to sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SmsMainConfiguration.java index 00f5f080..d7e03446 100644 --- a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SmsMainConfig.java +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SmsMainConfiguration.java @@ -1,4 +1,4 @@ -package org.dromara.sms4j.starter.config; +package org.dromara.sms4j.starter.configration; import lombok.Data; import org.dromara.sms4j.comm.constant.Constant; @@ -17,7 +17,7 @@ import org.springframework.core.env.Environment; @Data -public class SmsMainConfig { +public class SmsMainConfiguration { @Bean public SmsSpringUtils smsSpringUtil(DefaultListableBeanFactory defaultListableBeanFactory){ diff --git a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SupplierConfig.java b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SupplierConfiguration.java similarity index 56% rename from sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SupplierConfig.java rename to sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SupplierConfiguration.java index 14722f0d..278a1f4f 100644 --- a/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/config/SupplierConfig.java +++ b/sms4j-spring-boot-starter/src/main/java/org/dromara/sms4j/starter/configration/SupplierConfiguration.java @@ -1,34 +1,57 @@ -package org.dromara.sms4j.starter.config; +package org.dromara.sms4j.starter.configration; +import cn.hutool.core.lang.TypeReference; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import lombok.SneakyThrows; import org.dromara.sms4j.api.SmsBlend; import org.dromara.sms4j.comm.constant.Constant; import org.dromara.sms4j.comm.enumerate.ConfigType; import org.dromara.sms4j.core.datainterface.SmsReadConfig; +import org.dromara.sms4j.provider.config.BaseConfig; import org.dromara.sms4j.provider.config.SmsConfig; import org.dromara.sms4j.provider.factory.BaseProviderFactory; +import org.dromara.sms4j.starter.config.*; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.lang.reflect.Field; +import java.util.*; -public class SupplierConfig { +@EnableConfigurationProperties({AlibabaMultiConfig.class, CloopenMultiConfig.class, CtyunMultiConfig.class, DingzhongMultiConfig.class + , EmayMultiConfig.class, HuaweiMultiConfig.class, JdcloudMultiConfig.class, LianluMultiConfig.class, NeteaseMultiConfig.class + , QiniuMultiConfig.class, TencentMultiConfig.class, UnismsMultiConfig.class, YunpianMultiConfig.class, ZhutongMultiConfig.class}) +public class SupplierConfiguration { - /** - * 注入配置 - */ @Bean - @ConfigurationProperties(prefix = "sms.blends") @ConditionalOnProperty(prefix = "sms", name = "config-type", havingValue = "yaml") - protected Map> blends() { - return new LinkedHashMap<>(); + @SneakyThrows + private Map> blends(List> blends) { + Map> blendsMap = new HashMap<>(); + for (AbstractMultiConfig blend : blends) { + Field[] declaredFields = blend.getClass().getDeclaredFields(); + Optional first = Arrays.stream(declaredFields).filter(field -> field.getType().isAssignableFrom(Map.class)).findFirst(); + if (first.isPresent()) { + Field field = first.get(); + field.setAccessible(Boolean.TRUE); + Map configMap = (Map) field.get(blend); + if (Objects.isNull(configMap)) { + continue; + } + for (String configId : configMap.keySet()) { + BaseConfig config = configMap.get(configId); + //将实体转换为单独属性,兼容原逻辑,更改最小 + Map fieldConfigMap = JSONUtil.parseObj(config).toBean(new TypeReference>() { + }); + blendsMap.put(configId, fieldConfigMap); + } + + } + } + return blendsMap; } @Bean diff --git a/sms4j-spring-boot-starter/src/main/resources/META-INF/spring.factories b/sms4j-spring-boot-starter/src/main/resources/META-INF/spring.factories index 37939e5a..1808b6ec 100644 --- a/sms4j-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/sms4j-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -1,3 +1,3 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - org.dromara.sms4j.starter.config.SmsMainConfig,\ - org.dromara.sms4j.starter.config.SupplierConfig + org.dromara.sms4j.starter.configration.SmsMainConfiguration,\ + org.dromara.sms4j.starter.configration.SupplierConfiguration diff --git a/sms4j-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sms4j-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 1391e279..8f019a6c 100644 --- a/sms4j-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/sms4j-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,2 +1,2 @@ -org.dromara.sms4j.starter.config.SmsMainConfig -org.dromara.sms4j.starter.config.SupplierConfig +org.dromara.sms4j.starter.configration.SmsMainConfiguration +org.dromara.sms4j.starter.configration.SupplierConfiguration