mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-06 17:08:40 +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;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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;
|
||||
|
||||
@ -4,8 +4,9 @@ sms:
|
||||
# 账户上限
|
||||
account-max: 1
|
||||
blends:
|
||||
alibaba:
|
||||
# 阿里短信例子
|
||||
ali:
|
||||
ali1:
|
||||
#厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
|
||||
supplier: alibaba
|
||||
#您的accessKey
|
||||
@ -18,7 +19,21 @@ sms:
|
||||
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
|
||||
@ -33,6 +48,7 @@ sms:
|
||||
#您的sdkAppId
|
||||
sdk-app-id: 1400761645
|
||||
# 华为短信例子
|
||||
huawei:
|
||||
hw:
|
||||
#厂商标识
|
||||
supplier: huawei
|
||||
@ -51,6 +67,7 @@ sms:
|
||||
# 通道号
|
||||
sender: 8823040504797
|
||||
# 合一短信例子
|
||||
unisms:
|
||||
uni:
|
||||
#厂商标识
|
||||
supplier: unisms
|
||||
@ -64,6 +81,7 @@ sms:
|
||||
templateName: code
|
||||
# 渠道上限
|
||||
maximum: 2
|
||||
lianlu:
|
||||
lianlu:
|
||||
supplier: lianlu
|
||||
templateId: 模板id
|
||||
@ -71,6 +89,7 @@ sms:
|
||||
appKey: d42d7
|
||||
mchId: 100
|
||||
signName: 【test】
|
||||
cloopen:
|
||||
cloopen:
|
||||
# 短信厂商
|
||||
supplier: cloopen
|
||||
@ -86,6 +105,7 @@ sms:
|
||||
# appId: 64c52d2a****77775fe72e3
|
||||
# sid: d2a****777
|
||||
# url: https://sms.idowe.com/**/**/**/send
|
||||
qiniu:
|
||||
qiniu:
|
||||
access-key-id: EQcDflLTCYnU1******CmqIYLhog1lkWHb2
|
||||
access-key-secret: NeS2ptvZQoIy*****err2DdLe7wxFfQvji1
|
||||
|
||||
@ -26,7 +26,7 @@ class Sms4jTest {
|
||||
/**
|
||||
* 填测试手机号
|
||||
*/
|
||||
private static final String PHONE = "";
|
||||
private static final String PHONE = "18988889999";
|
||||
|
||||
@Test
|
||||
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.json.JSONObject;
|
||||
@ -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){
|
||||
@ -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<String, Map<String, Object>> blends() {
|
||||
return new LinkedHashMap<>();
|
||||
@SneakyThrows
|
||||
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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user