mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-07 17:38:38 +08:00
!150 移除多余导入,部分字段设置为final,移除多余泛型,注释调整不使用尾行注释
Merge pull request !150 from handy/dev-3.0.x
This commit is contained in:
commit
8b788fa127
@ -50,23 +50,23 @@ public class MailSmtpConfig {
|
|||||||
* 是否开启ssl 默认开启
|
* 是否开启ssl 默认开启
|
||||||
* */
|
* */
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private String isSSL = "true";
|
private final String isSSL = "true";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否开启验证 默认开启
|
* 是否开启验证 默认开启
|
||||||
* */
|
* */
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private String isAuth = "true";
|
private final String isAuth = "true";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重试间隔(单位:秒),默认为5秒
|
* 重试间隔(单位:秒),默认为5秒
|
||||||
*/
|
*/
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private int retryInterval = 5;
|
private final int retryInterval = 5;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重试次数,默认为1次
|
* 重试次数,默认为1次
|
||||||
*/
|
*/
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private int maxRetries = 1;
|
private final int maxRetries = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,8 +34,8 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
public class MailService implements MailClient {
|
public class MailService implements MailClient {
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger("mailLog");
|
private static final Logger logger = Logger.getLogger("mailLog");
|
||||||
private MailBuild mailBuild;
|
private final MailBuild mailBuild;
|
||||||
|
|
||||||
private MailService(MailBuild mailBuild) {
|
private MailService(MailBuild mailBuild) {
|
||||||
this.mailBuild = mailBuild;
|
this.mailBuild = mailBuild;
|
||||||
@ -137,7 +137,8 @@ public class MailService implements MailClient {
|
|||||||
List<String> cc,
|
List<String> cc,
|
||||||
List<String> bcc) {
|
List<String> bcc) {
|
||||||
int maxRetries = mailBuild.getMaxRetries();
|
int maxRetries = mailBuild.getMaxRetries();
|
||||||
int retryCount = 1; // 初始值为1;则while循环中少发送一次,最后一次发送在判断 retryCount >= maxRetries 这里。
|
// 初始值为1;则while循环中少发送一次,最后一次发送在判断 retryCount >= maxRetries 这里。
|
||||||
|
int retryCount = 1;
|
||||||
boolean retryOnFailure = true;
|
boolean retryOnFailure = true;
|
||||||
|
|
||||||
while (retryOnFailure && retryCount < maxRetries) {
|
while (retryOnFailure && retryCount < maxRetries) {
|
||||||
@ -150,7 +151,8 @@ public class MailService implements MailClient {
|
|||||||
message = messageBuild(mailAddress, title, body, null, null, zipName, cc, bcc, files);
|
message = messageBuild(mailAddress, title, body, null, null, zipName, cc, bcc, files);
|
||||||
}
|
}
|
||||||
Transport.send(message);
|
Transport.send(message);
|
||||||
retryOnFailure = false; // 发送成功,停止重试
|
// 发送成功,停止重试
|
||||||
|
retryOnFailure = false;
|
||||||
} catch (MessagingException | IOException e) {
|
} catch (MessagingException | IOException e) {
|
||||||
retryCount++;
|
retryCount++;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package org.dromara.sms4j.api.proxy;
|
package org.dromara.sms4j.api.proxy;
|
||||||
|
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
/**
|
/**
|
||||||
* 执行器接口
|
* 执行器接口
|
||||||
|
|||||||
@ -6,8 +6,13 @@ import java.util.TimerTask;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class Task {
|
public class Task {
|
||||||
|
/**
|
||||||
private TimerTask runnable;//描述要执行的任务
|
* 描述要执行的任务
|
||||||
private Long time;//什么时间执行,用时间戳来表示
|
*/
|
||||||
|
private TimerTask runnable;
|
||||||
|
/**
|
||||||
|
* 什么时间执行,用时间戳来表示
|
||||||
|
*/
|
||||||
|
private Long time;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package org.dromara.sms4j.comm.exception;
|
|||||||
|
|
||||||
public class SmsBlendException extends RuntimeException{
|
public class SmsBlendException extends RuntimeException{
|
||||||
public String code;
|
public String code;
|
||||||
public String message;
|
public final String message;
|
||||||
public String requestId;
|
public String requestId;
|
||||||
|
|
||||||
public SmsBlendException(String message) {
|
public SmsBlendException(String message) {
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import org.dromara.sms4j.api.SmsBlend;
|
|||||||
import org.dromara.sms4j.api.proxy.SmsProcessor;
|
import org.dromara.sms4j.api.proxy.SmsProcessor;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationHandler;
|
import java.lang.reflect.InvocationHandler;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
@ -28,7 +27,7 @@ public class SmsInvocationHandler implements InvocationHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
|
public Object invoke(Object o, Method method, Object[] objects) {
|
||||||
Object result = null;
|
Object result = null;
|
||||||
//前置执行器
|
//前置执行器
|
||||||
objects = doPreProcess(smsBlend, method, objects);
|
objects = doPreProcess(smsBlend, method, objects);
|
||||||
|
|||||||
@ -62,12 +62,21 @@ public class BlackListRecordingProcessor implements SmsProcessor, SmsDaoAware, S
|
|||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|
||||||
//构建cachekey
|
/**
|
||||||
|
* 构建CacheKey
|
||||||
|
*
|
||||||
|
* @return CacheKey
|
||||||
|
*/
|
||||||
public String getCacheKey(){
|
public String getCacheKey(){
|
||||||
return "sms:blacklist:global";
|
return "sms:blacklist:global";
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取黑名单,没有就新建
|
/**
|
||||||
|
* 获取黑名单,没有就新建
|
||||||
|
*
|
||||||
|
* @param cacheKey 缓存key
|
||||||
|
* @return 黑名单
|
||||||
|
*/
|
||||||
public ArrayList<String> getBlackList(String cacheKey) {
|
public ArrayList<String> getBlackList(String cacheKey) {
|
||||||
ArrayList<String> blackList;
|
ArrayList<String> blackList;
|
||||||
Object cache = smsDao.get(cacheKey);
|
Object cache = smsDao.get(cacheKey);
|
||||||
@ -80,7 +89,12 @@ public class BlackListRecordingProcessor implements SmsProcessor, SmsDaoAware, S
|
|||||||
return blackList;
|
return blackList;
|
||||||
}
|
}
|
||||||
|
|
||||||
//让黑名单生效
|
/**
|
||||||
|
* 让黑名单生效
|
||||||
|
*
|
||||||
|
* @param cacheKey 缓存key
|
||||||
|
* @param blackList 黑命令
|
||||||
|
*/
|
||||||
public void flushBlackList(String cacheKey ,ArrayList<String> blackList) {
|
public void flushBlackList(String cacheKey ,ArrayList<String> blackList) {
|
||||||
smsDao.set(cacheKey, blackList);
|
smsDao.set(cacheKey, blackList);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -68,10 +68,13 @@ public class RestrictedProcessor implements CoreMethodProcessor, SmsDaoAware {
|
|||||||
if (!config.getRestricted()){
|
if (!config.getRestricted()){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Integer accountMax = config.getAccountMax(); // 每日最大发送量
|
// 每日最大发送量
|
||||||
Integer minuteMax = config.getMinuteMax(); // 每分钟最大发送量
|
Integer accountMax = config.getAccountMax();
|
||||||
|
// 每分钟最大发送量
|
||||||
|
Integer minuteMax = config.getMinuteMax();
|
||||||
for (String phone : phones) {
|
for (String phone : phones) {
|
||||||
if (SmsUtils.isNotEmpty(accountMax)) { // 是否配置了每日限制
|
// 是否配置了每日限制
|
||||||
|
if (SmsUtils.isNotEmpty(accountMax)) {
|
||||||
Integer i = (Integer) smsDao.get(REDIS_KEY + phone + "max");
|
Integer i = (Integer) smsDao.get(REDIS_KEY + phone + "max");
|
||||||
if (SmsUtils.isEmpty(i)) {
|
if (SmsUtils.isEmpty(i)) {
|
||||||
smsDao.set(REDIS_KEY + phone + "max", 1, accTimer / 1000);
|
smsDao.set(REDIS_KEY + phone + "max", 1, accTimer / 1000);
|
||||||
@ -82,7 +85,8 @@ public class RestrictedProcessor implements CoreMethodProcessor, SmsDaoAware {
|
|||||||
smsDao.set(REDIS_KEY + phone + "max", i + 1, accTimer / 1000);
|
smsDao.set(REDIS_KEY + phone + "max", i + 1, accTimer / 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (SmsUtils.isNotEmpty(minuteMax)) { // 是否配置了每分钟最大限制
|
// 是否配置了每分钟最大限制
|
||||||
|
if (SmsUtils.isNotEmpty(minuteMax)) {
|
||||||
Integer o = (Integer) smsDao.get(REDIS_KEY + phone);
|
Integer o = (Integer) smsDao.get(REDIS_KEY + phone);
|
||||||
if (SmsUtils.isNotEmpty(o)) {
|
if (SmsUtils.isNotEmpty(o)) {
|
||||||
if (o < minuteMax) {
|
if (o < minuteMax) {
|
||||||
|
|||||||
@ -50,23 +50,23 @@ public class MailSmtpConfig {
|
|||||||
* 是否开启ssl 默认开启
|
* 是否开启ssl 默认开启
|
||||||
* */
|
* */
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private String isSSL = "true";
|
private final String isSSL = "true";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否开启验证 默认开启
|
* 是否开启验证 默认开启
|
||||||
* */
|
* */
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private String isAuth = "true";
|
private final String isAuth = "true";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重试间隔(单位:秒),默认为5秒
|
* 重试间隔(单位:秒),默认为5秒
|
||||||
*/
|
*/
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private int retryInterval = 5;
|
private final int retryInterval = 5;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重试次数,默认为1次
|
* 重试次数,默认为1次
|
||||||
*/
|
*/
|
||||||
@Builder.Default
|
@Builder.Default
|
||||||
private int maxRetries = 1;
|
private final int maxRetries = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,8 +33,8 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
public class MailService implements MailClient {
|
public class MailService implements MailClient {
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger("mailLog");
|
private static final Logger logger = Logger.getLogger("mailLog");
|
||||||
private MailBuild mailBuild;
|
private final MailBuild mailBuild;
|
||||||
|
|
||||||
private MailService(MailBuild mailBuild) {
|
private MailService(MailBuild mailBuild) {
|
||||||
this.mailBuild = mailBuild;
|
this.mailBuild = mailBuild;
|
||||||
@ -130,7 +130,8 @@ public class MailService implements MailClient {
|
|||||||
List<String> cc,
|
List<String> cc,
|
||||||
List<String> bcc) {
|
List<String> bcc) {
|
||||||
int maxRetries = mailBuild.getMaxRetries();
|
int maxRetries = mailBuild.getMaxRetries();
|
||||||
int retryCount = 1; // 初始值为1;则while循环中少发送一次,最后一次发送在判断 retryCount >= maxRetries 这里。
|
// 初始值为1;则while循环中少发送一次,最后一次发送在判断 retryCount >= maxRetries 这里。
|
||||||
|
int retryCount = 1;
|
||||||
boolean retryOnFailure = true;
|
boolean retryOnFailure = true;
|
||||||
|
|
||||||
while (retryOnFailure && retryCount < maxRetries) {
|
while (retryOnFailure && retryCount < maxRetries) {
|
||||||
@ -143,7 +144,8 @@ public class MailService implements MailClient {
|
|||||||
message = messageBuild(mailAddress, title, body, null, null, zipName, cc, bcc, files);
|
message = messageBuild(mailAddress, title, body, null, null, zipName, cc, bcc, files);
|
||||||
}
|
}
|
||||||
Transport.send(message);
|
Transport.send(message);
|
||||||
retryOnFailure = false; // 发送成功,停止重试
|
// 发送成功,停止重试
|
||||||
|
retryOnFailure = false;
|
||||||
} catch (MessagingException | IOException e) {
|
} catch (MessagingException | IOException e) {
|
||||||
retryCount++;
|
retryCount++;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import static org.dromara.oa.comm.enums.OaType.BYTETALK;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class ByteTalkOaImpl extends AbstractOaBlend<ByteTalkConfig> {
|
public class ByteTalkOaImpl extends AbstractOaBlend<ByteTalkConfig> {
|
||||||
|
|
||||||
private HttpClientImpl httpClient = new HttpClientImpl();
|
private final HttpClientImpl httpClient = new HttpClientImpl();
|
||||||
|
|
||||||
public ByteTalkOaImpl(ByteTalkConfig config) {
|
public ByteTalkOaImpl(ByteTalkConfig config) {
|
||||||
super(config);
|
super(config);
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class OaBlendsInitializer {
|
public class OaBlendsInitializer {
|
||||||
private List<OaBaseProviderFactory<? extends OaSender, ? extends OaSupplierConfig>> factoryList;
|
private final List<OaBaseProviderFactory<? extends OaSender, ? extends OaSupplierConfig>> factoryList;
|
||||||
|
|
||||||
private final OaConfig oaConfig;
|
private final OaConfig oaConfig;
|
||||||
private final Map<String, Map<String, Object>> blends;
|
private final Map<String, Map<String, Object>> blends;
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import static org.dromara.oa.comm.enums.OaType.DINGTALK;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class DingTalkOaImpl extends AbstractOaBlend<DingTalkConfig> {
|
public class DingTalkOaImpl extends AbstractOaBlend<DingTalkConfig> {
|
||||||
|
|
||||||
private HttpClientImpl httpClient = new HttpClientImpl();
|
private final HttpClientImpl httpClient = new HttpClientImpl();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 建造一个微信通知对象服务
|
* 建造一个微信通知对象服务
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package org.dromara.oa.core.support;
|
|||||||
|
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import cn.hutool.http.HttpResponse;
|
import cn.hutool.http.HttpResponse;
|
||||||
import cn.hutool.http.HttpUtil;
|
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import static org.dromara.oa.comm.enums.OaType.WETALK;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class WeTalkOaImpl extends AbstractOaBlend<WeTalkConfig> {
|
public class WeTalkOaImpl extends AbstractOaBlend<WeTalkConfig> {
|
||||||
|
|
||||||
private HttpClientImpl httpClient = new HttpClientImpl();
|
private final HttpClientImpl httpClient = new HttpClientImpl();
|
||||||
|
|
||||||
public WeTalkOaImpl(WeTalkConfig config) {
|
public WeTalkOaImpl(WeTalkConfig config) {
|
||||||
super(config);
|
super(config);
|
||||||
|
|||||||
@ -73,7 +73,7 @@ public class AlibabaSmsImpl extends AbstractSmsBlend<AlibabaConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
String messageStr = JSONUtil.toJsonStr(messages);
|
String messageStr = JSONUtil.toJsonStr(messages);
|
||||||
return getSmsResponse(phone, messageStr, templateId);
|
return getSmsResponse(phone, messageStr, templateId);
|
||||||
@ -89,7 +89,7 @@ public class AlibabaSmsImpl extends AbstractSmsBlend<AlibabaConfig> {
|
|||||||
@Override
|
@Override
|
||||||
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 (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
String messageStr = JSONUtil.toJsonStr(messages);
|
String messageStr = JSONUtil.toJsonStr(messages);
|
||||||
return getSmsResponse(SmsUtils.arrayToString(phones), messageStr, templateId);
|
return getSmsResponse(SmsUtils.arrayToString(phones), messageStr, templateId);
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public class CloopenSmsImpl extends AbstractSmsBlend<CloopenConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
return massTexting(Collections.singletonList(phone), templateId, messages);
|
return massTexting(Collections.singletonList(phone), templateId, messages);
|
||||||
}
|
}
|
||||||
@ -70,7 +70,7 @@ public class CloopenSmsImpl extends AbstractSmsBlend<CloopenConfig> {
|
|||||||
@Override
|
@Override
|
||||||
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 (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
CloopenHelper helper = new CloopenHelper(getConfig(), http);
|
CloopenHelper helper = new CloopenHelper(getConfig(), http);
|
||||||
Map<String, Object> paramMap = MapUtil.newHashMap(4, true);
|
Map<String, Object> paramMap = MapUtil.newHashMap(4, true);
|
||||||
|
|||||||
@ -60,7 +60,7 @@ public class CtyunSmsImpl extends AbstractSmsBlend<CtyunConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
String messageStr = JSONUtil.toJsonStr(messages);
|
String messageStr = JSONUtil.toJsonStr(messages);
|
||||||
return getSmsResponse(phone, messageStr, templateId);
|
return getSmsResponse(phone, messageStr, templateId);
|
||||||
@ -76,7 +76,7 @@ public class CtyunSmsImpl extends AbstractSmsBlend<CtyunConfig> {
|
|||||||
@Override
|
@Override
|
||||||
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 (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
String messageStr = JSONUtil.toJsonStr(messages);
|
String messageStr = JSONUtil.toJsonStr(messages);
|
||||||
return getSmsResponse(SmsUtils.arrayToString(phones), messageStr, templateId);
|
return getSmsResponse(SmsUtils.arrayToString(phones), messageStr, templateId);
|
||||||
|
|||||||
@ -70,7 +70,7 @@ public class DingZhongSmsImpl extends AbstractSmsBlend<DingZhongConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
DingZhongHelper helper = new DingZhongHelper(getConfig(), http);
|
DingZhongHelper helper = new DingZhongHelper(getConfig(), http);
|
||||||
Map<String, Object> paramMap = MapUtil.newHashMap(5, true);
|
Map<String, Object> paramMap = MapUtil.newHashMap(5, true);
|
||||||
|
|||||||
@ -83,7 +83,7 @@ public class EmaySmsImpl extends AbstractSmsBlend<EmayConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
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()) {
|
||||||
|
|||||||
@ -59,7 +59,7 @@ public class HuaweiSmsImpl extends AbstractSmsBlend<HuaweiConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
String url = getConfig().getUrl() + Constant.HUAWEI_REQUEST_URL;
|
String url = getConfig().getUrl() + Constant.HUAWEI_REQUEST_URL;
|
||||||
List<String> list = new ArrayList<>();
|
List<String> list = new ArrayList<>();
|
||||||
@ -103,7 +103,7 @@ public class HuaweiSmsImpl extends AbstractSmsBlend<HuaweiConfig> {
|
|||||||
@Override
|
@Override
|
||||||
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 (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
return sendMessage(CollUtil.join(phones, ","), templateId, messages);
|
return sendMessage(CollUtil.join(phones, ","), templateId, messages);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,7 +35,8 @@ public class HuaweiBuilder {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String time = dateFormat(new Date());
|
String time = dateFormat(new Date());
|
||||||
String nonce = UUID.randomUUID().toString().replace("-", ""); //Nonce
|
// Nonce
|
||||||
|
String nonce = UUID.randomUUID().toString().replace("-", "");
|
||||||
MessageDigest md;
|
MessageDigest md;
|
||||||
byte[] passwordDigest = null;
|
byte[] passwordDigest = null;
|
||||||
|
|
||||||
@ -46,8 +47,8 @@ public class HuaweiBuilder {
|
|||||||
} catch (NoSuchAlgorithmException e) {
|
} catch (NoSuchAlgorithmException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
// PasswordDigest
|
||||||
String passwordDigestBase64Str = Base64.encode(passwordDigest); //PasswordDigest
|
String passwordDigestBase64Str = Base64.encode(passwordDigest);
|
||||||
//若passwordDigestBase64Str中包含换行符,请执行如下代码进行修正
|
//若passwordDigestBase64Str中包含换行符,请执行如下代码进行修正
|
||||||
//passwordDigestBase64Str = passwordDigestBase64Str.replaceAll("[\\s*\t\n\r]", "");
|
//passwordDigestBase64Str = passwordDigestBase64Str.replaceAll("[\\s*\t\n\r]", "");
|
||||||
return String.format(Constant.HUAWEI_WSSE_HEADER_FORMAT, appKey, passwordDigestBase64Str, nonce, time);
|
return String.format(Constant.HUAWEI_WSSE_HEADER_FORMAT, appKey, passwordDigestBase64Str, nonce, time);
|
||||||
|
|||||||
@ -75,7 +75,7 @@ public class JdCloudSmsImpl extends AbstractSmsBlend<JdCloudConfig> {
|
|||||||
@Override
|
@Override
|
||||||
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 (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
BatchSendRequest request;
|
BatchSendRequest request;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -84,7 +84,7 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
|
|||||||
@Override
|
@Override
|
||||||
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 (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
LianLuRequest req = getRequest();
|
LianLuRequest req = getRequest();
|
||||||
req.setType(TEMPLATE_MSG)
|
req.setType(TEMPLATE_MSG)
|
||||||
|
|||||||
@ -79,7 +79,7 @@ public class NeteaseSmsImpl extends AbstractSmsBlend<NeteaseConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
Optional.ofNullable(phone).orElseThrow(() -> new SmsBlendException("手机号不能为空"));
|
Optional.ofNullable(phone).orElseThrow(() -> new SmsBlendException("手机号不能为空"));
|
||||||
Optional.ofNullable(getConfig().getTemplateId()).orElseThrow(() -> new SmsBlendException("模板ID不能为空"));
|
Optional.ofNullable(getConfig().getTemplateId()).orElseThrow(() -> new SmsBlendException("模板ID不能为空"));
|
||||||
@ -102,7 +102,7 @@ public class NeteaseSmsImpl extends AbstractSmsBlend<NeteaseConfig> {
|
|||||||
@Override
|
@Override
|
||||||
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 (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
if (phones.size() > 100) {
|
if (phones.size() > 100) {
|
||||||
throw new SmsBlendException("单次发送超过最大发送上限,建议每次群发短信人数低于100");
|
throw new SmsBlendException("单次发送超过最大发送上限,建议每次群发短信人数低于100");
|
||||||
|
|||||||
@ -133,9 +133,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final void sendMessageAsync(String phone, String message){
|
public final void sendMessageAsync(String phone, String message){
|
||||||
pool.execute(() -> {
|
pool.execute(() -> sendMessage(phone, message));
|
||||||
sendMessage(phone, message);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -164,9 +162,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final void sendMessageAsync(String phone, String templateId, LinkedHashMap<String, String> messages){
|
public final void sendMessageAsync(String phone, String templateId, LinkedHashMap<String, String> messages){
|
||||||
pool.execute(() -> {
|
pool.execute(() -> sendMessage(phone, templateId, messages));
|
||||||
sendMessage(phone, templateId, messages);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,12 +1,8 @@
|
|||||||
package org.dromara.sms4j.qiniu.config;
|
package org.dromara.sms4j.qiniu.config;
|
||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.sms4j.comm.constant.SupplierConstant;
|
import org.dromara.sms4j.comm.constant.SupplierConstant;
|
||||||
import org.dromara.sms4j.netease.config.NeteaseConfig;
|
|
||||||
import org.dromara.sms4j.netease.config.NeteaseFactory;
|
|
||||||
import org.dromara.sms4j.netease.service.NeteaseSmsImpl;
|
|
||||||
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
import org.dromara.sms4j.provider.factory.AbstractProviderFactory;
|
||||||
import org.dromara.sms4j.qiniu.service.QiNiuSmsImpl;
|
import org.dromara.sms4j.qiniu.service.QiNiuSmsImpl;
|
||||||
|
|
||||||
|
|||||||
@ -10,14 +10,14 @@ 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.qiniu.config.QiNiuConfig;
|
import org.dromara.sms4j.qiniu.config.QiNiuConfig;
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.InvalidKeyException;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.Base64;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
@ -30,7 +30,7 @@ public class QiNiuUtils {
|
|||||||
|
|
||||||
private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
|
private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
|
||||||
|
|
||||||
public static String getSignature(String method, String url, QiNiuConfig qiNiuConfig, String body, String signDate) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, MalformedURLException {
|
public static String getSignature(String method, String url, QiNiuConfig qiNiuConfig, String body, String signDate) {
|
||||||
URI reqUrl = URI.create(url);
|
URI reqUrl = URI.create(url);
|
||||||
StringBuilder dataToSign = new StringBuilder();
|
StringBuilder dataToSign = new StringBuilder();
|
||||||
dataToSign.append(method.toUpperCase()).append(" ").append(reqUrl.getPath());
|
dataToSign.append(method.toUpperCase()).append(" ").append(reqUrl.getPath());
|
||||||
|
|||||||
@ -60,7 +60,7 @@ public class TencentSmsImpl extends AbstractSmsBlend<TencentConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
|
||||||
if (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
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()) {
|
||||||
@ -83,7 +83,7 @@ public class TencentSmsImpl extends AbstractSmsBlend<TencentConfig> {
|
|||||||
@Override
|
@Override
|
||||||
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 (Objects.isNull(messages)){
|
if (Objects.isNull(messages)){
|
||||||
messages = new LinkedHashMap<String, String>();
|
messages = new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
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()) {
|
||||||
|
|||||||
@ -8,7 +8,7 @@ public class Uni {
|
|||||||
/** 模仿SDK版本*/
|
/** 模仿SDK版本*/
|
||||||
public static final String VERSION = "0.0.4";
|
public static final String VERSION = "0.0.4";
|
||||||
|
|
||||||
public static String signingAlgorithm = "hmac-sha256";
|
public static final String signingAlgorithm = "hmac-sha256";
|
||||||
public static String endpoint = System.getenv().getOrDefault("UNI_ENDPOINT", "https://uni.apistd.com");
|
public static String endpoint = System.getenv().getOrDefault("UNI_ENDPOINT", "https://uni.apistd.com");
|
||||||
public static String accessKeyId = System.getenv("UNI_ACCESS_KEY_ID");
|
public static String accessKeyId = System.getenv("UNI_ACCESS_KEY_ID");
|
||||||
|
|
||||||
|
|||||||
@ -118,7 +118,7 @@ public class UniClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
private String accessKeyId;
|
private final String accessKeyId;
|
||||||
private String accessKeySecret;
|
private String accessKeySecret;
|
||||||
private String endpoint;
|
private String endpoint;
|
||||||
private String signingAlgorithm;
|
private String signingAlgorithm;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class SmsBlendsInitializer {
|
public class SmsBlendsInitializer {
|
||||||
private List<BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig>> factoryList;
|
private final List<BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig>> factoryList;
|
||||||
|
|
||||||
private final SmsConfig smsConfig;
|
private final SmsConfig smsConfig;
|
||||||
private final Map<String, Map<String, Object>> blends;
|
private final Map<String, Map<String, Object>> blends;
|
||||||
|
|||||||
@ -1,14 +1,8 @@
|
|||||||
package org.dromara.sms4j.example;
|
package org.dromara.sms4j.example;
|
||||||
|
|
||||||
import org.dromara.sms4j.api.entity.SmsResponse;
|
|
||||||
import org.dromara.sms4j.comm.constant.SupplierConstant;
|
|
||||||
import org.dromara.sms4j.core.factory.SmsFactory;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主类
|
* 主类
|
||||||
*
|
*
|
||||||
|
|||||||
@ -45,7 +45,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class SmsBlendsInitializer {
|
public class SmsBlendsInitializer {
|
||||||
private List<BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig>> factoryList;
|
private final List<BaseProviderFactory<? extends SmsBlend, ? extends SupplierConfig>> factoryList;
|
||||||
|
|
||||||
private final SmsConfig smsConfig;
|
private final SmsConfig smsConfig;
|
||||||
private final Map<String, Map<String, Object>> blends;
|
private final Map<String, Map<String, Object>> blends;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user