mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-06 17:08:40 +08:00
1.修改多框架自动查找Smsdao时的error日志为info
2.修复在springboot的依赖下,使用smsReadConfig配置会发生渠道级上线拦截器异常的问题
This commit is contained in:
parent
b325d2ac0d
commit
6494ea506a
@ -89,7 +89,7 @@ public abstract class SmsProxyFactory {
|
|||||||
if (null != smsDao) {
|
if (null != smsDao) {
|
||||||
return smsDao;
|
return smsDao;
|
||||||
}
|
}
|
||||||
log.error("尝试框架加载失败,最终使用默认SmsDao!");
|
log.info("尝试框架加载失败,最终使用默认SmsDao!");
|
||||||
return SmsDaoDefaultImpl.getInstance();
|
return SmsDaoDefaultImpl.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ public abstract class SmsProxyFactory {
|
|||||||
Method getSmsDao = clazz.getMethod("getSmsDao", null);
|
Method getSmsDao = clazz.getMethod("getSmsDao", null);
|
||||||
return (SmsDao) getSmsDao.invoke(null, null);
|
return (SmsDao) getSmsDao.invoke(null, null);
|
||||||
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
||||||
log.error("{}:加载SmsDao失败,尝试其他框架加载......", frameworkName);
|
log.info("{}:加载SmsDao失败,尝试其他框架加载......", frameworkName);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,10 @@ public class SingleBlendRestrictedProcessor implements SmsProcessor, SmsDaoAware
|
|||||||
String configId = smsBlend.getConfigId();
|
String configId = smsBlend.getConfigId();
|
||||||
Map targetConfig = (Map) smsBlendsConfig.get(configId);
|
Map targetConfig = (Map) smsBlendsConfig.get(configId);
|
||||||
Object maximumObj = targetConfig.get("maximum");
|
Object maximumObj = targetConfig.get("maximum");
|
||||||
|
if (null == maximumObj) {
|
||||||
|
log.info("配置信息未能加载到本拦截器,跳过渠道级上限前置拦截执行器");
|
||||||
|
return param;
|
||||||
|
}
|
||||||
if (SmsUtils.isEmpty(maximumObj)) {
|
if (SmsUtils.isEmpty(maximumObj)) {
|
||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
package org.dromara.sms4j.starter.adepter;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import org.dromara.sms4j.core.datainterface.SmsReadConfig;
|
||||||
|
import org.dromara.sms4j.provider.config.BaseConfig;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class ConfigCombineMapAdeptor<S, M> extends HashMap {
|
||||||
|
public M get(Object key) {
|
||||||
|
Object o = super.get(key);
|
||||||
|
if (null == o){
|
||||||
|
Set configKeySet = this.keySet();
|
||||||
|
for (Object insideMapKey : configKeySet) {
|
||||||
|
if (((String)insideMapKey).startsWith(SmsReadConfig.class.getSimpleName())){
|
||||||
|
Map smsBlendsConfigInsideMap = (Map) this.get(insideMapKey);
|
||||||
|
SmsReadConfig config = (SmsReadConfig) smsBlendsConfigInsideMap.get(insideMapKey);
|
||||||
|
BaseConfig supplierConfig = config.getSupplierConfig((String)key);
|
||||||
|
List<BaseConfig> supplierConfigList = config.getSupplierConfigList();
|
||||||
|
if (null == supplierConfigList){
|
||||||
|
supplierConfigList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
if (null != supplierConfig){
|
||||||
|
supplierConfigList.add(supplierConfig);
|
||||||
|
}
|
||||||
|
for (BaseConfig baseConfig : supplierConfigList) {
|
||||||
|
if (key.equals(baseConfig.getConfigId())){
|
||||||
|
Map<String, Object> configMap = BeanUtil.beanToMap(baseConfig);
|
||||||
|
this.put(baseConfig.getConfigId(),configMap);
|
||||||
|
return (M)configMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return (M)o;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -11,6 +11,7 @@ import org.dromara.sms4j.cloopen.config.CloopenFactory;
|
|||||||
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.comm.utils.SmsUtils;
|
import org.dromara.sms4j.comm.utils.SmsUtils;
|
||||||
|
import org.dromara.sms4j.core.datainterface.SmsReadConfig;
|
||||||
import org.dromara.sms4j.core.proxy.EnvirmentHolder;
|
import org.dromara.sms4j.core.proxy.EnvirmentHolder;
|
||||||
import org.dromara.sms4j.core.factory.SmsFactory;
|
import org.dromara.sms4j.core.factory.SmsFactory;
|
||||||
import org.dromara.sms4j.core.proxy.processor.*;
|
import org.dromara.sms4j.core.proxy.processor.*;
|
||||||
@ -25,11 +26,14 @@ import org.dromara.sms4j.netease.config.NeteaseFactory;
|
|||||||
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.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
import org.dromara.sms4j.starter.adepter.ConfigCombineMapAdeptor;
|
||||||
import org.dromara.sms4j.tencent.config.TencentFactory;
|
import org.dromara.sms4j.tencent.config.TencentFactory;
|
||||||
import org.dromara.sms4j.unisms.config.UniFactory;
|
import org.dromara.sms4j.unisms.config.UniFactory;
|
||||||
import org.dromara.sms4j.yunpian.config.YunPianFactory;
|
import org.dromara.sms4j.yunpian.config.YunPianFactory;
|
||||||
import org.dromara.sms4j.zhutong.config.ZhutongFactory;
|
import org.dromara.sms4j.zhutong.config.ZhutongFactory;
|
||||||
|
import org.springframework.beans.factory.ObjectProvider;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -40,14 +44,16 @@ public class SmsBlendsInitializer {
|
|||||||
|
|
||||||
private final SmsConfig smsConfig;
|
private final SmsConfig smsConfig;
|
||||||
private final Map<String, Map<String, Object>> blends;
|
private final Map<String, Map<String, Object>> blends;
|
||||||
|
private final ObjectProvider<SmsReadConfig> extendsSmsConfigs;
|
||||||
|
|
||||||
public SmsBlendsInitializer(List<BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig>> factoryList,
|
public SmsBlendsInitializer(List<BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig>> factoryList,
|
||||||
SmsConfig smsConfig,
|
SmsConfig smsConfig,
|
||||||
Map<String, Map<String, Object>> blends
|
Map<String, Map<String, Object>> blends,
|
||||||
){
|
ObjectProvider<SmsReadConfig> extendsSmsConfigs){
|
||||||
this.factoryList = factoryList;
|
this.factoryList = factoryList;
|
||||||
this.smsConfig = smsConfig;
|
this.smsConfig = smsConfig;
|
||||||
this.blends = blends;
|
this.blends = blends;
|
||||||
|
this.extendsSmsConfigs = extendsSmsConfigs;
|
||||||
onApplicationEvent();
|
onApplicationEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +64,33 @@ public class SmsBlendsInitializer {
|
|||||||
|
|
||||||
if(ConfigType.YAML.equals(this.smsConfig.getConfigType())) {
|
if(ConfigType.YAML.equals(this.smsConfig.getConfigType())) {
|
||||||
//持有初始化配置信息
|
//持有初始化配置信息
|
||||||
EnvirmentHolder.frozenEnvirmet(smsConfig, blends);
|
Map<String, Map<String, Object>> blendsInclude = new ConfigCombineMapAdeptor<String, Map<String, Object>>();
|
||||||
|
blendsInclude.putAll(this.blends);
|
||||||
|
int num = 0;
|
||||||
|
for (SmsReadConfig smsReadConfig : extendsSmsConfigs) {
|
||||||
|
String key = SmsReadConfig.class.getSimpleName() + num;
|
||||||
|
Map<String, Object> insideMap = new HashMap<>();
|
||||||
|
insideMap.put(key,smsReadConfig);
|
||||||
|
blendsInclude.put(key,insideMap);
|
||||||
|
num++;
|
||||||
|
/* BaseConfig supplierConfig = smsReadConfig.getSupplierConfig("");
|
||||||
|
List<BaseConfig> supplierConfigList = smsReadConfig.getSupplierConfigList();
|
||||||
|
if(null != supplierConfigList){
|
||||||
|
supplierConfigList.add(supplierConfig);
|
||||||
|
for (BaseConfig config : supplierConfigList) {
|
||||||
|
String key = SmsReadConfig.class.getSimpleName() + num;
|
||||||
|
Map<String, Object> insideMap = new HashMap<>();
|
||||||
|
insideMap.put(key,supplierConfig);
|
||||||
|
blendsInclude.put(key,insideMap);
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
if(null != supplierConfig){
|
||||||
|
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
EnvirmentHolder.frozenEnvirmet(smsConfig, blendsInclude);
|
||||||
//注册执行器实现
|
//注册执行器实现
|
||||||
SmsProxyFactory.addProcessor(new RestrictedProcessor());
|
SmsProxyFactory.addProcessor(new RestrictedProcessor());
|
||||||
SmsProxyFactory.addProcessor(new BlackListProcessor());
|
SmsProxyFactory.addProcessor(new BlackListProcessor());
|
||||||
|
|||||||
@ -5,8 +5,10 @@ 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.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.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.ConfigurationProperties;
|
||||||
@ -53,8 +55,9 @@ public class SupplierConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
protected SmsBlendsInitializer smsBlendsInitializer(List<BaseProviderFactory<? extends SmsBlend, ? extends org.dromara.sms4j.api.universal.SupplierConfig>> factoryList,
|
protected SmsBlendsInitializer smsBlendsInitializer(List<BaseProviderFactory<? extends SmsBlend, ? extends org.dromara.sms4j.api.universal.SupplierConfig>> factoryList,
|
||||||
SmsConfig smsConfig,
|
SmsConfig smsConfig,
|
||||||
Map<String, Map<String, Object>> blends) {
|
Map<String, Map<String, Object>> blends,
|
||||||
return new SmsBlendsInitializer(factoryList, smsConfig, blends);
|
ObjectProvider<SmsReadConfig> extendsSmsConfigs) {
|
||||||
|
return new SmsBlendsInitializer(factoryList, smsConfig, blends, extendsSmsConfigs);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user