mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-07 09:29:08 +08:00
1.修改名称,区分配置类和配置项
2.修复,各厂商配置差异,原方案无法很好的提供配置提示的问题 3.优化后,用户可自行写自己的配置,并加载到Spring 容器中,具体写法参考AbstractMultiConfig, 内部可自动加载用户定义的配置,且用户配置也可以自动提示
This commit is contained in:
parent
5cca342043
commit
fc3cbc9e2f
@ -1,7 +1,7 @@
|
|||||||
package org.dromara.sms4j.solon;
|
package org.dromara.sms4j.solon;
|
||||||
|
|
||||||
import org.dromara.sms4j.solon.config.SmsAutowiredConfig;
|
import org.dromara.sms4j.solon.configuration.SmsAutowiredConfiguration;
|
||||||
import org.dromara.sms4j.solon.config.SupplierConfig;
|
import org.dromara.sms4j.solon.configuration.SupplierConfiguration;
|
||||||
import org.noear.solon.core.AppContext;
|
import org.noear.solon.core.AppContext;
|
||||||
import org.noear.solon.core.Plugin;
|
import org.noear.solon.core.Plugin;
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ import org.noear.solon.core.Plugin;
|
|||||||
public class XPluginImpl implements Plugin {
|
public class XPluginImpl implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public void start(AppContext context) {
|
public void start(AppContext context) {
|
||||||
context.beanMake(SmsAutowiredConfig.class);
|
context.beanMake(SmsAutowiredConfiguration.class);
|
||||||
context.beanMake(SupplierConfig.class);
|
context.beanMake(SupplierConfiguration.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package org.dromara.sms4j.solon.config;
|
package org.dromara.sms4j.solon.configuration;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.sms4j.comm.constant.Constant;
|
import org.dromara.sms4j.comm.constant.Constant;
|
||||||
@ -16,7 +16,7 @@ import java.util.concurrent.Executor;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Configuration
|
@Configuration
|
||||||
public class SmsAutowiredConfig implements LifecycleBean {
|
public class SmsAutowiredConfiguration implements LifecycleBean {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
AppContext context;
|
AppContext context;
|
||||||
@ -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.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
@ -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.api.SmsBlend;
|
||||||
import org.dromara.sms4j.provider.config.SmsConfig;
|
import org.dromara.sms4j.provider.config.SmsConfig;
|
||||||
@ -18,7 +18,7 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
@Condition(onProperty = "${sms.configType}=config_file")
|
@Condition(onProperty = "${sms.configType}=config_file")
|
||||||
@Configuration
|
@Configuration
|
||||||
public class SupplierConfig {
|
public class SupplierConfiguration {
|
||||||
@Inject
|
@Inject
|
||||||
AppContext context;
|
AppContext context;
|
||||||
|
|
||||||
@ -4,8 +4,9 @@ sms:
|
|||||||
# 账户上限
|
# 账户上限
|
||||||
account-max: 1
|
account-max: 1
|
||||||
blends:
|
blends:
|
||||||
|
alibaba:
|
||||||
# 阿里短信例子
|
# 阿里短信例子
|
||||||
ali:
|
ali1:
|
||||||
#厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
|
#厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
|
||||||
supplier: alibaba
|
supplier: alibaba
|
||||||
#您的accessKey
|
#您的accessKey
|
||||||
@ -18,7 +19,21 @@ sms:
|
|||||||
template-id: SMS_272470496
|
template-id: SMS_272470496
|
||||||
# 模版名称
|
# 模版名称
|
||||||
templateName: code
|
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:
|
tx:
|
||||||
#厂商标识
|
#厂商标识
|
||||||
supplier: tencent
|
supplier: tencent
|
||||||
@ -33,6 +48,7 @@ sms:
|
|||||||
#您的sdkAppId
|
#您的sdkAppId
|
||||||
sdk-app-id: 1400761645
|
sdk-app-id: 1400761645
|
||||||
# 华为短信例子
|
# 华为短信例子
|
||||||
|
huawei:
|
||||||
hw:
|
hw:
|
||||||
#厂商标识
|
#厂商标识
|
||||||
supplier: huawei
|
supplier: huawei
|
||||||
@ -51,6 +67,7 @@ sms:
|
|||||||
# 通道号
|
# 通道号
|
||||||
sender: 8823040504797
|
sender: 8823040504797
|
||||||
# 合一短信例子
|
# 合一短信例子
|
||||||
|
unisms:
|
||||||
uni:
|
uni:
|
||||||
#厂商标识
|
#厂商标识
|
||||||
supplier: unisms
|
supplier: unisms
|
||||||
@ -64,6 +81,7 @@ sms:
|
|||||||
templateName: code
|
templateName: code
|
||||||
# 渠道上限
|
# 渠道上限
|
||||||
maximum: 2
|
maximum: 2
|
||||||
|
lianlu:
|
||||||
lianlu:
|
lianlu:
|
||||||
supplier: lianlu
|
supplier: lianlu
|
||||||
templateId: 模板id
|
templateId: 模板id
|
||||||
@ -71,6 +89,7 @@ sms:
|
|||||||
appKey: d42d7
|
appKey: d42d7
|
||||||
mchId: 100
|
mchId: 100
|
||||||
signName: 【test】
|
signName: 【test】
|
||||||
|
cloopen:
|
||||||
cloopen:
|
cloopen:
|
||||||
# 短信厂商
|
# 短信厂商
|
||||||
supplier: cloopen
|
supplier: cloopen
|
||||||
@ -86,6 +105,7 @@ sms:
|
|||||||
# appId: 64c52d2a****77775fe72e3
|
# appId: 64c52d2a****77775fe72e3
|
||||||
# sid: d2a****777
|
# sid: d2a****777
|
||||||
# url: https://sms.idowe.com/**/**/**/send
|
# url: https://sms.idowe.com/**/**/**/send
|
||||||
|
qiniu:
|
||||||
qiniu:
|
qiniu:
|
||||||
access-key-id: EQcDflLTCYnU1******CmqIYLhog1lkWHb2
|
access-key-id: EQcDflLTCYnU1******CmqIYLhog1lkWHb2
|
||||||
access-key-secret: NeS2ptvZQoIy*****err2DdLe7wxFfQvji1
|
access-key-secret: NeS2ptvZQoIy*****err2DdLe7wxFfQvji1
|
||||||
|
|||||||
@ -26,7 +26,7 @@ class Sms4jTest {
|
|||||||
/**
|
/**
|
||||||
* 填测试手机号
|
* 填测试手机号
|
||||||
*/
|
*/
|
||||||
private static final String PHONE = "";
|
private static final String PHONE = "18988889999";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void byLoadTest() {
|
public void byLoadTest() {
|
||||||
|
|||||||
@ -0,0 +1,7 @@
|
|||||||
|
package org.dromara.sms4j.starter.config;
|
||||||
|
|
||||||
|
import org.dromara.sms4j.provider.config.BaseConfig;
|
||||||
|
|
||||||
|
public abstract class AbstractMultiConfig<T extends BaseConfig> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -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<AlibabaConfig> {
|
||||||
|
Map<String, AlibabaConfig> alibaba;
|
||||||
|
}
|
||||||
@ -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<AlibabaConfig> {
|
||||||
|
Map<String, CloopenConfig> cloopen;
|
||||||
|
}
|
||||||
@ -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<AlibabaConfig> {
|
||||||
|
Map<String, CtyunConfig> ctyun;
|
||||||
|
}
|
||||||
@ -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<AlibabaConfig> {
|
||||||
|
Map<String, DingZhongConfig> dingzhong;
|
||||||
|
}
|
||||||
@ -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<EmayConfig> {
|
||||||
|
Map<String, EmayConfig> emay;
|
||||||
|
}
|
||||||
@ -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<HuaweiConfig> {
|
||||||
|
Map<String, HuaweiConfig> huawei;
|
||||||
|
}
|
||||||
@ -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<JdCloudConfig> {
|
||||||
|
Map<String, JdCloudConfig> jdcloud;
|
||||||
|
}
|
||||||
@ -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<LianLuConfig> {
|
||||||
|
Map<String, LianLuConfig> lianlu;
|
||||||
|
}
|
||||||
@ -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<AlibabaConfig> alibaba;
|
||||||
|
AbstractMultiConfig<CloopenConfig> cloopen;
|
||||||
|
AbstractMultiConfig<CtyunConfig> ctyun;
|
||||||
|
AbstractMultiConfig<DingZhongConfig> dingzhong;
|
||||||
|
AbstractMultiConfig<EmayConfig> emay;
|
||||||
|
AbstractMultiConfig<HuaweiConfig> huawei;
|
||||||
|
AbstractMultiConfig<JdCloudConfig> jdcloud;
|
||||||
|
AbstractMultiConfig<LianLuConfig> lianlu;
|
||||||
|
AbstractMultiConfig<NeteaseConfig> netease;
|
||||||
|
AbstractMultiConfig<QiNiuConfig> qiniu;
|
||||||
|
AbstractMultiConfig<TencentConfig> tencent;
|
||||||
|
AbstractMultiConfig<UniConfig> unisms;
|
||||||
|
AbstractMultiConfig<YunpianConfig> yunpian;
|
||||||
|
AbstractMultiConfig<ZhutongConfig> zhutong;
|
||||||
|
}
|
||||||
@ -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<NeteaseConfig> {
|
||||||
|
Map<String, NeteaseConfig> netease;
|
||||||
|
}
|
||||||
@ -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<QiNiuConfig> {
|
||||||
|
Map<String, QiNiuConfig> qiniu;
|
||||||
|
}
|
||||||
@ -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<TencentConfig> {
|
||||||
|
Map<String, TencentConfig> tencent;
|
||||||
|
}
|
||||||
@ -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<UniConfig> {
|
||||||
|
Map<String, UniConfig> unisms;
|
||||||
|
}
|
||||||
@ -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<YunpianConfig> {
|
||||||
|
Map<String, YunpianConfig> yunpian;
|
||||||
|
}
|
||||||
@ -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<ZhutongConfig> {
|
||||||
|
Map<String, ZhutongConfig> zhutong;
|
||||||
|
}
|
||||||
@ -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.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.dromara.sms4j.starter.config;
|
package org.dromara.sms4j.starter.configration;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.dromara.sms4j.comm.constant.Constant;
|
import org.dromara.sms4j.comm.constant.Constant;
|
||||||
@ -17,7 +17,7 @@ import org.springframework.core.env.Environment;
|
|||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class SmsMainConfig {
|
public class SmsMainConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public SmsSpringUtils smsSpringUtil(DefaultListableBeanFactory defaultListableBeanFactory){
|
public SmsSpringUtils smsSpringUtil(DefaultListableBeanFactory defaultListableBeanFactory){
|
||||||
@ -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.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import org.dromara.sms4j.api.SmsBlend;
|
import org.dromara.sms4j.api.SmsBlend;
|
||||||
import org.dromara.sms4j.comm.constant.Constant;
|
import org.dromara.sms4j.comm.constant.Constant;
|
||||||
import org.dromara.sms4j.comm.enumerate.ConfigType;
|
import org.dromara.sms4j.comm.enumerate.ConfigType;
|
||||||
import org.dromara.sms4j.core.datainterface.SmsReadConfig;
|
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.config.SmsConfig;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
||||||
|
import org.dromara.sms4j.starter.config.*;
|
||||||
import org.springframework.beans.factory.ObjectProvider;
|
import org.springframework.beans.factory.ObjectProvider;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
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 org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.lang.reflect.Field;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
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
|
@Bean
|
||||||
@ConfigurationProperties(prefix = "sms.blends")
|
|
||||||
@ConditionalOnProperty(prefix = "sms", name = "config-type", havingValue = "yaml")
|
@ConditionalOnProperty(prefix = "sms", name = "config-type", havingValue = "yaml")
|
||||||
protected Map<String, Map<String, Object>> blends() {
|
@SneakyThrows
|
||||||
return new LinkedHashMap<>();
|
private Map<String, Map<String, Object>> blends(List<AbstractMultiConfig<?>> blends) {
|
||||||
|
Map<String, Map<String, Object>> blendsMap = new HashMap<>();
|
||||||
|
for (AbstractMultiConfig<?> blend : blends) {
|
||||||
|
Field[] declaredFields = blend.getClass().getDeclaredFields();
|
||||||
|
Optional<Field> first = Arrays.stream(declaredFields).filter(field -> field.getType().isAssignableFrom(Map.class)).findFirst();
|
||||||
|
if (first.isPresent()) {
|
||||||
|
Field field = first.get();
|
||||||
|
field.setAccessible(Boolean.TRUE);
|
||||||
|
Map<String, ? extends BaseConfig> configMap = (Map) field.get(blend);
|
||||||
|
if (Objects.isNull(configMap)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (String configId : configMap.keySet()) {
|
||||||
|
BaseConfig config = configMap.get(configId);
|
||||||
|
//将实体转换为单独属性,兼容原逻辑,更改最小
|
||||||
|
Map<String, Object> fieldConfigMap = JSONUtil.parseObj(config).toBean(new TypeReference<Map<String, Object>>() {
|
||||||
|
});
|
||||||
|
blendsMap.put(configId, fieldConfigMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return blendsMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ -1,3 +1,3 @@
|
|||||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||||
org.dromara.sms4j.starter.config.SmsMainConfig,\
|
org.dromara.sms4j.starter.configration.SmsMainConfiguration,\
|
||||||
org.dromara.sms4j.starter.config.SupplierConfig
|
org.dromara.sms4j.starter.configration.SupplierConfiguration
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
org.dromara.sms4j.starter.config.SmsMainConfig
|
org.dromara.sms4j.starter.configration.SmsMainConfiguration
|
||||||
org.dromara.sms4j.starter.config.SupplierConfig
|
org.dromara.sms4j.starter.configration.SupplierConfiguration
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user