feat: 返回值添加configId,用来确定是哪个渠道发送的消息

This commit is contained in:
handy 2023-07-20 15:10:47 +08:00
parent ea9bd0f626
commit 77f35ba73e
16 changed files with 98 additions and 55 deletions

View File

@ -25,4 +25,11 @@ public class SmsResponse {
* @since 2.3.0
*/
private Object data;
/**
* 配置标识名 如未配置取对应渠道名例如 Alibaba
*
* @since 3.0.0
*/
private String configId;
}

View File

@ -38,7 +38,14 @@ public class BaseConfig {
/**
* 权重
* */
*/
@Builder.Default
private Integer weight = 1;
/**
* 配置标识名 如未配置取对应渠道名例如 Alibaba
*
* @since 3.0.0
*/
private String configId;
}

View File

@ -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<String, String> 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<String> phones, String message) {
LinkedHashMap<String, String> 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;
}

View File

@ -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;
}

View File

@ -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<String, String> 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<String> phones, String message) {
LinkedHashMap<String, String> 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;
}

View File

@ -23,4 +23,11 @@ public class EmayConfig implements SupplierConfig {
private String secretKey ;
/** APP接入地址*/
private String requestUrl;
/**
* 配置标识名 如未配置取对应渠道名例如 Alibaba
*
* @since 3.0.0
*/
private String configId;
}

View File

@ -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;
}

View File

@ -28,4 +28,11 @@ public class HuaweiConfig implements SupplierConfig {
private String statusCallBack;
/** APP接入地址*/
private String url;
/**
* 配置标识名 如未配置取对应渠道名例如 Alibaba
*
* @since 3.0.0
*/
private String configId;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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<String, String> headsMap = TencentUtils.generateHeadsMap(signature, timestamp, tencentSmsConfig.getAction(),
tencentSmsConfig.getVersion(), tencentSmsConfig.getTerritory(), tencentSmsConfig.getRequestUrl());
Map<String, Object> requestBody = TencentUtils.generateRequestBody(phones, tencentSmsConfig.getSdkAppId(),
tencentSmsConfig.getSignature(), templateId, messages);
String url = Constant.HTTPS_PREFIX + tencentSmsConfig.getRequestUrl();
Map<String, String> headsMap = TencentUtils.generateHeadsMap(signature, timestamp, config.getAction(),
config.getVersion(), config.getTerritory(), config.getRequestUrl());
Map<String, Object> 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;
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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<String, String> 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<String> 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<String, String> 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<String> 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<String> phones, LinkedHashMap<String, String> 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) {