mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-08 01:48:38 +08:00
修改供应商创建相关代码,修改SE初始化方式
This commit is contained in:
parent
9b03996af6
commit
236ae38016
@ -17,7 +17,7 @@ public interface SmsRestrictedUtil {
|
|||||||
* @param time 过期时间(秒级单位)
|
* @param time 过期时间(秒级单位)
|
||||||
* @author :Wind
|
* @author :Wind
|
||||||
*/
|
*/
|
||||||
public boolean setOrTime(String key, Object value, Long time) throws RuntimeException;
|
boolean setOrTime(String key, Object value, Long time) throws RuntimeException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set
|
* set
|
||||||
@ -26,7 +26,7 @@ public interface SmsRestrictedUtil {
|
|||||||
* @param value 缓存value值
|
* @param value 缓存value值
|
||||||
* @author :Wind
|
* @author :Wind
|
||||||
*/
|
*/
|
||||||
public boolean set(String key, Object value) throws RuntimeException;
|
boolean set(String key, Object value) throws RuntimeException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* getByKey
|
* getByKey
|
||||||
@ -34,12 +34,12 @@ public interface SmsRestrictedUtil {
|
|||||||
* @param key redis的key
|
* @param key redis的key
|
||||||
* @author :Wind
|
* @author :Wind
|
||||||
*/
|
*/
|
||||||
public Object getByKey(String key) throws RuntimeException;
|
Object getByKey(String key) throws RuntimeException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clear
|
* clear
|
||||||
* <p>清除缓存</p>
|
* <p>清除缓存</p>
|
||||||
* @author :Wind
|
* @author :Wind
|
||||||
*/
|
*/
|
||||||
public void clean() throws RuntimeException;
|
void clean() throws RuntimeException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,6 +43,11 @@ public abstract class Constant {
|
|||||||
*/
|
*/
|
||||||
public static final String HTTPS_PREFIX = "https://";
|
public static final String HTTPS_PREFIX = "https://";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商配置键名
|
||||||
|
*/
|
||||||
|
public static final String SUPPLIER_KEY = "supplier";
|
||||||
|
|
||||||
private Constant() {
|
private Constant() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,11 +4,13 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author wind
|
* @author wind
|
||||||
@ -139,4 +141,26 @@ public class SmsUtil {
|
|||||||
return toStr.toArray(new String[list.size()]);
|
return toStr.toArray(new String[list.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将Map中所有key的分隔符转换为新的分隔符
|
||||||
|
* @param map map对象
|
||||||
|
* @param seperator 旧分隔符
|
||||||
|
* @param newSeperator 新分隔符
|
||||||
|
*/
|
||||||
|
public static void replaceKeysSeperator(Map<String, String> map, String seperator, String newSeperator) {
|
||||||
|
if(CollUtil.isEmpty(map)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> keySet = new ArrayList<>(map.keySet());
|
||||||
|
for(String key : keySet) {
|
||||||
|
if(StrUtil.isEmpty(key) || !key.contains(seperator)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String value = map.get(key);
|
||||||
|
String newKey = key.replaceAll(seperator, newSeperator);
|
||||||
|
map.putIfAbsent(newKey, value);
|
||||||
|
map.remove(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -69,7 +69,7 @@ public abstract class SmsFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static SmsBlend create(SupplierConfig config) {
|
private static SmsBlend create(SupplierConfig config) {
|
||||||
BaseProviderFactory factory = ProviderFactoryHolder.requireForConfig(config);
|
BaseProviderFactory factory = ProviderFactoryHolder.requireForSupplier(config.getSupplier());
|
||||||
if (factory == null) {
|
if (factory == null) {
|
||||||
throw new SmsBlendException("不支持当前供应商配置");
|
throw new SmsBlendException("不支持当前供应商配置");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,27 +2,38 @@ package org.dromara.sms4j.javase.config;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.io.resource.ClassPathResource;
|
import cn.hutool.core.io.resource.ClassPathResource;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.sms4j.aliyun.config.AlibabaConfig;
|
import org.dromara.sms4j.aliyun.config.AlibabaConfig;
|
||||||
|
import org.dromara.sms4j.api.SmsBlend;
|
||||||
|
import org.dromara.sms4j.api.universal.SupplierConfig;
|
||||||
import org.dromara.sms4j.cloopen.config.CloopenConfig;
|
import org.dromara.sms4j.cloopen.config.CloopenConfig;
|
||||||
import org.dromara.sms4j.comm.config.SmsConfig;
|
import org.dromara.sms4j.comm.config.SmsConfig;
|
||||||
|
import org.dromara.sms4j.comm.constant.Constant;
|
||||||
import org.dromara.sms4j.comm.exception.SmsBlendException;
|
import org.dromara.sms4j.comm.exception.SmsBlendException;
|
||||||
import org.dromara.sms4j.comm.factory.BeanFactory;
|
import org.dromara.sms4j.comm.factory.BeanFactory;
|
||||||
|
import org.dromara.sms4j.comm.utils.SmsUtil;
|
||||||
import org.dromara.sms4j.core.factory.SmsFactory;
|
import org.dromara.sms4j.core.factory.SmsFactory;
|
||||||
import org.dromara.sms4j.emay.config.EmayConfig;
|
import org.dromara.sms4j.emay.config.EmayConfig;
|
||||||
import org.dromara.sms4j.huawei.config.HuaweiConfig;
|
import org.dromara.sms4j.huawei.config.HuaweiConfig;
|
||||||
import org.dromara.sms4j.javase.util.YamlUtil;
|
import org.dromara.sms4j.javase.util.YamlUtil;
|
||||||
import org.dromara.sms4j.jdcloud.config.JdCloudConfig;
|
import org.dromara.sms4j.jdcloud.config.JdCloudConfig;
|
||||||
import org.dromara.sms4j.netease.config.NeteaseConfig;
|
import org.dromara.sms4j.netease.config.NeteaseConfig;
|
||||||
|
import org.dromara.sms4j.provider.config.BaseConfig;
|
||||||
|
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
||||||
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
import org.dromara.sms4j.tencent.config.TencentConfig;
|
import org.dromara.sms4j.tencent.config.TencentConfig;
|
||||||
import org.dromara.sms4j.unisms.config.UniConfig;
|
import org.dromara.sms4j.unisms.config.UniConfig;
|
||||||
import org.dromara.sms4j.yunpian.config.YunpianConfig;
|
import org.dromara.sms4j.yunpian.config.YunpianConfig;
|
||||||
import org.dromara.sms4j.zhutong.config.ZhutongConfig;
|
import org.dromara.sms4j.zhutong.config.ZhutongConfig;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化类
|
* 初始化类
|
||||||
*/
|
*/
|
||||||
@ -88,45 +99,20 @@ public class SEInitializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.initSmsConfig(smsConfig);
|
this.initSmsConfig(smsConfig);
|
||||||
AlibabaConfig alibabaConfig = smsConfig.getAlibaba();
|
// 解析供应商配置
|
||||||
if (alibabaConfig != null) {
|
Map<String, Map<String, String>> blends = smsConfig.getBlends();
|
||||||
SmsFactory.createSmsBlend(alibabaConfig);
|
for(String configId : blends.keySet()) {
|
||||||
}
|
Map<String, String> configMap = blends.get(configId);
|
||||||
CloopenConfig cloopenConfig = smsConfig.getCloopen();
|
String supplier = configMap.get(Constant.SUPPLIER_KEY);
|
||||||
if (cloopenConfig != null) {
|
supplier = StrUtil.isEmpty(supplier) ? configId : supplier;
|
||||||
SmsFactory.createSmsBlend(cloopenConfig);
|
BaseProviderFactory<SmsBlend, SupplierConfig> providerFactory = (BaseProviderFactory<SmsBlend, SupplierConfig>) ProviderFactoryHolder.requireForSupplier(supplier);
|
||||||
}
|
if(providerFactory == null) {
|
||||||
EmayConfig emayConfig = smsConfig.getEmay();
|
log.warn("创建\"{}\"的短信服务失败,未找到供应商为\"{}\"的服务", configId, supplier);
|
||||||
if (emayConfig != null) {
|
}
|
||||||
SmsFactory.createSmsBlend(emayConfig);
|
SmsUtil.replaceKeysSeperator(configMap, "-", "_");
|
||||||
}
|
JSONObject configJson = new JSONObject(configMap);
|
||||||
HuaweiConfig huaweiConfig = smsConfig.getHuawei();
|
SupplierConfig supplierConfig = JSONUtil.toBean(configJson, providerFactory.getConfigClass());
|
||||||
if (huaweiConfig != null) {
|
providerFactory.createSms(supplierConfig);
|
||||||
SmsFactory.createSmsBlend(huaweiConfig);
|
|
||||||
}
|
|
||||||
JdCloudConfig jdCloudConfig = smsConfig.getJdCloud();
|
|
||||||
if (jdCloudConfig != null) {
|
|
||||||
SmsFactory.createSmsBlend(jdCloudConfig);
|
|
||||||
}
|
|
||||||
TencentConfig tencentConfig = smsConfig.getTencent();
|
|
||||||
if (tencentConfig != null) {
|
|
||||||
SmsFactory.createSmsBlend(tencentConfig);
|
|
||||||
}
|
|
||||||
UniConfig uniConfig = smsConfig.getUni();
|
|
||||||
if (uniConfig != null) {
|
|
||||||
SmsFactory.createSmsBlend(uniConfig);
|
|
||||||
}
|
|
||||||
YunpianConfig yunpianConfig = smsConfig.getYunpian();
|
|
||||||
if (yunpianConfig != null) {
|
|
||||||
SmsFactory.createSmsBlend(yunpianConfig);
|
|
||||||
}
|
|
||||||
NeteaseConfig neteaseConfig = smsConfig.getNeteaseConfig();
|
|
||||||
if (neteaseConfig != null){
|
|
||||||
SmsFactory.createSmsBlend(neteaseConfig);
|
|
||||||
}
|
|
||||||
ZhutongConfig zhutongConfig = smsConfig.getZhutongConfig();
|
|
||||||
if (zhutongConfig != null){
|
|
||||||
SmsFactory.createSmsBlend(zhutongConfig);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,16 +133,7 @@ public class SEInitializer {
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
public static class InitSmsConfig extends SmsConfig {
|
public static class InitSmsConfig extends SmsConfig {
|
||||||
private AlibabaConfig alibaba;
|
private Map<String, Map<String, String>> blends;
|
||||||
private CloopenConfig cloopen;
|
|
||||||
private EmayConfig emay;
|
|
||||||
private HuaweiConfig huawei;
|
|
||||||
private JdCloudConfig jdCloud;
|
|
||||||
private TencentConfig tencent;
|
|
||||||
private UniConfig uni;
|
|
||||||
private YunpianConfig yunpian;
|
|
||||||
private NeteaseConfig neteaseConfig;
|
|
||||||
private ZhutongConfig zhutongConfig;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package org.dromara.sms4j.aliyun.config;
|
|||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.aliyun.service.AlibabaSmsImpl;
|
import org.dromara.sms4j.aliyun.service.AlibabaSmsImpl;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,7 +14,7 @@ import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
|||||||
* 2023/4/8 14:54
|
* 2023/4/8 14:54
|
||||||
**/
|
**/
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class AlibabaFactory implements BaseProviderFactory<AlibabaSmsImpl, AlibabaConfig> {
|
public class AlibabaFactory extends AbstractProviderFactory<AlibabaSmsImpl, AlibabaConfig> {
|
||||||
|
|
||||||
private static final AlibabaFactory INSTANCE = new AlibabaFactory();
|
private static final AlibabaFactory INSTANCE = new AlibabaFactory();
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package org.dromara.sms4j.cloopen.config;
|
|||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.cloopen.service.CloopenSmsImpl;
|
import org.dromara.sms4j.cloopen.service.CloopenSmsImpl;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,7 +13,7 @@ import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
|||||||
* @since 2023/4/10 22:10
|
* @since 2023/4/10 22:10
|
||||||
*/
|
*/
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class CloopenFactory implements BaseProviderFactory<CloopenSmsImpl, CloopenConfig> {
|
public class CloopenFactory extends AbstractProviderFactory<CloopenSmsImpl, CloopenConfig> {
|
||||||
|
|
||||||
private static final CloopenFactory INSTANCE = new CloopenFactory();
|
private static final CloopenFactory INSTANCE = new CloopenFactory();
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package org.dromara.sms4j.ctyun.config;
|
|||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.ctyun.service.CtyunSmsImpl;
|
import org.dromara.sms4j.ctyun.service.CtyunSmsImpl;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,7 +14,7 @@ import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
|||||||
* 2023/5/12 15:06
|
* 2023/5/12 15:06
|
||||||
**/
|
**/
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class CtyunFactory implements BaseProviderFactory<CtyunSmsImpl, CtyunConfig> {
|
public class CtyunFactory extends AbstractProviderFactory<CtyunSmsImpl, CtyunConfig> {
|
||||||
|
|
||||||
private static final CtyunFactory INSTANCE = new CtyunFactory();
|
private static final CtyunFactory INSTANCE = new CtyunFactory();
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package org.dromara.sms4j.emay.config;
|
|||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.emay.service.EmaySmsImpl;
|
import org.dromara.sms4j.emay.service.EmaySmsImpl;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,7 +14,7 @@ import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
|||||||
* @date 2023/04/11 12:00
|
* @date 2023/04/11 12:00
|
||||||
* */
|
* */
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class EmayFactory implements BaseProviderFactory<EmaySmsImpl, EmayConfig> {
|
public class EmayFactory extends AbstractProviderFactory<EmaySmsImpl, EmayConfig> {
|
||||||
|
|
||||||
private static final EmayFactory INSTANCE = new EmayFactory();
|
private static final EmayFactory INSTANCE = new EmayFactory();
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import lombok.AccessLevel;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.aliyun.service.AlibabaSmsImpl;
|
import org.dromara.sms4j.aliyun.service.AlibabaSmsImpl;
|
||||||
import org.dromara.sms4j.huawei.service.HuaweiSmsImpl;
|
import org.dromara.sms4j.huawei.service.HuaweiSmsImpl;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,7 +15,7 @@ import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
|||||||
* 2023/4/8 15:27
|
* 2023/4/8 15:27
|
||||||
**/
|
**/
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class HuaweiFactory implements BaseProviderFactory<HuaweiSmsImpl, HuaweiConfig> {
|
public class HuaweiFactory extends AbstractProviderFactory<HuaweiSmsImpl, HuaweiConfig> {
|
||||||
|
|
||||||
private static final HuaweiFactory INSTANCE = new HuaweiFactory();
|
private static final HuaweiFactory INSTANCE = new HuaweiFactory();
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import com.jdcloud.sdk.service.sms.client.SmsClient;
|
|||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.jdcloud.service.JdCloudSmsImpl;
|
import org.dromara.sms4j.jdcloud.service.JdCloudSmsImpl;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -18,7 +18,7 @@ import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
|||||||
* @since 2023/4/10 20:01
|
* @since 2023/4/10 20:01
|
||||||
*/
|
*/
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class JdCloudFactory implements BaseProviderFactory<JdCloudSmsImpl, JdCloudConfig> {
|
public class JdCloudFactory extends AbstractProviderFactory<JdCloudSmsImpl, JdCloudConfig> {
|
||||||
|
|
||||||
private static final JdCloudFactory INSTANCE = new JdCloudFactory();
|
private static final JdCloudFactory INSTANCE = new JdCloudFactory();
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package org.dromara.sms4j.netease.config;
|
|||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.netease.service.NeteaseSmsImpl;
|
import org.dromara.sms4j.netease.service.NeteaseSmsImpl;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,7 +14,7 @@ import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
|||||||
* 2023-05-30
|
* 2023-05-30
|
||||||
**/
|
**/
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class NeteaseFactory implements BaseProviderFactory<NeteaseSmsImpl, NeteaseConfig> {
|
public class NeteaseFactory extends AbstractProviderFactory<NeteaseSmsImpl, NeteaseConfig> {
|
||||||
|
|
||||||
private static final NeteaseFactory INSTANCE = new NeteaseFactory();
|
private static final NeteaseFactory INSTANCE = new NeteaseFactory();
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,32 @@
|
|||||||
|
package org.dromara.sms4j.provider.factory;
|
||||||
|
|
||||||
|
import org.dromara.sms4j.api.SmsBlend;
|
||||||
|
import org.dromara.sms4j.api.universal.SupplierConfig;
|
||||||
|
|
||||||
|
import java.lang.reflect.ParameterizedType;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
|
||||||
|
public abstract class AbstractProviderFactory<S extends SmsBlend, C extends SupplierConfig> implements BaseProviderFactory<S, C> {
|
||||||
|
|
||||||
|
private Class<C> configClass;
|
||||||
|
|
||||||
|
public AbstractProviderFactory() {
|
||||||
|
Type genericSuperclass = getClass().getGenericSuperclass();
|
||||||
|
if(genericSuperclass instanceof ParameterizedType) {
|
||||||
|
ParameterizedType paramType = (ParameterizedType) genericSuperclass;
|
||||||
|
Type[] typeArguments = paramType.getActualTypeArguments();
|
||||||
|
if(typeArguments.length > 1 && typeArguments[1] instanceof Class) {
|
||||||
|
configClass = (Class<C>) typeArguments[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取配置类
|
||||||
|
* @return 配置类
|
||||||
|
*/
|
||||||
|
public Class<C> getConfigClass() {
|
||||||
|
return configClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -19,10 +19,10 @@ public interface BaseProviderFactory<S extends SmsBlend, C extends SupplierConfi
|
|||||||
S createSms(C c);
|
S createSms(C c);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建配置对象
|
* 获取配置类
|
||||||
* @return
|
* @return 配置类
|
||||||
*/
|
*/
|
||||||
C createConfig();
|
Class<C> getConfigClass();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取供应商
|
* 获取供应商
|
||||||
|
|||||||
@ -20,9 +20,9 @@ public class ProviderFactoryHolder {
|
|||||||
factories.add(factory);
|
factories.add(factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig> requireForConfig(SupplierConfig config) {
|
public static BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig> requireForSupplier(String supplier) {
|
||||||
return factories.stream()
|
return factories.stream()
|
||||||
.filter(f -> f.getSupplier().equals(config.getSupplier()))
|
.filter(f -> f.getSupplier().equals(supplier))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package org.dromara.sms4j.tencent.config;
|
package org.dromara.sms4j.tencent.config;
|
||||||
|
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
import org.dromara.sms4j.tencent.service.TencentSmsImpl;
|
import org.dromara.sms4j.tencent.service.TencentSmsImpl;
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ import org.dromara.sms4j.tencent.service.TencentSmsImpl;
|
|||||||
* @author :Wind
|
* @author :Wind
|
||||||
* 2023/4/8 16:05
|
* 2023/4/8 16:05
|
||||||
**/
|
**/
|
||||||
public class TencentFactory implements BaseProviderFactory<TencentSmsImpl, TencentConfig> {
|
public class TencentFactory extends AbstractProviderFactory<TencentSmsImpl, TencentConfig> {
|
||||||
|
|
||||||
private static final TencentFactory INSTANCE = new TencentFactory();
|
private static final TencentFactory INSTANCE = new TencentFactory();
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package org.dromara.sms4j.unisms.config;
|
|||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
import org.dromara.sms4j.unisms.core.Uni;
|
import org.dromara.sms4j.unisms.core.Uni;
|
||||||
import org.dromara.sms4j.unisms.service.UniSmsImpl;
|
import org.dromara.sms4j.unisms.service.UniSmsImpl;
|
||||||
@ -14,7 +14,7 @@ import org.dromara.sms4j.unisms.service.UniSmsImpl;
|
|||||||
* 2023/4/8 15:46
|
* 2023/4/8 15:46
|
||||||
**/
|
**/
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class UniFactory implements BaseProviderFactory<UniSmsImpl, UniConfig> {
|
public class UniFactory extends AbstractProviderFactory<UniSmsImpl, UniConfig> {
|
||||||
|
|
||||||
private static final UniFactory INSTANCE = new UniFactory();
|
private static final UniFactory INSTANCE = new UniFactory();
|
||||||
|
|
||||||
|
|||||||
@ -2,12 +2,12 @@ package org.dromara.sms4j.yunpian.config;
|
|||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
import org.dromara.sms4j.yunpian.service.YunPianSmsImpl;
|
import org.dromara.sms4j.yunpian.service.YunPianSmsImpl;
|
||||||
|
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class YunPianFactory implements BaseProviderFactory<YunPianSmsImpl, YunpianConfig> {
|
public class YunPianFactory extends AbstractProviderFactory<YunPianSmsImpl, YunpianConfig> {
|
||||||
|
|
||||||
private static final YunPianFactory INSTANCE = new YunPianFactory();
|
private static final YunPianFactory INSTANCE = new YunPianFactory();
|
||||||
|
|
||||||
|
|||||||
@ -2,12 +2,12 @@ package org.dromara.sms4j.zhutong.config;
|
|||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.provider.factory.BaseProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
import org.dromara.sms4j.provider.factory.ProviderFactoryHolder;
|
||||||
import org.dromara.sms4j.zhutong.service.ZhutongSmsImpl;
|
import org.dromara.sms4j.zhutong.service.ZhutongSmsImpl;
|
||||||
|
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
public class ZhutongFactory implements BaseProviderFactory<ZhutongSmsImpl, ZhutongConfig> {
|
public class ZhutongFactory extends AbstractProviderFactory<ZhutongSmsImpl, ZhutongConfig> {
|
||||||
private static final ZhutongFactory INSTANCE = new ZhutongFactory();
|
private static final ZhutongFactory INSTANCE = new ZhutongFactory();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user