From 77f35ba73e0cdab1df27e328dc1ddfb31f498240 Mon Sep 17 00:00:00 2001 From: handy Date: Thu, 20 Jul 2023 15:10:47 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E8=BF=94=E5=9B=9E=E5=80=BC?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0configId=EF=BC=8C=E7=94=A8=E6=9D=A5=E7=A1=AE?= =?UTF-8?q?=E5=AE=9A=E6=98=AF=E5=93=AA=E4=B8=AA=E6=B8=A0=E9=81=93=E5=8F=91?= =?UTF-8?q?=E9=80=81=E7=9A=84=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/sms4j/api/entity/SmsResponse.java | 7 ++++ .../dromara/sms4j/comm/config/BaseConfig.java | 9 ++++- .../sms4j/aliyun/service/AlibabaSmsImpl.java | 19 ++++----- .../sms4j/cloopen/util/CloopenHelper.java | 1 + .../sms4j/ctyun/service/CtyunSmsImpl.java | 21 +++++----- .../dromara/sms4j/emay/config/EmayConfig.java | 7 ++++ .../sms4j/emay/service/EmaySmsImpl.java | 1 + .../sms4j/huawei/config/HuaweiConfig.java | 7 ++++ .../sms4j/huawei/service/HuaweiSmsImpl.java | 1 + .../sms4j/jdcloud/service/JdCloudSmsImpl.java | 1 + .../sms4j/netease/service/NeteaseSmsImpl.java | 9 +++-- .../sms4j/tencent/service/TencentSmsImpl.java | 21 +++++----- .../sms4j/unisms/service/UniSmsImpl.java | 1 + .../sms4j/yunpian/service/YunPianSmsImpl.java | 3 +- .../sms4j/zhutong/config/ZhutongConfig.java | 6 ++- .../sms4j/zhutong/service/ZhutongSmsImpl.java | 39 ++++++++++--------- 16 files changed, 98 insertions(+), 55 deletions(-) diff --git a/sms4j-api/src/main/java/org/dromara/sms4j/api/entity/SmsResponse.java b/sms4j-api/src/main/java/org/dromara/sms4j/api/entity/SmsResponse.java index 9d6a58a7..904e5b3f 100644 --- a/sms4j-api/src/main/java/org/dromara/sms4j/api/entity/SmsResponse.java +++ b/sms4j-api/src/main/java/org/dromara/sms4j/api/entity/SmsResponse.java @@ -25,4 +25,11 @@ public class SmsResponse { * @since 2.3.0 */ private Object data; + + /** + * 配置标识名 如未配置取对应渠道名例如 Alibaba + * + * @since 3.0.0 + */ + private String configId; } diff --git a/sms4j-comm/src/main/java/org/dromara/sms4j/comm/config/BaseConfig.java b/sms4j-comm/src/main/java/org/dromara/sms4j/comm/config/BaseConfig.java index bc652878..a0e1bf60 100644 --- a/sms4j-comm/src/main/java/org/dromara/sms4j/comm/config/BaseConfig.java +++ b/sms4j-comm/src/main/java/org/dromara/sms4j/comm/config/BaseConfig.java @@ -38,7 +38,14 @@ public class BaseConfig { /** * 权重 - * */ + */ @Builder.Default private Integer weight = 1; + + /** + * 配置标识名 如未配置取对应渠道名例如 Alibaba + * + * @since 3.0.0 + */ + private String configId; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/aliyun/service/AlibabaSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/aliyun/service/AlibabaSmsImpl.java index ac57873e..996627ed 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/aliyun/service/AlibabaSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/aliyun/service/AlibabaSmsImpl.java @@ -28,7 +28,7 @@ import java.util.concurrent.Executor; @Slf4j public class AlibabaSmsImpl extends AbstractSmsBlend { - private final AlibabaConfig alibabaSmsConfig; + private final AlibabaConfig config; /** * AlibabaSmsImpl @@ -36,17 +36,17 @@ public class AlibabaSmsImpl extends AbstractSmsBlend { * * @author :Wind */ - public AlibabaSmsImpl(AlibabaConfig alibabaSmsConfig, Executor pool, DelayedTime delayedTime) { + public AlibabaSmsImpl(AlibabaConfig config, Executor pool, DelayedTime delayedTime) { super(pool, delayedTime); - this.alibabaSmsConfig = alibabaSmsConfig; + this.config = config; } @Override @Restricted public SmsResponse sendMessage(String phone, String message) { LinkedHashMap map = new LinkedHashMap<>(); - map.put(alibabaSmsConfig.getTemplateName(), message); - return sendMessage(phone, alibabaSmsConfig.getTemplateId(), map); + map.put(config.getTemplateName(), message); + return sendMessage(phone, config.getTemplateId(), map); } @Override @@ -60,8 +60,8 @@ public class AlibabaSmsImpl extends AbstractSmsBlend { @Restricted public SmsResponse massTexting(List phones, String message) { LinkedHashMap map = new LinkedHashMap<>(); - map.put(alibabaSmsConfig.getTemplateName(), message); - return massTexting(phones, alibabaSmsConfig.getTemplateId(), map); + map.put(config.getTemplateName(), message); + return massTexting(phones, config.getTemplateId(), map); } @Override @@ -75,8 +75,8 @@ public class AlibabaSmsImpl extends AbstractSmsBlend { String requestUrl; String paramStr; try { - requestUrl = AliyunUtils.generateSendSmsRequestUrl(this.alibabaSmsConfig, message, phone, templateId); - paramStr = AliyunUtils.generateParamBody(alibabaSmsConfig, phone, message, templateId); + requestUrl = AliyunUtils.generateSendSmsRequestUrl(this.config, message, phone, templateId); + paramStr = AliyunUtils.generateParamBody(config, phone, message, templateId); } catch (Exception e) { log.error("aliyun send message error", e); throw new SmsBlendException(e.getMessage()); @@ -95,6 +95,7 @@ public class AlibabaSmsImpl extends AbstractSmsBlend { SmsResponse smsResponse = new SmsResponse(); smsResponse.setSuccess("OK".equals(resJson.getStr("Code"))); smsResponse.setData(resJson); + smsResponse.setConfigId(this.config.getConfigId()); return smsResponse; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/cloopen/util/CloopenHelper.java b/sms4j-provider/src/main/java/org/dromara/sms4j/cloopen/util/CloopenHelper.java index b2aa1397..d670038e 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/cloopen/util/CloopenHelper.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/cloopen/util/CloopenHelper.java @@ -51,6 +51,7 @@ public class CloopenHelper { SmsResponse smsResponse = new SmsResponse(); smsResponse.setSuccess("000000".equals(resJson.getStr("statusCode"))); smsResponse.setData(resJson); + smsResponse.setConfigId(this.config.getConfigId()); return smsResponse; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/ctyun/service/CtyunSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/ctyun/service/CtyunSmsImpl.java index c23b03e0..71c97b62 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/ctyun/service/CtyunSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/ctyun/service/CtyunSmsImpl.java @@ -28,19 +28,19 @@ import java.util.concurrent.Executor; @Slf4j public class CtyunSmsImpl extends AbstractSmsBlend { - private final CtyunConfig ctyunConfig; + private final CtyunConfig config; - public CtyunSmsImpl(CtyunConfig ctyunConfig, Executor pool, DelayedTime delayedTime) { + public CtyunSmsImpl(CtyunConfig config, Executor pool, DelayedTime delayedTime) { super(pool, delayedTime); - this.ctyunConfig = ctyunConfig; + this.config = config; } @Override @Restricted public SmsResponse sendMessage(String phone, String message) { LinkedHashMap map = new LinkedHashMap<>(); - map.put(ctyunConfig.getTemplateName(), message); - return sendMessage(phone, ctyunConfig.getTemplateId(), map); + map.put(config.getTemplateName(), message); + return sendMessage(phone, config.getTemplateId(), map); } @Override @@ -54,8 +54,8 @@ public class CtyunSmsImpl extends AbstractSmsBlend { @Restricted public SmsResponse massTexting(List phones, String message) { LinkedHashMap map = new LinkedHashMap<>(); - map.put(ctyunConfig.getTemplateName(), message); - return massTexting(phones, ctyunConfig.getTemplateId(), map); + map.put(config.getTemplateName(), message); + return massTexting(phones, config.getTemplateId(), map); } @Override @@ -69,15 +69,15 @@ public class CtyunSmsImpl extends AbstractSmsBlend { String requestUrl; String paramStr; try { - requestUrl = ctyunConfig.getRequestUrl(); - paramStr = CtyunUtils.generateParamJsonStr(ctyunConfig, phone, message, templateId); + requestUrl = config.getRequestUrl(); + paramStr = CtyunUtils.generateParamJsonStr(config, phone, message, templateId); } catch (Exception e) { log.error("ctyun send message error", e); throw new SmsBlendException(e.getMessage()); } log.debug("requestUrl {}", requestUrl); try(HttpResponse response = HttpRequest.post(requestUrl) - .addHeaders(CtyunUtils.signHeader(paramStr, ctyunConfig.getAccessKeyId(), ctyunConfig.getAccessKeySecret())) + .addHeaders(CtyunUtils.signHeader(paramStr, config.getAccessKeyId(), config.getAccessKeySecret())) .body(paramStr) .execute()){ JSONObject body = JSONUtil.parseObj(response.body()); @@ -89,6 +89,7 @@ public class CtyunSmsImpl extends AbstractSmsBlend { SmsResponse smsResponse = new SmsResponse(); smsResponse.setSuccess("OK".equals(resJson.getStr("code"))); smsResponse.setData(resJson); + smsResponse.setConfigId(this.config.getConfigId()); return smsResponse; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/emay/config/EmayConfig.java b/sms4j-provider/src/main/java/org/dromara/sms4j/emay/config/EmayConfig.java index e6d581cc..197b52f7 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/emay/config/EmayConfig.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/emay/config/EmayConfig.java @@ -23,4 +23,11 @@ public class EmayConfig implements SupplierConfig { private String secretKey ; /** APP接入地址*/ private String requestUrl; + + /** + * 配置标识名 如未配置取对应渠道名例如 Alibaba + * + * @since 3.0.0 + */ + private String configId; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/emay/service/EmaySmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/emay/service/EmaySmsImpl.java index 0666d84d..38c8d0e2 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/emay/service/EmaySmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/emay/service/EmaySmsImpl.java @@ -94,6 +94,7 @@ public class EmaySmsImpl extends AbstractSmsBlend { SmsResponse smsResponse = new SmsResponse(); smsResponse.setSuccess("success".equalsIgnoreCase(resJson.getStr("code"))); smsResponse.setData(resJson); + smsResponse.setConfigId(this.config.getConfigId()); return smsResponse; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/huawei/config/HuaweiConfig.java b/sms4j-provider/src/main/java/org/dromara/sms4j/huawei/config/HuaweiConfig.java index 50bc9916..deb4c6fa 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/huawei/config/HuaweiConfig.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/huawei/config/HuaweiConfig.java @@ -28,4 +28,11 @@ public class HuaweiConfig implements SupplierConfig { private String statusCallBack; /** APP接入地址*/ private String url; + + /** + * 配置标识名 如未配置取对应渠道名例如 Alibaba + * + * @since 3.0.0 + */ + private String configId; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/huawei/service/HuaweiSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/huawei/service/HuaweiSmsImpl.java index 73136448..3ce28a9a 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/huawei/service/HuaweiSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/huawei/service/HuaweiSmsImpl.java @@ -78,6 +78,7 @@ public class HuaweiSmsImpl extends AbstractSmsBlend { SmsResponse smsResponse = new SmsResponse(); smsResponse.setSuccess("000000".equals(resJson.getStr("Code"))); smsResponse.setData(resJson); + smsResponse.setConfigId(this.config.getConfigId()); return smsResponse; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/jdcloud/service/JdCloudSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/jdcloud/service/JdCloudSmsImpl.java index 069975fe..0fb362dd 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/jdcloud/service/JdCloudSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/jdcloud/service/JdCloudSmsImpl.java @@ -87,6 +87,7 @@ public class JdCloudSmsImpl extends AbstractSmsBlend { SmsResponse smsResponse = new SmsResponse(); smsResponse.setSuccess(res.getStatus() != null && res.getStatus()); smsResponse.setData(res); + smsResponse.setConfigId(this.config.getConfigId()); return smsResponse; } } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/netease/service/NeteaseSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/netease/service/NeteaseSmsImpl.java index 4d9a1bd1..10aebdd3 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/netease/service/NeteaseSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/netease/service/NeteaseSmsImpl.java @@ -118,10 +118,11 @@ public class NeteaseSmsImpl extends AbstractSmsBlend { } private SmsResponse getResponse(JSONObject jsonObject) { - SmsResponse response = new SmsResponse(); - response.setSuccess(jsonObject.getInt("code") <= 200); - response.setData(jsonObject); - return response; + SmsResponse smsResponse = new SmsResponse(); + smsResponse.setSuccess(jsonObject.getInt("code") <= 200); + smsResponse.setData(jsonObject); + smsResponse.setConfigId(this.config.getConfigId()); + return smsResponse; } } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/tencent/service/TencentSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/tencent/service/TencentSmsImpl.java index 6b18ff55..b2f7c490 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/tencent/service/TencentSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/tencent/service/TencentSmsImpl.java @@ -28,11 +28,11 @@ import java.util.concurrent.Executor; @Slf4j public class TencentSmsImpl extends AbstractSmsBlend { - private final TencentConfig tencentSmsConfig; + private final TencentConfig config; public TencentSmsImpl(TencentConfig tencentSmsConfig, Executor pool, DelayedTime delayed) { super(pool, delayed); - this.tencentSmsConfig = tencentSmsConfig; + this.config = tencentSmsConfig; } @Override @@ -43,7 +43,7 @@ public class TencentSmsImpl extends AbstractSmsBlend { for (int i = 0; i < split.length; i++) { map.put(String.valueOf(i), split[i]); } - return sendMessage(phone, tencentSmsConfig.getTemplateId(), map); + return sendMessage(phone, config.getTemplateId(), map); } @Override @@ -65,7 +65,7 @@ public class TencentSmsImpl extends AbstractSmsBlend { for (int i = 0; i < split.length; i++) { map.put(String.valueOf(i), split[i]); } - return massTexting(phones, tencentSmsConfig.getTemplateId(), map); + return massTexting(phones, config.getTemplateId(), map); } @Override @@ -83,16 +83,16 @@ public class TencentSmsImpl extends AbstractSmsBlend { String timestamp = String.valueOf(System.currentTimeMillis() / 1000); String signature; try { - signature = TencentUtils.generateSignature(this.tencentSmsConfig, templateId, messages, phones, timestamp); + signature = TencentUtils.generateSignature(this.config, templateId, messages, phones, timestamp); } catch (Exception e) { log.error("tencent send message error", e); throw new SmsBlendException(e.getMessage()); } - Map headsMap = TencentUtils.generateHeadsMap(signature, timestamp, tencentSmsConfig.getAction(), - tencentSmsConfig.getVersion(), tencentSmsConfig.getTerritory(), tencentSmsConfig.getRequestUrl()); - Map requestBody = TencentUtils.generateRequestBody(phones, tencentSmsConfig.getSdkAppId(), - tencentSmsConfig.getSignature(), templateId, messages); - String url = Constant.HTTPS_PREFIX + tencentSmsConfig.getRequestUrl(); + Map headsMap = TencentUtils.generateHeadsMap(signature, timestamp, config.getAction(), + config.getVersion(), config.getTerritory(), config.getRequestUrl()); + Map requestBody = TencentUtils.generateRequestBody(phones, config.getSdkAppId(), + config.getSignature(), templateId, messages); + String url = Constant.HTTPS_PREFIX + config.getRequestUrl(); try(HttpResponse response = HttpRequest.post(url) .addHeaders(headsMap) .body(JSONUtil.toJsonStr(requestBody)) @@ -108,6 +108,7 @@ public class TencentSmsImpl extends AbstractSmsBlend { String error = response.getStr("Error"); smsResponse.setSuccess(StringUtils.isBlank(error)); smsResponse.setData(resJson); + smsResponse.setConfigId(this.config.getConfigId()); return smsResponse; } } \ No newline at end of file diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/unisms/service/UniSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/unisms/service/UniSmsImpl.java index 84e2a642..4c831463 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/unisms/service/UniSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/unisms/service/UniSmsImpl.java @@ -87,6 +87,7 @@ public class UniSmsImpl extends AbstractSmsBlend { UniResponse send = Uni.getClient().request("sms.message.send", data); smsResponse.setSuccess("Success".equals(send.message)); smsResponse.setData(send); + smsResponse.setConfigId(this.config.getConfigId()); } catch (Exception e) { smsResponse.setSuccess(false); } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/yunpian/service/YunPianSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/yunpian/service/YunPianSmsImpl.java index 3bc14351..cecb7691 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/yunpian/service/YunPianSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/yunpian/service/YunPianSmsImpl.java @@ -31,7 +31,7 @@ public class YunPianSmsImpl extends AbstractSmsBlend { private final YunpianConfig config; - private static SmsResponse getResponse(JSONObject execute) { + private SmsResponse getResponse(JSONObject execute) { SmsResponse smsResponse = new SmsResponse(); if (execute == null) { smsResponse.setSuccess(false); @@ -39,6 +39,7 @@ public class YunPianSmsImpl extends AbstractSmsBlend { } smsResponse.setSuccess(execute.getInt("code") == 0); smsResponse.setData(execute); + smsResponse.setConfigId(this.config.getConfigId()); return smsResponse; } diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/zhutong/config/ZhutongConfig.java b/sms4j-provider/src/main/java/org/dromara/sms4j/zhutong/config/ZhutongConfig.java index 43e560c5..2aea094f 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/zhutong/config/ZhutongConfig.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/zhutong/config/ZhutongConfig.java @@ -1,6 +1,10 @@ package org.dromara.sms4j.zhutong.config; -import lombok.*; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; import lombok.experimental.SuperBuilder; import org.dromara.sms4j.api.universal.SupplierConfig; import org.dromara.sms4j.comm.config.BaseConfig; diff --git a/sms4j-provider/src/main/java/org/dromara/sms4j/zhutong/service/ZhutongSmsImpl.java b/sms4j-provider/src/main/java/org/dromara/sms4j/zhutong/service/ZhutongSmsImpl.java index 8c3098d4..4831e4cc 100644 --- a/sms4j-provider/src/main/java/org/dromara/sms4j/zhutong/service/ZhutongSmsImpl.java +++ b/sms4j-provider/src/main/java/org/dromara/sms4j/zhutong/service/ZhutongSmsImpl.java @@ -33,7 +33,7 @@ import java.util.concurrent.Executor; @Slf4j public class ZhutongSmsImpl extends AbstractSmsBlend { - private final ZhutongConfig zhutongConfig; + private final ZhutongConfig config; /** * ZhutongSmsImpl @@ -41,20 +41,20 @@ public class ZhutongSmsImpl extends AbstractSmsBlend { */ public ZhutongSmsImpl(ZhutongConfig zhutongConfig, Executor pool, DelayedTime delayedTime) { super(pool, delayedTime); - this.zhutongConfig = zhutongConfig; + this.config = zhutongConfig; } @Override @Restricted public SmsResponse sendMessage(String phone, String message) { //如果模板id为空 or 模板变量名称为空,使用无模板的自定义短信发送 - if (StrUtil.hasBlank(zhutongConfig.getSignature(), zhutongConfig.getTemplateId(), zhutongConfig.getTemplateName())) { + if (StrUtil.hasBlank(config.getSignature(), config.getTemplateId(), config.getTemplateName())) { return getSmsResponse(phone, message); } LinkedHashMap map = new LinkedHashMap<>(); - map.put(zhutongConfig.getTemplateName(), message); - return sendMessage(phone, zhutongConfig.getTemplateId(), map); + map.put(config.getTemplateName(), message); + return sendMessage(phone, config.getTemplateId(), map); } @Override @@ -67,13 +67,13 @@ public class ZhutongSmsImpl extends AbstractSmsBlend { @Restricted public SmsResponse massTexting(List phones, String message) { //如果模板id为空 or 模板变量名称为空,使用无模板的自定义短信发送 - if (StrUtil.hasBlank(zhutongConfig.getSignature(), zhutongConfig.getTemplateId(), zhutongConfig.getTemplateName())) { + if (StrUtil.hasBlank(config.getSignature(), config.getTemplateId(), config.getTemplateName())) { return getSmsResponse(phones, message); } LinkedHashMap map = new LinkedHashMap<>(); - map.put(zhutongConfig.getTemplateName(), message); - return massTexting(phones, zhutongConfig.getTemplateId(), map); + map.put(config.getTemplateName(), message); + return massTexting(phones, config.getTemplateId(), map); } @Override @@ -86,9 +86,9 @@ public class ZhutongSmsImpl extends AbstractSmsBlend { * 发送 自定义短信:https://doc.zthysms.com/web/#/1/14 */ protected SmsResponse getSmsResponse(List phones, String content) { - String requestUrl = zhutongConfig.getRequestUrl(); - String username = zhutongConfig.getAccessKeyId(); - String password = zhutongConfig.getAccessKeySecret(); + String requestUrl = config.getRequestUrl(); + String username = config.getAccessKeyId(); + String password = config.getAccessKeySecret(); validator(requestUrl, username, password); if (CollectionUtil.isEmpty(phones)) { @@ -139,10 +139,10 @@ public class ZhutongSmsImpl extends AbstractSmsBlend { * 发送 模板短信:https://doc.zthysms.com/web/#/1/13 */ protected SmsResponse getSmsResponseTemplate(String templateId, List phones, LinkedHashMap messages) { - String requestUrl = zhutongConfig.getRequestUrl(); - String username = zhutongConfig.getAccessKeyId(); - String password = zhutongConfig.getAccessKeySecret(); - String signature = zhutongConfig.getSignature(); + String requestUrl = config.getRequestUrl(); + String username = config.getAccessKeyId(); + String password = config.getAccessKeySecret(); + String signature = config.getSignature(); validator(requestUrl, username, password); if (StrUtil.isBlank(signature)) { @@ -208,10 +208,11 @@ public class ZhutongSmsImpl extends AbstractSmsBlend { } private SmsResponse getResponse(JSONObject jsonObject) { - SmsResponse response = new SmsResponse(); - response.setSuccess(jsonObject.getInt("code", -1) <= 200); - response.setData(jsonObject); - return response; + SmsResponse smsResponse = new SmsResponse(); + smsResponse.setSuccess(jsonObject.getInt("code", -1) <= 200); + smsResponse.setData(jsonObject); + smsResponse.setConfigId(this.config.getConfigId()); + return smsResponse; } private void validator(String requestUrl, String username, String password) { From b8cee6d82971b23677b2891918ed03b6b3e48ab6 Mon Sep 17 00:00:00 2001 From: handy Date: Thu, 20 Jul 2023 15:11:04 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=8D=87=E7=BA=A7jar=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=92=8ChuTool=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index ccdf7a15..790d7347 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ - 2.2.0 + 3.0.0 UTF-8 UTF-8 @@ -58,7 +58,7 @@ 2.2.0 3.17.0 1.3.3 - 5.8.18 + 5.8.20 2.3.0 1.1.1 1.6.2 From 1c2c730f05c8b994eb03d6535fc46f0d1726a54e Mon Sep 17 00:00:00 2001 From: handy Date: Thu, 20 Jul 2023 15:11:34 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E7=9A=84ReflectUtil=E6=9B=B4=E6=8D=A2=E4=B8=BAhutool=E7=9A=84B?= =?UTF-8?q?eanUtil.beanToMap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/sms4j/core/ReflectUtil.java | 36 ----------------- .../org/dromara/sms4j/core/load/SmsLoad.java | 39 +++++++++++-------- 2 files changed, 22 insertions(+), 53 deletions(-) delete mode 100644 sms4j-core/src/main/java/org/dromara/sms4j/core/ReflectUtil.java diff --git a/sms4j-core/src/main/java/org/dromara/sms4j/core/ReflectUtil.java b/sms4j-core/src/main/java/org/dromara/sms4j/core/ReflectUtil.java deleted file mode 100644 index c32cc7cd..00000000 --- a/sms4j-core/src/main/java/org/dromara/sms4j/core/ReflectUtil.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.dromara.sms4j.core; - -import org.dromara.sms4j.api.universal.SupplierConfig; -import org.dromara.sms4j.comm.exception.SmsBlendException; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -public class ReflectUtil { - - /** - * 反射获取接口对象的原类名 - */ - public static String getObjectName(SupplierConfig parameter) { - return parameter.getClass().getTypeName(); - } - - /** - * 将对象的属性和属性值变为map - * */ - public static Map getValues(SupplierConfig parameter) { - try { - Map map = new HashMap<>(); - Class clazz = Class.forName(getObjectName(parameter)); - Field[] declaredFields = clazz.getDeclaredFields(); - for (Field declaredField : declaredFields) { - declaredField.setAccessible(true); - map.put(declaredField.getName(), (String) declaredField.get(parameter)); - } - return map; - } catch (Exception e) { - throw new SmsBlendException(e.toString()); - } - } -} diff --git a/sms4j-core/src/main/java/org/dromara/sms4j/core/load/SmsLoad.java b/sms4j-core/src/main/java/org/dromara/sms4j/core/load/SmsLoad.java index 8255550e..68926aed 100644 --- a/sms4j-core/src/main/java/org/dromara/sms4j/core/load/SmsLoad.java +++ b/sms4j-core/src/main/java/org/dromara/sms4j/core/load/SmsLoad.java @@ -1,10 +1,8 @@ package org.dromara.sms4j.core.load; +import cn.hutool.core.bean.BeanUtil; import org.dromara.sms4j.api.SmsBlend; import org.dromara.sms4j.api.universal.SupplierConfig; -import org.dromara.sms4j.comm.config.BaseConfig; -import org.dromara.sms4j.core.ReflectUtil; -import org.dromara.sms4j.core.config.SupplierFactory; import org.dromara.sms4j.provider.base.BaseProviderFactory; import org.dromara.sms4j.provider.enumerate.SupplierType; @@ -16,6 +14,7 @@ import java.util.Map; /** * SmsLoad *

自定义的一个平滑加权负载服务,可以用于存放多个短信实现负载 + * * @author :Wind * 2023/4/21 20:49 **/ @@ -36,23 +35,25 @@ public class SmsLoad { } /** - * addLoadServer + * addLoadServer *

添加服务及其权重 *

添加权重应注意,不要把某个权重设置的与其他权重相差过大,否则容易出现无法负载,单一选择的情况 + * * @param LoadServer 短信实现 - * @param weight 权重 + * @param weight 权重 * @author :Wind - */ + */ public void addLoadServer(SmsBlend LoadServer, int weight) { LoadServers.add(new LoadServer(LoadServer, weight, weight)); } /** - * removeLoadServer + * removeLoadServer *

移除短信服务 - * @param LoadServer 要移除的服务 + * + * @param LoadServer 要移除的服务 * @author :Wind - */ + */ public void removeLoadServer(SmsBlend LoadServer) { for (int i = 0; i < LoadServers.size(); i++) { if (LoadServers.get(i).getSmsServer().equals(LoadServer)) { @@ -63,11 +64,12 @@ public class SmsLoad { } /** - * getLoadServer + * getLoadServer *

根据负载算法获取一个可获取到的短信服务,这里获取到的服务必然是addLoadServer方法中添加过的服务,不会凭空出现 + * * @return SmsBlend 短信实现 * @author :Wind - */ + */ public synchronized SmsBlend getLoadServer() { int totalWeight = 0; LoadServer selectedLoadServer = null; @@ -91,19 +93,22 @@ public class SmsLoad { } /** - * starConfig + * starConfig *

创建smsBlend并加入到负载均衡器 + * * @param supplierConfig 厂商配置 - * @param supplierType 厂商枚举 + * @param supplierType 厂商枚举 * @author :Wind - */ - public static void starConfig(SupplierConfig supplierConfig, SupplierType supplierType){ + */ + public static void starConfig(SupplierConfig supplierConfig, SupplierType supplierType) { BaseProviderFactory providerFactory = supplierType.getProviderFactory(); SmsBlend smsBlend = providerFactory.createMultitonSms(supplierConfig); - smsLoad.addLoadServer(smsBlend, Integer.parseInt(ReflectUtil.getValues(supplierConfig).get("weight"))); + Map supplierConfigMap = BeanUtil.beanToMap(supplierConfig); + Object weight = supplierConfigMap.getOrDefault("weight", 1); + smsLoad.addLoadServer(smsBlend, Integer.parseInt(weight.toString())); } - public static SmsLoad getBeanLoad(){ + public static SmsLoad getBeanLoad() { return smsLoad; } } From 4f56766c0e1d888ab940619f588ab0d749bf81d7 Mon Sep 17 00:00:00 2001 From: handy Date: Thu, 20 Jul 2023 15:11:47 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=B3=A8=E5=85=A5=E7=9A=84ConditionalOnPrope?= =?UTF-8?q?rty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sms4j/starter/config/SupplierConfig.java | 66 +++++++++---------- 1 file changed, 32 insertions(+), 34 deletions(-) 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/config/SupplierConfig.java index 6f7d3700..d1badb4e 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/config/SupplierConfig.java @@ -8,74 +8,76 @@ 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.netease.config.NeteaseConfig; -import org.dromara.sms4j.starter.utils.SmsSpringUtil; 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.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; -import javax.annotation.PostConstruct; -import java.util.Map; - public class SupplierConfig { - /** 阿里差异化配置*/ + /** + * 阿里差异化配置 + */ @Bean @ConfigurationProperties(prefix = "sms.alibaba") - @ConditionalOnProperty(prefix = "sms", name = "alibaba") - protected AlibabaConfig alibabaConfig(){ + protected AlibabaConfig alibabaConfig() { return SupplierFactory.getAlibabaConfig(); } - /** 华为差异化配置*/ + /** + * 华为差异化配置 + */ @Bean @ConfigurationProperties(prefix = "sms.huawei") - @ConditionalOnProperty(prefix = "sms", name = "huawei") - protected HuaweiConfig huaweiConfig(){ + protected HuaweiConfig huaweiConfig() { return SupplierFactory.getHuaweiConfig(); } - /** 云片短信差异化配置*/ + /** + * 云片短信差异化配置 + */ @Bean @ConfigurationProperties(prefix = "sms.yunpian") - @ConditionalOnProperty(prefix = "sms", name = "yunpian") - protected YunpianConfig yunpianConfig(){ + protected YunpianConfig yunpianConfig() { return SupplierFactory.getYunpianConfig(); } - /** 合一短信差异化配置*/ + /** + * 合一短信差异化配置 + */ @Bean @ConfigurationProperties(prefix = "sms.uni") - @ConditionalOnProperty(prefix = "sms", name = "uni") - protected UniConfig uniConfig(){ + protected UniConfig uniConfig() { return SupplierFactory.getUniConfig(); } - /** 腾讯短信差异化配置*/ + /** + * 腾讯短信差异化配置 + */ @Bean @ConfigurationProperties(prefix = "sms.tencent") - @ConditionalOnProperty(prefix = "sms", name = "tencent") - protected TencentConfig tencentConfig(){ + protected TencentConfig tencentConfig() { return SupplierFactory.getTencentConfig(); } - /** 京东云短信差异化配置 */ + /** + * 京东云短信差异化配置 + */ @Bean @ConfigurationProperties(prefix = "sms.jdcloud") - @ConditionalOnProperty(prefix = "sms", name = "jdcloud") - protected JdCloudConfig jdCloudConfig(){ + protected JdCloudConfig jdCloudConfig() { return SupplierFactory.getJdCloudConfig(); } - /** 容联云短信差异化配置 */ + /** + * 容联云短信差异化配置 + */ @Bean @ConfigurationProperties(prefix = "sms.cloopen") - @ConditionalOnProperty(prefix = "sms", name = "cloopen") - protected CloopenConfig cloopenConfig(){ + protected CloopenConfig cloopenConfig() { return SupplierFactory.getCloopenConfig(); } @@ -84,8 +86,7 @@ public class SupplierConfig { */ @Bean @ConfigurationProperties(prefix = "sms.emay") - @ConditionalOnProperty(prefix = "sms", name = "emay") - protected EmayConfig emayConfig(){ + protected EmayConfig emayConfig() { return SupplierFactory.getEmayConfig(); } @@ -94,8 +95,7 @@ public class SupplierConfig { */ @Bean @ConfigurationProperties(prefix = "sms.ctyun") - @ConditionalOnProperty(prefix = "sms", name = "ctyun") - protected CtyunConfig ctyunConfig(){ + protected CtyunConfig ctyunConfig() { return SupplierFactory.getCtyunConfig(); } @@ -105,8 +105,7 @@ public class SupplierConfig { */ @Bean @ConfigurationProperties(prefix = "sms.netease") - @ConditionalOnProperty(prefix = "sms", name = "netease") - protected NeteaseConfig neteaseConfig(){ + protected NeteaseConfig neteaseConfig() { return SupplierFactory.getNeteaseConfig(); } @@ -115,8 +114,7 @@ public class SupplierConfig { */ @Bean @ConfigurationProperties(prefix = "sms.zhutong") - @ConditionalOnProperty(prefix = "sms", name = "zhutong") - protected ZhutongConfig zhutongConfig(){ + protected ZhutongConfig zhutongConfig() { return SupplierFactory.getZhutongConfig(); } }