mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-07 01:18:33 +08:00
commit
7f8d348e94
@ -5,6 +5,7 @@ import lombok.Data;
|
|||||||
/**
|
/**
|
||||||
* <p>类名: SmsResponse
|
* <p>类名: SmsResponse
|
||||||
* <p>说明: 发送短信返回信息
|
* <p>说明: 发送短信返回信息
|
||||||
|
*
|
||||||
* @author :Wind
|
* @author :Wind
|
||||||
* 2023/3/25 0:25
|
* 2023/3/25 0:25
|
||||||
**/
|
**/
|
||||||
@ -18,16 +19,10 @@ public class SmsResponse {
|
|||||||
*/
|
*/
|
||||||
private boolean success;
|
private boolean success;
|
||||||
|
|
||||||
/** 状态码*/
|
/**
|
||||||
private String code;
|
* 厂商原返回体
|
||||||
/** 返回消息*/
|
*
|
||||||
private String message;
|
* @since 2.3.0
|
||||||
/** 错误码,没有错误信息则为空*/
|
*/
|
||||||
private String errorCode;
|
|
||||||
/** 错误信息,如果没有错误则为空*/
|
|
||||||
private String errMessage;
|
|
||||||
/** 回执ID*/
|
|
||||||
private String bizId;
|
|
||||||
/** 返回体*/
|
|
||||||
private Object data;
|
private Object data;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -93,17 +93,8 @@ public class AlibabaSmsImpl extends AbstractSmsBlend {
|
|||||||
|
|
||||||
private SmsResponse getResponse(JSONObject resJson) {
|
private SmsResponse getResponse(JSONObject resJson) {
|
||||||
SmsResponse smsResponse = new SmsResponse();
|
SmsResponse smsResponse = new SmsResponse();
|
||||||
if (resJson == null) {
|
smsResponse.setSuccess("OK".equals(resJson.getStr("Code")));
|
||||||
smsResponse.setErrorCode("500");
|
smsResponse.setData(resJson);
|
||||||
smsResponse.setErrMessage("aliyun send sms response is null.check param");
|
|
||||||
return smsResponse;
|
|
||||||
}
|
|
||||||
smsResponse.setCode(resJson.getStr("Code"));
|
|
||||||
smsResponse.setMessage(resJson.getStr("Message"));
|
|
||||||
if ("OK".equals(smsResponse.getCode())) {
|
|
||||||
smsResponse.setBizId(resJson.getStr("BizId"));
|
|
||||||
smsResponse.setSuccess(true);
|
|
||||||
}
|
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -59,20 +59,8 @@ public class CloopenHelper {
|
|||||||
.map(JSONUtil::parseObj)
|
.map(JSONUtil::parseObj)
|
||||||
.map(obj -> (Map<String, Object>) obj)
|
.map(obj -> (Map<String, Object>) obj)
|
||||||
.orElse(Collections.emptyMap());
|
.orElse(Collections.emptyMap());
|
||||||
String statusCode = Convert.toStr(responseMap.get("statusCode"));
|
smsResponse.setSuccess("000000".equals(Convert.toStr(responseMap.get("statusCode"))));
|
||||||
String statusMsg = Convert.toStr(responseMap.get("statusMsg"));
|
smsResponse.setData(JSONUtil.toJsonStr(response));
|
||||||
boolean isSuccess = "000000".equals(statusCode);
|
|
||||||
if (isSuccess) {
|
|
||||||
smsResponse.setSuccess(true);
|
|
||||||
smsResponse.setCode(statusCode);
|
|
||||||
smsResponse.setMessage(statusMsg);
|
|
||||||
smsResponse.setData(response);
|
|
||||||
Object bizId = JSONUtil.getByPath(JSONUtil.parse(responseMap), "templateSMS.smsMessageSid");
|
|
||||||
smsResponse.setBizId(Convert.toStr(bizId));
|
|
||||||
} else {
|
|
||||||
smsResponse.setErrMessage(statusMsg);
|
|
||||||
smsResponse.setErrorCode(statusCode);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new SmsBlendException(e.getMessage());
|
throw new SmsBlendException(e.getMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,10 +87,8 @@ public class CtyunSmsImpl extends AbstractSmsBlend {
|
|||||||
|
|
||||||
private SmsResponse getResponse(JSONObject resJson) {
|
private SmsResponse getResponse(JSONObject resJson) {
|
||||||
SmsResponse smsResponse = new SmsResponse();
|
SmsResponse smsResponse = new SmsResponse();
|
||||||
smsResponse.setCode(resJson.getStr("code"));
|
smsResponse.setSuccess("OK".equals(resJson.getStr("code")));
|
||||||
smsResponse.setMessage(resJson.getStr("message"));
|
smsResponse.setData(resJson);
|
||||||
smsResponse.setBizId(resJson.getStr("requestId"));
|
|
||||||
smsResponse.setSuccess("OK".equals(smsResponse.getCode()));
|
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package org.dromara.sms4j.emay.service;
|
package org.dromara.sms4j.emay.service;
|
||||||
|
|
||||||
import cn.hutool.json.JSONArray;
|
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.sms4j.api.AbstractSmsBlend;
|
import org.dromara.sms4j.api.AbstractSmsBlend;
|
||||||
@ -41,7 +40,7 @@ public class EmaySmsImpl extends AbstractSmsBlend {
|
|||||||
params = EmayBuilder.buildRequestBody(config.getAppId(), config.getSecretKey(), phone, message);
|
params = EmayBuilder.buildRequestBody(config.getAppId(), config.getSecretKey(), phone, message);
|
||||||
} catch (SmsBlendException e) {
|
} catch (SmsBlendException e) {
|
||||||
SmsResponse smsResponse = new SmsResponse();
|
SmsResponse smsResponse = new SmsResponse();
|
||||||
smsResponse.setErrMessage(e.getMessage());
|
smsResponse.setSuccess(false);
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
}
|
}
|
||||||
return getSendResponse(params, url);
|
return getSendResponse(params, url);
|
||||||
@ -83,35 +82,17 @@ public class EmaySmsImpl extends AbstractSmsBlend {
|
|||||||
AtomicReference<SmsResponse> smsResponse = new AtomicReference<>();
|
AtomicReference<SmsResponse> smsResponse = new AtomicReference<>();
|
||||||
http.post(requestUrl)
|
http.post(requestUrl)
|
||||||
.addBody(body)
|
.addBody(body)
|
||||||
.onSuccess(((data, req, res) -> smsResponse.set(getSmsResponse(res.get(JSONObject.class)))))
|
.onSuccess(((data, req, res) -> smsResponse.set(this.getSmsResponse(res.get(JSONObject.class)))))
|
||||||
.onError((ex, req, res) -> smsResponse.set(getSmsResponse(res.get(JSONObject.class))))
|
.onError((ex, req, res) -> smsResponse.set(this.getSmsResponse(res.get(JSONObject.class))))
|
||||||
.execute();
|
.execute();
|
||||||
|
|
||||||
return smsResponse.get();
|
return smsResponse.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SmsResponse getSmsResponse(JSONObject execute) {
|
private SmsResponse getSmsResponse(JSONObject resJson) {
|
||||||
SmsResponse smsResponse = new SmsResponse();
|
SmsResponse smsResponse = new SmsResponse();
|
||||||
if (execute == null) {
|
smsResponse.setSuccess("success".equalsIgnoreCase(resJson.getStr("code")));
|
||||||
smsResponse.setErrorCode("500");
|
smsResponse.setData(resJson);
|
||||||
smsResponse.setErrMessage("emay send sms response is null.check param");
|
|
||||||
return smsResponse;
|
|
||||||
}
|
|
||||||
String code = execute.getStr("code");
|
|
||||||
if (SmsUtil.isEmpty(code)) {
|
|
||||||
smsResponse.setErrorCode("emay response code is null");
|
|
||||||
smsResponse.setErrMessage("emay is error");
|
|
||||||
} else {
|
|
||||||
smsResponse.setCode(code);
|
|
||||||
if ("success".equalsIgnoreCase(code)) {
|
|
||||||
smsResponse.setSuccess(true);
|
|
||||||
JSONArray data = execute.getJSONArray("data");
|
|
||||||
JSONObject result = (JSONObject) data.get(0);
|
|
||||||
String smsId = result.getStr("smsId");
|
|
||||||
smsResponse.setBizId(smsId);
|
|
||||||
}
|
|
||||||
smsResponse.setData(execute);
|
|
||||||
}
|
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,58 +0,0 @@
|
|||||||
package org.dromara.sms4j.huawei.entity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* HuaweiError
|
|
||||||
* <p> 华为官方状态码枚举
|
|
||||||
*
|
|
||||||
* @author :Wind
|
|
||||||
* 2023/3/31 22:11
|
|
||||||
**/
|
|
||||||
public enum HuaweiError {
|
|
||||||
E000000("000000","短信平台处理请求成功"),
|
|
||||||
E200015("E200015","待发送短信数量太大"),
|
|
||||||
E200028("E200028","模板变量校验失败"),
|
|
||||||
E200029("E200029","E200029"),
|
|
||||||
E200030("E200030","模板未激活"),
|
|
||||||
E200031("E200031","协议校验失败"),
|
|
||||||
E200033("E200033","模板类型不正确"),
|
|
||||||
E200041("E200041","同一短信内容接收号码重复")
|
|
||||||
;
|
|
||||||
|
|
||||||
private final String value;
|
|
||||||
|
|
||||||
private final String code;
|
|
||||||
|
|
||||||
HuaweiError(String code, String value) {
|
|
||||||
this.value = value;
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
public static String getValue(String code){
|
|
||||||
switch (code){
|
|
||||||
case "000000":
|
|
||||||
return E000000.getValue();
|
|
||||||
case "E200015":
|
|
||||||
return E200015.getValue();
|
|
||||||
case "E200028":
|
|
||||||
return E200028.getValue();
|
|
||||||
case "E200029":
|
|
||||||
return E200029.getValue();
|
|
||||||
case "E200030":
|
|
||||||
return E200030.getValue();
|
|
||||||
case "E200031":
|
|
||||||
return E200031.getValue();
|
|
||||||
case "E200033":
|
|
||||||
return E200033.getValue();
|
|
||||||
case "E200041":
|
|
||||||
return E200041.getValue();
|
|
||||||
}
|
|
||||||
return "服务异常,请查看官方异常码,异常码:"+code;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
package org.dromara.sms4j.huawei.entity;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* HuaweiResponse
|
|
||||||
* <p> 华为响应参数
|
|
||||||
*
|
|
||||||
* @author :Wind
|
|
||||||
* 2023/3/31 22:20
|
|
||||||
**/
|
|
||||||
@Data
|
|
||||||
public class HuaweiResponse {
|
|
||||||
|
|
||||||
/** 请求返回的结果码*/
|
|
||||||
private String code;
|
|
||||||
|
|
||||||
/** 请求返回的结果码描述*/
|
|
||||||
private String description;
|
|
||||||
|
|
||||||
/** 短信ID列表,当目的号码存在多个时,每个号码都会返回一个SmsID。
|
|
||||||
当返回异常响应时不携带此字段*/
|
|
||||||
private List<SmsId> result;
|
|
||||||
}
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
package org.dromara.sms4j.huawei.entity;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SmsId
|
|
||||||
* <p> 短信ID列表
|
|
||||||
*
|
|
||||||
* @author :Wind
|
|
||||||
* 2023/3/31 21:55
|
|
||||||
**/
|
|
||||||
@Data
|
|
||||||
public class SmsId {
|
|
||||||
|
|
||||||
/** 短信的唯一标识*/
|
|
||||||
private String smsMsgId;
|
|
||||||
|
|
||||||
/** 短信发送方的号码*/
|
|
||||||
private String from;
|
|
||||||
|
|
||||||
/** 短信接收方的号码*/
|
|
||||||
private String originTo;
|
|
||||||
|
|
||||||
/** 短信状态码*/
|
|
||||||
private String status;
|
|
||||||
|
|
||||||
/** 短信资源的创建时间,即短信平台接收到用户发送短信请求的时间,为UTC时间*/
|
|
||||||
private String createTime;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package org.dromara.sms4j.huawei.service;
|
package org.dromara.sms4j.huawei.service;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.sms4j.api.AbstractSmsBlend;
|
import org.dromara.sms4j.api.AbstractSmsBlend;
|
||||||
import org.dromara.sms4j.api.entity.SmsResponse;
|
import org.dromara.sms4j.api.entity.SmsResponse;
|
||||||
@ -7,7 +8,6 @@ import org.dromara.sms4j.comm.annotation.Restricted;
|
|||||||
import org.dromara.sms4j.comm.constant.Constant;
|
import org.dromara.sms4j.comm.constant.Constant;
|
||||||
import org.dromara.sms4j.comm.delayedTime.DelayedTime;
|
import org.dromara.sms4j.comm.delayedTime.DelayedTime;
|
||||||
import org.dromara.sms4j.huawei.config.HuaweiConfig;
|
import org.dromara.sms4j.huawei.config.HuaweiConfig;
|
||||||
import org.dromara.sms4j.huawei.entity.HuaweiResponse;
|
|
||||||
import org.dromara.sms4j.huawei.utils.HuaweiBuilder;
|
import org.dromara.sms4j.huawei.utils.HuaweiBuilder;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -16,6 +16,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
import static org.dromara.sms4j.huawei.utils.HuaweiBuilder.listToString;
|
import static org.dromara.sms4j.huawei.utils.HuaweiBuilder.listToString;
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ public class HuaweiSmsImpl extends AbstractSmsBlend {
|
|||||||
@Override
|
@Override
|
||||||
@Restricted
|
@Restricted
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
|
AtomicReference<SmsResponse> reference = new AtomicReference<>();
|
||||||
String url = config.getUrl() + Constant.HUAWEI_REQUEST_URL;
|
String url = config.getUrl() + Constant.HUAWEI_REQUEST_URL;
|
||||||
List<String> list = new ArrayList<>();
|
List<String> list = new ArrayList<>();
|
||||||
for (Map.Entry<String, String> entry : messages.entrySet()) {
|
for (Map.Entry<String, String> entry : messages.entrySet()) {
|
||||||
@ -50,32 +52,13 @@ public class HuaweiSmsImpl extends AbstractSmsBlend {
|
|||||||
headers.put("Authorization", Constant.HUAWEI_AUTH_HEADER_VALUE);
|
headers.put("Authorization", Constant.HUAWEI_AUTH_HEADER_VALUE);
|
||||||
headers.put("X-WSSE", HuaweiBuilder.buildWsseHeader(config.getAppKey(), config.getAppSecret()));
|
headers.put("X-WSSE", HuaweiBuilder.buildWsseHeader(config.getAppKey(), config.getAppSecret()));
|
||||||
headers.put("Content-Type", Constant.FROM_URLENCODED);
|
headers.put("Content-Type", Constant.FROM_URLENCODED);
|
||||||
SmsResponse smsResponse = new SmsResponse();
|
|
||||||
http.post(url)
|
http.post(url)
|
||||||
.addHeader(headers)
|
.addHeader(headers)
|
||||||
.addBody(requestBody)
|
.addBody(requestBody)
|
||||||
.onSuccess(((data, req, res) -> {
|
.onSuccess(((data, req, res) -> reference.set(this.getResponse(res.get(JSONObject.class)))))
|
||||||
HuaweiResponse jsonBody = res.get(HuaweiResponse.class);
|
.onError((ex, req, res) -> reference.set(this.getResponse(res.get(JSONObject.class))))
|
||||||
smsResponse.setCode(jsonBody.getCode());
|
|
||||||
smsResponse.setMessage(jsonBody.getDescription());
|
|
||||||
smsResponse.setBizId(jsonBody.getResult().get(0).getSmsMsgId());
|
|
||||||
smsResponse.setData(jsonBody.getResult());
|
|
||||||
if ("000000".equals(jsonBody.getCode())) {
|
|
||||||
smsResponse.setSuccess(true);
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
.onError((ex, req, res) -> {
|
|
||||||
HuaweiResponse huaweiResponse = res.get(HuaweiResponse.class);
|
|
||||||
if (huaweiResponse == null) {
|
|
||||||
smsResponse.setErrorCode("500");
|
|
||||||
smsResponse.setErrMessage("huawei send sms response is null.check param");
|
|
||||||
} else {
|
|
||||||
smsResponse.setErrMessage(huaweiResponse.getDescription());
|
|
||||||
smsResponse.setErrorCode(huaweiResponse.getCode());
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.execute();
|
.execute();
|
||||||
return smsResponse;
|
return reference.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -89,4 +72,12 @@ public class HuaweiSmsImpl extends AbstractSmsBlend {
|
|||||||
public SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
return sendMessage(listToString(phones), templateId, messages);
|
return sendMessage(listToString(phones), templateId, messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private SmsResponse getResponse(JSONObject resJson) {
|
||||||
|
SmsResponse smsResponse = new SmsResponse();
|
||||||
|
smsResponse.setSuccess("000000".equals(resJson.getStr("Code")));
|
||||||
|
smsResponse.setData(resJson);
|
||||||
|
return smsResponse;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,7 @@ public class JdCloudSmsImpl extends AbstractSmsBlend {
|
|||||||
private final JdCloudConfig config;
|
private final JdCloudConfig config;
|
||||||
|
|
||||||
public JdCloudSmsImpl(SmsClient client, JdCloudConfig config, Executor pool, DelayedTime delayed) {
|
public JdCloudSmsImpl(SmsClient client, JdCloudConfig config, Executor pool, DelayedTime delayed) {
|
||||||
super(pool,delayed);
|
super(pool, delayed);
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
}
|
}
|
||||||
@ -85,17 +85,8 @@ public class JdCloudSmsImpl extends AbstractSmsBlend {
|
|||||||
*/
|
*/
|
||||||
private SmsResponse getSmsResponse(BatchSendResult res) {
|
private SmsResponse getSmsResponse(BatchSendResult res) {
|
||||||
SmsResponse smsResponse = new SmsResponse();
|
SmsResponse smsResponse = new SmsResponse();
|
||||||
smsResponse.setBizId(res.getData().getSequenceNumber());
|
smsResponse.setSuccess(res.getStatus() != null && res.getStatus());
|
||||||
smsResponse.setData(res.getData());
|
smsResponse.setData(res);
|
||||||
smsResponse.setCode(String.valueOf(res.getCode()));
|
|
||||||
smsResponse.setMessage(res.getMessage());
|
|
||||||
Boolean status = res.getStatus();
|
|
||||||
boolean isSuccess = status != null && status;
|
|
||||||
smsResponse.setSuccess(isSuccess);
|
|
||||||
if (!isSuccess) {
|
|
||||||
smsResponse.setErrMessage(res.getMessage());
|
|
||||||
smsResponse.setErrorCode(String.valueOf(res.getCode()));
|
|
||||||
}
|
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,11 @@ import org.dromara.sms4j.comm.exception.SmsBlendException;
|
|||||||
import org.dromara.sms4j.netease.config.NeteaseConfig;
|
import org.dromara.sms4j.netease.config.NeteaseConfig;
|
||||||
import org.dromara.sms4j.netease.utils.NeteaseUtils;
|
import org.dromara.sms4j.netease.utils.NeteaseUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
@ -36,8 +40,7 @@ public class NeteaseSmsImpl extends AbstractSmsBlend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* @param phone 接收短信的手机号
|
||||||
* @param phone 接收短信的手机号
|
|
||||||
* @param message 短信变量 ["xxx","yyy"]
|
* @param message 短信变量 ["xxx","yyy"]
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ -51,7 +54,6 @@ public class NeteaseSmsImpl extends AbstractSmsBlend {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param phone
|
* @param phone
|
||||||
* @param templateId 模板id
|
* @param templateId 模板id
|
||||||
* @param messages 短信变量 key为默认 params value为模板变量值 ["xxx","yyy"]
|
* @param messages 短信变量 key为默认 params value为模板变量值 ["xxx","yyy"]
|
||||||
@ -107,28 +109,16 @@ public class NeteaseSmsImpl extends AbstractSmsBlend {
|
|||||||
.addHeader("CurTime", curTime)
|
.addHeader("CurTime", curTime)
|
||||||
.addHeader("CheckSum", checkSum)
|
.addHeader("CheckSum", checkSum)
|
||||||
.addBody(body)
|
.addBody(body)
|
||||||
.onSuccess(((data, req, res) -> {
|
.onSuccess(((data, req, res) -> reference.set(this.getResponse(res.get(JSONObject.class)))))
|
||||||
reference.set(this.getResponse(res.get(JSONObject.class)));
|
.onError((ex, req, res) -> reference.set(this.getResponse(res.get(JSONObject.class))))
|
||||||
}))
|
|
||||||
.onError((ex, req, res) -> {
|
|
||||||
reference.set(this.getResponse(res.get(JSONObject.class)));
|
|
||||||
})
|
|
||||||
.execute();
|
.execute();
|
||||||
return reference.get();
|
return reference.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
private SmsResponse getResponse(JSONObject jsonObject) {
|
private SmsResponse getResponse(JSONObject jsonObject) {
|
||||||
SmsResponse response = new SmsResponse();
|
SmsResponse response = new SmsResponse();
|
||||||
Integer code = jsonObject.getInteger("code");
|
response.setSuccess(jsonObject.getInteger("code") <= 200);
|
||||||
if (code > 200) {
|
response.setData(jsonObject);
|
||||||
response.setErrorCode(String.valueOf(code));
|
|
||||||
response.setErrMessage(jsonObject.getString("msg"));
|
|
||||||
} else {
|
|
||||||
response.setSuccess(true);
|
|
||||||
response.setCode(String.valueOf(code));
|
|
||||||
response.setMessage(jsonObject.getString("msg"));
|
|
||||||
response.setData(jsonObject.get("obj"));
|
|
||||||
}
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package org.dromara.sms4j.tencent.service;
|
package org.dromara.sms4j.tencent.service;
|
||||||
|
|
||||||
import cn.hutool.json.JSONArray;
|
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import com.jdcloud.sdk.utils.StringUtils;
|
import com.jdcloud.sdk.utils.StringUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -99,28 +98,13 @@ public class TencentSmsImpl extends AbstractSmsBlend {
|
|||||||
JSONObject jsonBody = res.get(JSONObject.class);
|
JSONObject jsonBody = res.get(JSONObject.class);
|
||||||
JSONObject response = jsonBody.getJSONObject("Response");
|
JSONObject response = jsonBody.getJSONObject("Response");
|
||||||
String error = response.getStr("Error");
|
String error = response.getStr("Error");
|
||||||
if (StringUtils.isNotBlank(error)){
|
smsResponse.setSuccess(StringUtils.isBlank(error));
|
||||||
smsResponse.setErrorCode("500");
|
smsResponse.setData(jsonBody);
|
||||||
smsResponse.setErrMessage(error);
|
|
||||||
}else {
|
|
||||||
JSONArray sendStatusSet = response.getJSONArray("SendStatusSet");
|
|
||||||
smsResponse.setBizId(sendStatusSet.getJSONObject(0).getStr("SerialNo"));
|
|
||||||
smsResponse.setMessage(sendStatusSet.getJSONObject(0).getStr("Message"));
|
|
||||||
smsResponse.setCode(sendStatusSet.getJSONObject(0).getStr("Code"));
|
|
||||||
smsResponse.setSuccess(true);
|
|
||||||
}
|
|
||||||
}))
|
}))
|
||||||
.onError((ex, req, res) -> {
|
.onError((ex, req, res) -> {
|
||||||
JSONObject jsonBody = res.get(JSONObject.class);
|
JSONObject jsonBody = res.get(JSONObject.class);
|
||||||
if (jsonBody == null) {
|
smsResponse.setSuccess(false);
|
||||||
smsResponse.setErrorCode("500");
|
smsResponse.setData(jsonBody);
|
||||||
smsResponse.setErrMessage("tencent send sms response is null.check param");
|
|
||||||
} else {
|
|
||||||
JSONObject response = jsonBody.getJSONObject("Response");
|
|
||||||
JSONArray sendStatusSet = response.getJSONArray("SendStatusSet");
|
|
||||||
smsResponse.setErrMessage(sendStatusSet.getJSONObject(0).getStr("Message"));
|
|
||||||
smsResponse.setErrorCode(sendStatusSet.getJSONObject(0).getStr("Code"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.execute();
|
.execute();
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import java.util.concurrent.Executor;
|
|||||||
/**
|
/**
|
||||||
* <p>类名: UniSmsImpl
|
* <p>类名: UniSmsImpl
|
||||||
* <p>说明: uniSms短信实现
|
* <p>说明: uniSms短信实现
|
||||||
|
*
|
||||||
* @author :Wind
|
* @author :Wind
|
||||||
* 2023/3/26 17:10
|
* 2023/3/26 17:10
|
||||||
**/
|
**/
|
||||||
@ -29,19 +30,19 @@ public class UniSmsImpl extends AbstractSmsBlend {
|
|||||||
private final UniConfig config;
|
private final UniConfig config;
|
||||||
|
|
||||||
public UniSmsImpl(UniConfig config, Executor pool, DelayedTime delayed) {
|
public UniSmsImpl(UniConfig config, Executor pool, DelayedTime delayed) {
|
||||||
super(pool,delayed);
|
super(pool, delayed);
|
||||||
this.config = config;
|
this.config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Restricted
|
@Restricted
|
||||||
public SmsResponse sendMessage(String phone, String message) {
|
public SmsResponse sendMessage(String phone, String message) {
|
||||||
if ("".equals(config.getTemplateId()) && "".equals(config.getTemplateName())){
|
if ("".equals(config.getTemplateId()) && "".equals(config.getTemplateName())) {
|
||||||
throw new SmsBlendException("配置文件模板id和模板变量不能为空!");
|
throw new SmsBlendException("配置文件模板id和模板变量不能为空!");
|
||||||
}
|
}
|
||||||
LinkedHashMap<String, String>map = new LinkedHashMap<>();
|
LinkedHashMap<String, String> map = new LinkedHashMap<>();
|
||||||
map.put(config.getTemplateName(),message);
|
map.put(config.getTemplateName(), message);
|
||||||
return sendMessage(phone, config.getTemplateId(),map);
|
return sendMessage(phone, config.getTemplateId(), map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -58,18 +59,18 @@ public class UniSmsImpl extends AbstractSmsBlend {
|
|||||||
@Override
|
@Override
|
||||||
@Restricted
|
@Restricted
|
||||||
public SmsResponse massTexting(List<String> phones, String message) {
|
public SmsResponse massTexting(List<String> phones, String message) {
|
||||||
if ("".equals(config.getTemplateId()) && "".equals(config.getTemplateName())){
|
if ("".equals(config.getTemplateId()) && "".equals(config.getTemplateName())) {
|
||||||
throw new SmsBlendException("配置文件模板id和模板变量不能为空!");
|
throw new SmsBlendException("配置文件模板id和模板变量不能为空!");
|
||||||
}
|
}
|
||||||
LinkedHashMap<String, String>map = new LinkedHashMap<>();
|
LinkedHashMap<String, String> map = new LinkedHashMap<>();
|
||||||
map.put(config.getTemplateName(),message);
|
map.put(config.getTemplateName(), message);
|
||||||
return massTexting(phones, config.getTemplateId(),map);
|
return massTexting(phones, config.getTemplateId(), map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Restricted
|
@Restricted
|
||||||
public SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (phones.size()>1000){
|
if (phones.size() > 1000) {
|
||||||
throw new SmsBlendException("单次发送超过最大发送上限,建议每次群发短信人数低于1000");
|
throw new SmsBlendException("单次发送超过最大发送上限,建议每次群发短信人数低于1000");
|
||||||
}
|
}
|
||||||
Map<String, Object> data = new HashMap<>();
|
Map<String, Object> data = new HashMap<>();
|
||||||
@ -80,20 +81,16 @@ public class UniSmsImpl extends AbstractSmsBlend {
|
|||||||
return getSmsResponse(data);
|
return getSmsResponse(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SmsResponse getSmsResponse( Map<String, Object> data) {
|
private SmsResponse getSmsResponse(Map<String, Object> data) {
|
||||||
SmsResponse smsResponse = new SmsResponse();
|
SmsResponse smsResponse = new SmsResponse();
|
||||||
try {
|
try {
|
||||||
UniResponse send = Uni.getClient().request("sms.message.send", data);
|
UniResponse send = Uni.getClient().request("sms.message.send", data);
|
||||||
smsResponse.setCode(String.valueOf(send.status));
|
|
||||||
smsResponse.setErrorCode(send.code);
|
|
||||||
smsResponse.setMessage(send.message);
|
|
||||||
smsResponse.setBizId(send.requestId);
|
|
||||||
smsResponse.setData(send);
|
|
||||||
smsResponse.setSuccess("Success".equals(send.message));
|
smsResponse.setSuccess("Success".equals(send.message));
|
||||||
}catch(Exception e){
|
smsResponse.setData(send);
|
||||||
smsResponse.setErrMessage(e.getMessage());
|
} catch (Exception e) {
|
||||||
|
smsResponse.setSuccess(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,17 +32,10 @@ public class YunPianSmsImpl extends AbstractSmsBlend {
|
|||||||
private static SmsResponse getSmsResponse(JSONObject execute) {
|
private static SmsResponse getSmsResponse(JSONObject execute) {
|
||||||
SmsResponse smsResponse = new SmsResponse();
|
SmsResponse smsResponse = new SmsResponse();
|
||||||
if (execute == null) {
|
if (execute == null) {
|
||||||
smsResponse.setErrorCode("500");
|
smsResponse.setSuccess(false);
|
||||||
smsResponse.setErrMessage("yunpian send sms response is null.check param");
|
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
}
|
}
|
||||||
smsResponse.setCode(execute.getStr("code"));
|
|
||||||
smsResponse.setMessage(execute.getStr("msg"));
|
|
||||||
smsResponse.setBizId(execute.getStr("sid"));
|
|
||||||
smsResponse.setSuccess(execute.getInt("code") == 0);
|
smsResponse.setSuccess(execute.getInt("code") == 0);
|
||||||
if (!smsResponse.isSuccess()) {
|
|
||||||
smsResponse.setErrMessage(execute.getStr("msg"));
|
|
||||||
}
|
|
||||||
smsResponse.setData(execute);
|
smsResponse.setData(execute);
|
||||||
return smsResponse;
|
return smsResponse;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user