移除冗余异常抛出和使用lombok简化,并优化点代码

This commit is contained in:
handy 2024-01-30 17:40:50 +08:00
parent 55c957ca27
commit fc623cf5a9
58 changed files with 210 additions and 171 deletions

View File

@ -137,7 +137,7 @@ sms:
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request 到 dev-3.x 分支
4. 新建 Pull Request 到 dev-3.0.x 分支
```
## 贡献原则
- 我们原则上欢迎任何人为sms4j添加加瓦贡献代码

View File

@ -60,7 +60,7 @@
<solon.version>2.6.5</solon.version>
<redisson.version>3.17.0</redisson.version>
<jdcloud.version>1.3.3</jdcloud.version>
<hutool.version>5.8.24</hutool.version>
<hutool.version>5.8.25</hutool.version>
<xmlblend.version>2.3.0</xmlblend.version>
<activation.version>1.1.1</activation.version>
<mail.version>1.6.2</mail.version>

View File

@ -22,8 +22,6 @@ import java.util.Objects;
**/
public final class HtmlUtil {
private static final HtmlUtil htmlUtil = new HtmlUtil();
private HtmlUtil() {
}

View File

@ -43,6 +43,7 @@ public class MailBuild {
props.put("mail.smtp.ssl.enable", config.getIsSSL());
// props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory());
this.session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(config.getUsername(), config.getPassword());
}
@ -63,6 +64,7 @@ public class MailBuild {
// props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory());
this.session = Session.getInstance(props,
new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(config.getUsername(), config.getPassword());
}

View File

@ -1,5 +1,6 @@
package org.dromara.email.core.service;
import lombok.Getter;
import org.dromara.email.api.Monitor;
import org.dromara.email.comm.config.MailImapConfig;
import org.dromara.email.comm.entity.MonitorMessage;
@ -32,6 +33,7 @@ import java.util.TimerTask;
public class MonitorService{
private final Store store;
private Monitor monitor;
@Getter
private MailImapConfig mailImapConfig;
private Timer timer;
@ -127,7 +129,4 @@ public class MonitorService{
timer.cancel();
}
public MailImapConfig getMailImapConfig() {
return mailImapConfig;
}
}

View File

@ -12,6 +12,7 @@ import java.util.List;
* @since 2023/10/27 13:03
*/
public interface CoreMethodProcessor extends SmsProcessor {
@Override
default Object[] preProcessor(Method method, Object source, Object[] param) {
String name = method.getName();
int parameterCount = method.getParameterCount();

View File

@ -18,7 +18,7 @@ public interface SmsProcessor extends Order {
return null;
}
default Object exceptionHandleProcessor(Method method, Object source, Object[] param,Exception exception) throws InvocationTargetException, IllegalAccessException {
default Object exceptionHandleProcessor(Method method, Object source, Object[] param,Exception exception) {
return null;
}
}

View File

@ -1,6 +1,9 @@
package org.dromara.sms4j.comm.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* NumberOfParasmeters
* <p> 重载方法的参数个数
@ -8,6 +11,8 @@ package org.dromara.sms4j.comm.constant;
* @author :sh1yu
* 2023/11/01 19:33
**/
@Getter
@AllArgsConstructor
public enum NumberOfParasmeters {
//一个参数
ONE(1),
@ -15,11 +20,7 @@ public enum NumberOfParasmeters {
TWO(2),
//三个参数
THREE(3);
private int code;
NumberOfParasmeters(int code) {
this.code = code;
}
private final int code;
public static NumberOfParasmeters getNumberOfParasmetersEnum(int index) {
switch (index) {
@ -29,7 +30,10 @@ public enum NumberOfParasmeters {
return NumberOfParasmeters.TWO;
case 3:
return NumberOfParasmeters.THREE;
default:
break;
}
throw new IllegalArgumentException("building enum NumberOfParasmeters error,param not match");
}
}

View File

@ -1,11 +1,14 @@
package org.dromara.sms4j.comm.enumerate;
import lombok.Getter;
/**
* ConfigType
* <p>配置文件类型
* @author :Wind
* 2023/4/5 19:08
**/
@Getter
public enum ConfigType {
/** yaml配置文件 */
YAML("yaml"),
@ -18,7 +21,4 @@ public enum ConfigType {
this.name = name;
}
public String getName() {
return name;
}
}

View File

@ -1,6 +1,13 @@
package org.dromara.sms4j.comm.exception;
import lombok.Setter;
@Setter
public class SmsSqlException extends RuntimeException{
/**
* -- SETTER --
* 设置 message
*/
private String message;
@Override
public String getMessage() {
@ -11,10 +18,4 @@ public class SmsSqlException extends RuntimeException{
this.message = message;
}
/**
* 设置 message
*/
public void setMessage(String message) {
this.message = message;
}
}

View File

@ -3,13 +3,11 @@ package org.dromara.sms4j.core.proxy;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.proxy.SmsProcessor;
import org.dromara.sms4j.api.proxy.SuppotFilter;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedList;
import java.util.List;
/**
@ -52,7 +50,7 @@ public class SmsInvocationHandler implements InvocationHandler {
return objects;
}
public void doErrorHandleProcess(Object o, Method method, Object[] objects,Exception e) throws InvocationTargetException, IllegalAccessException {
public void doErrorHandleProcess(Object o, Method method, Object[] objects,Exception e) {
for (SmsProcessor processor : processors) {
processor.exceptionHandleProcessor(method, o, objects,e);
}

View File

@ -8,8 +8,8 @@ import org.dromara.sms4j.api.proxy.Order;
import org.dromara.sms4j.api.proxy.SmsProcessor;
import org.dromara.sms4j.api.proxy.SuppotFilter;
import org.dromara.sms4j.api.proxy.aware.SmsBlendConfigAware;
import org.dromara.sms4j.api.proxy.aware.SmsDaoAware;
import org.dromara.sms4j.api.proxy.aware.SmsConfigAware;
import org.dromara.sms4j.api.proxy.aware.SmsDaoAware;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@ -52,10 +52,8 @@ public abstract class SmsProxyFactory {
//判断当前的执行器有没有开厂商过滤支不支持当前厂商
if (processor instanceof SuppotFilter) {
List<String> supports = ((SuppotFilter) processor).getSupports();
boolean exsit = supports.stream().filter(support -> support.equals(smsBlend.getSupplier())).findAny().isPresent();
if (!exsit) {
return true;
}
boolean exsit = supports.stream().anyMatch(support -> support.equals(smsBlend.getSupplier()));
return !exsit;
}
return false;
}

View File

@ -4,12 +4,13 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.dao.SmsDao;
import org.dromara.sms4j.api.proxy.CoreMethodProcessor;
import org.dromara.sms4j.api.proxy.aware.SmsConfigAware;
import org.dromara.sms4j.api.proxy.aware.SmsDaoAware;
import org.dromara.sms4j.comm.exception.SmsBlendException;
import org.dromara.sms4j.provider.config.SmsConfig;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
/**
* 黑名单前置拦截执行器
@ -17,9 +18,9 @@ import java.util.*;
* @author sh1yu
* @since 2023/10/27 13:03
*/
@Setter
@Slf4j
public class BlackListProcessor implements CoreMethodProcessor, SmsDaoAware {
@Setter
SmsDao smsDao;
@Override
@ -53,7 +54,7 @@ public class BlackListProcessor implements CoreMethodProcessor, SmsDaoAware {
return;
}
for (String phone : phones) {
if (blackList.stream().filter(black -> black.replace("-","").equals(phone)).findAny().isPresent()) {
if (blackList.stream().anyMatch(black -> black.replace("-","").equals(phone))) {
throw new SmsBlendException("The phone:", phone + " hit global blacklist");
}
}

View File

@ -17,14 +17,14 @@ import java.util.List;
* @author sh1yu
* @since 2023/10/27 13:03
*/
@Setter
@Slf4j
public class BlackListRecordingProcessor implements SmsProcessor, SmsDaoAware, SmsConfigAware {
@Setter
SmsDao smsDao;
@Setter
Object smsConfig;
@Override
public int getOrder(){
return 1;
}
@ -32,28 +32,28 @@ public class BlackListRecordingProcessor implements SmsProcessor, SmsDaoAware, S
@Override
public Object[] preProcessor(Method method, Object source, Object[] param) {
//添加到黑名单
if (method.getName().equals("joinInBlacklist")) {
if ("joinInBlacklist".equals(method.getName())) {
String cacheKey = getCacheKey();
ArrayList<String> blackList = getBlackList(cacheKey);
blackList.add((String) param[0]);
flushBlackList(cacheKey,blackList);
}
//从黑名单移除
if (method.getName().equals("removeFromBlacklist")) {
if ("removeFromBlacklist".equals(method.getName())) {
String cacheKey = getCacheKey();
ArrayList<String> blackList = getBlackList(cacheKey);
blackList.remove((String) param[0]);
flushBlackList(cacheKey,blackList);
}
//批量添加到黑名单
if (method.getName().equals("batchJoinBlacklist")) {
if ("batchJoinBlacklist".equals(method.getName())) {
String cacheKey = getCacheKey();
ArrayList<String> blackList = getBlackList(cacheKey);
blackList.addAll((List<String>) param[0]);
flushBlackList(cacheKey,blackList);
}
//批量从黑名单移除
if (method.getName().equals("batchRemovalFromBlacklist")) {
if ("batchRemovalFromBlacklist".equals(method.getName())) {
String cacheKey = getCacheKey();
ArrayList<String> blackList = getBlackList(cacheKey);
blackList.removeAll((List<String>) param[0]);

View File

@ -1,10 +1,14 @@
package org.dromara.sms4j.core.proxy.processor;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.proxy.CoreMethodProcessor;
import org.dromara.sms4j.comm.exception.SmsBlendException;
import java.util.*;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
@ -47,20 +51,20 @@ public class CoreMethodParamValidateProcessor implements CoreMethodProcessor {
public void validateMessage(Object messageObj) {
if (messageObj instanceof String){
String message = (String) messageObj;
if (null == message || "".equals(message)) {
if (StrUtil.isBlank(message)) {
throw new SmsBlendException("cant send a null message!");
}
}
if (messageObj instanceof Map){
Map message = (Map) messageObj;
if (message.size()<1) {
if (message.isEmpty()) {
throw new SmsBlendException("cant send a null message!");
}
}
}
public void validatePhone(String phone) {
if (null == phone || "".equals(phone)) {
if (StrUtil.isBlank(phone)) {
throw new SmsBlendException("cant send message to null!");
}
}
@ -70,7 +74,7 @@ public class CoreMethodParamValidateProcessor implements CoreMethodProcessor {
throw new SmsBlendException("cant send message to null!");
}
for (String phone : phones) {
if (null != phone && !"".equals(phone)) {
if (StrUtil.isNotBlank(phone)) {
return;
}
}
@ -78,7 +82,7 @@ public class CoreMethodParamValidateProcessor implements CoreMethodProcessor {
}
public void validateMessages(String templateId, LinkedHashMap<String, String> messages) {
if (null != templateId && !"".equals(templateId) && (messages == null || messages.size() < 1)) {
if (StrUtil.isNotBlank(templateId) && CollUtil.isEmpty(messages)) {
throw new SmsBlendException("cant use template without template param");
}
}

View File

@ -22,6 +22,7 @@ import java.util.Objects;
* @author sh1yu
* @since 2023/10/27 13:03
*/
@Setter
@Slf4j
public class RestrictedProcessor implements CoreMethodProcessor, SmsDaoAware {
static Long minTimer = 60 * 1000L;
@ -31,7 +32,6 @@ public class RestrictedProcessor implements CoreMethodProcessor, SmsDaoAware {
/**
* 缓存实例
*/
@Setter
private SmsDao smsDao;
@Override

View File

@ -4,17 +4,14 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.dao.SmsDao;
import org.dromara.sms4j.api.proxy.CoreMethodProcessor;
import org.dromara.sms4j.api.proxy.SmsProcessor;
import org.dromara.sms4j.api.proxy.aware.SmsBlendConfigAware;
import org.dromara.sms4j.api.proxy.aware.SmsDaoAware;
import org.dromara.sms4j.comm.exception.SmsBlendException;
import org.dromara.sms4j.comm.utils.SmsUtils;
import org.dromara.sms4j.provider.config.BaseConfig;
import org.dromara.sms4j.provider.service.AbstractSmsBlend;
import java.lang.reflect.Method;
import java.util.*;
import java.util.Map;
/**
@ -23,6 +20,7 @@ import java.util.*;
* @author sh1yu
* @since 2023/10/27 13:03
*/
@Setter
@Slf4j
public class SingleBlendRestrictedProcessor implements SmsProcessor, SmsDaoAware, SmsBlendConfigAware {
@ -31,10 +29,8 @@ public class SingleBlendRestrictedProcessor implements SmsProcessor, SmsDaoAware
/**
* 缓存实例
*/
@Setter
private SmsDao smsDao;
@Setter
Map smsBlendsConfig;
@Override

View File

@ -1,7 +1,7 @@
package org.dromara.email.jakarta.comm.entity;
import lombok.Data;
import jakarta.mail.Multipart;
import lombok.Data;
import java.util.Date;

View File

@ -22,8 +22,6 @@ import java.util.Objects;
**/
public final class HtmlUtil {
private static final HtmlUtil htmlUtil = new HtmlUtil();
private HtmlUtil() {
}

View File

@ -1,12 +1,12 @@
package org.dromara.email.jakarta.core.factory;
import jakarta.mail.MessagingException;
import org.dromara.email.jakarta.api.Blacklist;
import org.dromara.email.jakarta.api.MailClient;
import org.dromara.email.jakarta.comm.config.MailSmtpConfig;
import org.dromara.email.jakarta.comm.errors.MailException;
import org.dromara.email.jakarta.core.service.MailBuild;
import jakarta.mail.MessagingException;
import java.util.HashMap;
import java.util.Map;

View File

@ -1,12 +1,6 @@
package org.dromara.email.jakarta.core.service;
import cn.hutool.core.collection.CollUtil;
import lombok.Data;
import org.dromara.email.jakarta.api.Blacklist;
import org.dromara.email.jakarta.api.MailClient;
import org.dromara.email.jakarta.comm.config.MailSmtpConfig;
import org.dromara.email.jakarta.comm.errors.MailException;
import jakarta.mail.Authenticator;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
@ -15,6 +9,12 @@ import jakarta.mail.Session;
import jakarta.mail.internet.AddressException;
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMessage;
import lombok.Data;
import org.dromara.email.jakarta.api.Blacklist;
import org.dromara.email.jakarta.api.MailClient;
import org.dromara.email.jakarta.comm.config.MailSmtpConfig;
import org.dromara.email.jakarta.comm.errors.MailException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@ -43,6 +43,7 @@ public class MailBuild {
props.put("mail.smtp.ssl.enable", config.getIsSSL());
// props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory());
this.session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(config.getUsername(), config.getPassword());
}
@ -63,6 +64,7 @@ public class MailBuild {
// props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory());
this.session = Session.getInstance(props,
new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(config.getUsername(), config.getPassword());
}

View File

@ -9,6 +9,12 @@ import cn.hutool.http.HttpUtil;
import jakarta.activation.DataHandler;
import jakarta.activation.DataSource;
import jakarta.activation.FileDataSource;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
import jakarta.mail.Multipart;
import jakarta.mail.Transport;
import jakarta.mail.internet.MimeBodyPart;
import jakarta.mail.internet.MimeMultipart;
import jakarta.mail.util.ByteArrayDataSource;
import org.dromara.email.jakarta.api.MailClient;
import org.dromara.email.jakarta.comm.constants.FileConstants;
@ -17,13 +23,6 @@ import org.dromara.email.jakarta.comm.errors.MailException;
import org.dromara.email.jakarta.comm.utils.HtmlUtil;
import org.dromara.email.jakarta.comm.utils.ZipUtils;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
import jakarta.mail.Multipart;
import jakarta.mail.Transport;
import jakarta.mail.internet.MimeBodyPart;
import jakarta.mail.internet.MimeMultipart;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

View File

@ -1,10 +1,5 @@
package org.dromara.email.jakarta.core.service;
import org.dromara.email.jakarta.api.Monitor;
import org.dromara.email.jakarta.comm.config.MailImapConfig;
import org.dromara.email.jakarta.comm.entity.MonitorMessage;
import org.dromara.email.jakarta.comm.errors.MailException;
import jakarta.mail.BodyPart;
import jakarta.mail.Flags;
import jakarta.mail.Folder;
@ -14,6 +9,12 @@ import jakarta.mail.Multipart;
import jakarta.mail.Session;
import jakarta.mail.Store;
import jakarta.mail.search.FlagTerm;
import lombok.Getter;
import org.dromara.email.jakarta.api.Monitor;
import org.dromara.email.jakarta.comm.config.MailImapConfig;
import org.dromara.email.jakarta.comm.entity.MonitorMessage;
import org.dromara.email.jakarta.comm.errors.MailException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@ -32,6 +33,7 @@ import java.util.TimerTask;
public class MonitorService{
private final Store store;
private Monitor monitor;
@Getter
private MailImapConfig mailImapConfig;
private Timer timer;
@ -127,7 +129,4 @@ public class MonitorService{
timer.cancel();
}
public MailImapConfig getMailImapConfig() {
return mailImapConfig;
}
}

View File

@ -19,10 +19,14 @@ import org.dromara.sms4j.cloopen.config.CloopenFactory;
import org.dromara.sms4j.comm.constant.Constant;
import org.dromara.sms4j.comm.exception.SmsBlendException;
import org.dromara.sms4j.comm.utils.SmsUtils;
import org.dromara.sms4j.core.proxy.EnvirmentHolder;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.core.proxy.processor.*;
import org.dromara.sms4j.core.proxy.EnvirmentHolder;
import org.dromara.sms4j.core.proxy.SmsProxyFactory;
import org.dromara.sms4j.core.proxy.processor.BlackListProcessor;
import org.dromara.sms4j.core.proxy.processor.BlackListRecordingProcessor;
import org.dromara.sms4j.core.proxy.processor.CoreMethodParamValidateProcessor;
import org.dromara.sms4j.core.proxy.processor.RestrictedProcessor;
import org.dromara.sms4j.core.proxy.processor.SingleBlendRestrictedProcessor;
import org.dromara.sms4j.ctyun.config.CtyunFactory;
import org.dromara.sms4j.dingzhong.config.DingZhongFactory;
import org.dromara.sms4j.emay.config.EmayFactory;
@ -43,7 +47,6 @@ import org.dromara.sms4j.zhutong.config.ZhutongFactory;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;

View File

@ -1,15 +1,13 @@
package org.dromara.sms4j.javase.config;
import lombok.Getter;
import org.dromara.sms4j.api.dao.SmsDao;
public class SESmsDaoHolder {
@Getter
private static SmsDao smsDao = null;
public static SmsDao getSmsDao() {
return smsDao;
}
public static void setSmsDao(SmsDao smsDao) {
SESmsDaoHolder.smsDao = smsDao;
}

View File

@ -1,5 +1,8 @@
package org.dromara.oa.comm.enums;
import lombok.Getter;
@Getter
public enum MessageType {
// 钉钉支持类型
DINGTALK_TEXT("text"),
@ -30,7 +33,4 @@ public enum MessageType {
private final String name;
public String getName() {
return name;
}
}

View File

@ -1,13 +1,25 @@
package org.dromara.oa.comm.enums;
import lombok.Getter;
public enum OaType {
/**
* 钉钉
*/
DINGTALK("dingding", "https://oapi.dingtalk.com/robot/send?access_token=", true),
/**
* 微信
*/
WETALK("wetalk", "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=", true),
/**
* 飞书
*/
BYTETALK("feishu", "https://open.feishu.cn/open-apis/bot/v2/hook/", true),
;
private String type;
private String robotUrl;
@Getter
private final String type;
private final String robotUrl;
OaType(String type, String robotUrl, boolean enabled) {
@ -15,10 +27,6 @@ public enum OaType {
this.robotUrl = robotUrl;
}
public String getType() {
return type;
}
public String getUrl() {
return robotUrl;
}

View File

@ -17,9 +17,9 @@ import java.util.Base64;
import java.util.List;
import java.util.Objects;
import static org.dromara.oa.comm.enums.MessageType.DINGTALK_LINK;
import static org.dromara.oa.comm.enums.MessageType.DINGTALK_MARKDOWN;
import static org.dromara.oa.comm.enums.MessageType.DINGTALK_TEXT;
import static org.dromara.oa.comm.enums.MessageType.DINGTALK_LINK;
/**
* 钉钉通知签名和信息构建

View File

@ -26,6 +26,7 @@ public abstract class OaAbstractProviderFactory<S extends OaSender, C extends Oa
*
* @return 配置类
*/
@Override
public Class<C> getConfigClass() {
return configClass;
}

View File

@ -3,8 +3,6 @@ package org.dromara.oa.core.provider.factory;
import org.dromara.oa.api.OaSender;
import org.dromara.oa.comm.config.OaSupplierConfig;
import java.util.concurrent.Executor;
public interface OaBaseProviderFactory<S extends OaSender, C extends OaSupplierConfig> {
/**

View File

@ -1,10 +1,15 @@
package org.dromara.oa.core.provider.factory;
import org.dromara.oa.comm.task.delayed.DelayedTime;
import lombok.Getter;
import org.dromara.oa.comm.entity.Request;
import org.dromara.oa.comm.task.delayed.DelayedTime;
import org.dromara.oa.core.provider.config.OaConfig;
import java.util.concurrent.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class OaBeanFactory {
@ -12,15 +17,18 @@ public class OaBeanFactory {
private static DelayedTime delayedTime;
/** 线程池*/
@Getter
private static Executor executor;
/** 核心配置信息*/
private static OaConfig oaConfig;
/** 优先级队列*/
@Getter
private static PriorityBlockingQueue<Request> priorityBlockingQueue;
/** 优先级队列*/
@Getter
private static Boolean priorityExecutorThreadStatus = false;
private OaBeanFactory() {
@ -58,10 +66,6 @@ public class OaBeanFactory {
return priorityBlockingQueue;
}
public static Executor getExecutor() {
return executor;
}
public static OaConfig getSmsConfig(){
if (oaConfig == null){
oaConfig = new OaConfig();
@ -69,14 +73,6 @@ public class OaBeanFactory {
return oaConfig;
}
public static PriorityBlockingQueue<Request> getPriorityBlockingQueue(){
return priorityBlockingQueue;
}
public static Boolean getPriorityExecutorThreadStatus() {
return priorityExecutorThreadStatus;
}
public static Boolean setPriorityExecutorThreadStatus(Boolean bo) {
priorityExecutorThreadStatus=bo;
return priorityExecutorThreadStatus;

View File

@ -70,15 +70,18 @@ public abstract class AbstractOaBlend<C extends OaSupplierConfig> implements OaS
}
@Override
public final void senderAsync(Request request, MessageType messageType) {
pool.execute(() -> sender(request, messageType));
}
@Override
public final void senderAsync(Request request, MessageType messageType, OaCallBack callBack) {
CompletableFuture<Response> future = CompletableFuture.supplyAsync(() -> sender(request, messageType));
future.thenAcceptAsync(callBack::callBack);
}
@Override
public final void senderAsyncByPriority(Request request, MessageType messageType) {
request.setMessageType(messageType);
priorityQueueMap.offer(request);

View File

@ -2,12 +2,13 @@ package org.dromara.oa.core.support;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import java.util.Map;
public class HttpClientImpl extends AbstractHttpClient {
@Override
public <T> String post(StringBuilder url, Map<String, String> headers, T message) throws Exception {
public <T> String post(StringBuilder url, Map<String, String> headers, T message) {
// 构建请求体
// 发送POST请求
HttpResponse response = HttpRequest.post(url.toString())

View File

@ -12,6 +12,6 @@ public interface MsgHttpClient {
String post(String url, Map<String, String> headers);
<T> String post(StringBuilder url, Map<String, String> headers, T message) throws Exception;
<T> String post(StringBuilder url, Map<String, String> headers, T message);
}

View File

@ -65,7 +65,7 @@ public class AlibabaSmsImpl extends AbstractSmsBlend<AlibabaConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -47,7 +47,7 @@ public class CloopenSmsImpl extends AbstractSmsBlend<CloopenConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -14,7 +14,6 @@ import org.dromara.sms4j.comm.exception.SmsBlendException;
import org.dromara.sms4j.comm.utils.SmsHttpUtils;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
/**

View File

@ -52,7 +52,7 @@ public class CtyunSmsImpl extends AbstractSmsBlend<CtyunConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -10,7 +10,6 @@ import org.dromara.sms4j.comm.utils.SmsHttpUtils;
import org.dromara.sms4j.comm.utils.SmsUtils;
import org.dromara.sms4j.dingzhong.config.DingZhongConfig;
import java.util.LinkedHashMap;
import java.util.Map;
/**

View File

@ -67,7 +67,7 @@ public class EmaySmsImpl extends AbstractSmsBlend<EmayConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -51,7 +51,7 @@ public class HuaweiSmsImpl extends AbstractSmsBlend<HuaweiConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -1,6 +1,7 @@
package org.dromara.sms4j.huawei.utils;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import org.dromara.sms4j.comm.constant.Constant;
import javax.net.ssl.HttpsURLConnection;
@ -12,8 +13,6 @@ import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@ -21,11 +20,13 @@ import java.util.Map;
import java.util.UUID;
public class HuaweiBuilder {
private HuaweiBuilder(){}
private HuaweiBuilder() {
}
/**
* buildWsseHeader
* <p>构造X-WSSE参数值
*
* @author :Wind
*/
public static String buildWsseHeader(String appKey, String appSecret) {
@ -55,10 +56,15 @@ public class HuaweiBuilder {
static void trustAllHttpsCertificates() throws Exception {
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@ -72,6 +78,7 @@ public class HuaweiBuilder {
/**
* buildRequestBody
* <p>构造请求Body体
*
* @param sender 国内短信签名通道号
* @param receiver 短信接收者
* @param templateId 短信模板id
@ -87,7 +94,7 @@ public class HuaweiBuilder {
System.out.println("buildRequestBody(): sender, receiver or templateId is null.");
return null;
}
Map<String, String> map = new HashMap<String, String>();
Map<String, String> map = new HashMap<>();
map.put("from", sender);
map.put("to", receiver);
@ -131,17 +138,8 @@ public class HuaweiBuilder {
return stringBuffer.toString();
}
static String dateFormat(Date date){
return SDF.format(date);
private static String dateFormat(Date date) {
return DateUtil.format(date, Constant.HUAWEI_JAVA_DATE);
}
static Date strForDate(String date){
try {
return SDF.parse(date);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
private static final SimpleDateFormat SDF = new SimpleDateFormat(Constant.HUAWEI_JAVA_DATE);
}

View File

@ -55,7 +55,7 @@ public class JdCloudSmsImpl extends AbstractSmsBlend<JdCloudConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -11,7 +11,13 @@ import org.dromara.sms4j.lianlu.req.LianLuRequest;
import org.dromara.sms4j.lianlu.utils.LianLuUtils;
import org.dromara.sms4j.provider.service.AbstractSmsBlend;
import java.util.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
import java.util.concurrent.Executor;
@Slf4j
@ -28,6 +34,7 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
super(config);
}
@Override
public String getSupplier() {
return SupplierConstant.LIANLU;
}
@ -41,6 +48,7 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
* @param templateParam 模板变量
* @return
*/
@Override
public SmsResponse sendMessage(String phone, String templateParam) {
return this.massTexting(Collections.singletonList(phone), templateParam);
}
@ -48,7 +56,7 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}
@ -61,16 +69,19 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
* @param messages key无实际意义value为模板变量值
* @return
*/
@Override
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
return this.massTexting(Collections.singletonList(phone), templateId, messages);
}
@Override
public SmsResponse massTexting(List<String> phones, String templateParam) {
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("", templateParam);
return massTexting(phones, getConfig().getTemplateId(), map);
}
@Override
public SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages) {
LianLuRequest req = getRequest();
req.setType(TEMPLATE_MSG)

View File

@ -4,7 +4,9 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeMap;
public class LianLuUtils {
private static final Set<String> IGNORE_FILED_SET = new HashSet<>();

View File

@ -64,7 +64,7 @@ public class NeteaseSmsImpl extends AbstractSmsBlend<NeteaseConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -30,6 +30,7 @@ public abstract class AbstractProviderFactory<S extends SmsBlend, C extends Supp
* 获取配置类
* @return 配置类
*/
@Override
public Class<C> getConfigClass() {
return configClass;
}

View File

@ -63,6 +63,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @author :Wind
*/
@Override
public abstract SmsResponse sendMessage(String phone, String message);
/**
@ -72,6 +73,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @param messages 模板内容
* @author :Wind
*/
@Override
public abstract SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages);
/**
@ -83,6 +85,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @author :Wind
*/
@Override
public abstract SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages);
/**
@ -92,6 +95,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @author :Wind
*/
@Override
public abstract SmsResponse massTexting(List<String> phones, String message);
/**
@ -101,6 +105,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @author :Wind
*/
@Override
public abstract SmsResponse massTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages);
/**
@ -112,6 +117,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @param callBack 回调
* @author :Wind
*/
@Override
public final void sendMessageAsync(String phone, String message, CallBack callBack){
CompletableFuture<SmsResponse> smsResponseCompletableFuture = CompletableFuture.supplyAsync(() -> sendMessage(phone, message), pool);
smsResponseCompletableFuture.thenAcceptAsync(callBack::callBack);
@ -125,6 +131,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @param message 发送内容
* @author :Wind
*/
@Override
public final void sendMessageAsync(String phone, String message){
pool.execute(() -> {
sendMessage(phone, message);
@ -141,6 +148,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @author :Wind
*/
@Override
public final void sendMessageAsync(String phone, String templateId, LinkedHashMap<String, String> messages, CallBack callBack){
CompletableFuture<SmsResponse> smsResponseCompletableFuture = CompletableFuture.supplyAsync(() -> sendMessage(phone,templateId, messages), pool);
smsResponseCompletableFuture.thenAcceptAsync(callBack::callBack);
@ -154,6 +162,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @param messages key为模板变量名称 value为模板变量值
* @author :Wind
*/
@Override
public final void sendMessageAsync(String phone, String templateId, LinkedHashMap<String, String> messages){
pool.execute(() -> {
sendMessage(phone, templateId, messages);
@ -169,6 +178,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @param delayedTime 延迟时间
* @author :Wind
*/
@Override
public final void delayedMessage(String phone, String message, Long delayedTime){
this.delayed.schedule(new TimerTask() {
@Override
@ -188,6 +198,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @param delayedTime 延迟的时间
* @author :Wind
*/
@Override
public final void delayedMessage(String phone, String templateId, LinkedHashMap<String, String> messages, Long delayedTime){
this.delayed.schedule(new TimerTask() {
@Override
@ -204,6 +215,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @param phones 要群体发送的手机号码
* @author :Wind
*/
@Override
public final void delayMassTexting(List<String> phones, String message, Long delayedTime){
this.delayed.schedule(new TimerTask() {
@Override
@ -223,6 +235,7 @@ public abstract class AbstractSmsBlend<C extends SupplierConfig> implements SmsB
* @param delayedTime 延迟的时间
* @author :Wind
*/
@Override
public final void delayMassTexting(List<String> phones, String templateId, LinkedHashMap<String, String> messages, Long delayedTime){
this.delayed.schedule(new TimerTask() {
@Override

View File

@ -55,7 +55,7 @@ public class TencentSmsImpl extends AbstractSmsBlend<TencentConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -9,7 +9,6 @@ import org.dromara.sms4j.comm.exception.SmsBlendException;
import org.dromara.sms4j.comm.utils.SmsHttpUtils;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
@ -67,7 +66,7 @@ public class UniClient {
private Map<String, Object> sign(final Map<String, Object> query) {
if (this.accessKeySecret != null) {
query.put("algorithm", this.signingAlgorithm);
query.put("timestamp", new Date().getTime());
query.put("timestamp", System.currentTimeMillis());
query.put("nonce", UUID.randomUUID().toString().replaceAll("-", ""));
String strToSign = UniClient.queryStringify(query);

View File

@ -74,7 +74,7 @@ public class YunPianSmsImpl extends AbstractSmsBlend<YunpianConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -71,7 +71,7 @@ public class ZhutongSmsImpl extends AbstractSmsBlend<ZhutongConfig> {
@Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>();
messages = new LinkedHashMap<>();
}
return sendMessage(phone, getConfig().getTemplateId(), messages);
}

View File

@ -10,10 +10,14 @@ import org.dromara.sms4j.api.universal.SupplierConfig;
import org.dromara.sms4j.cloopen.config.CloopenFactory;
import org.dromara.sms4j.comm.constant.Constant;
import org.dromara.sms4j.comm.utils.SmsUtils;
import org.dromara.sms4j.core.proxy.EnvirmentHolder;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.core.proxy.processor.*;
import org.dromara.sms4j.core.proxy.EnvirmentHolder;
import org.dromara.sms4j.core.proxy.SmsProxyFactory;
import org.dromara.sms4j.core.proxy.processor.BlackListProcessor;
import org.dromara.sms4j.core.proxy.processor.BlackListRecordingProcessor;
import org.dromara.sms4j.core.proxy.processor.CoreMethodParamValidateProcessor;
import org.dromara.sms4j.core.proxy.processor.RestrictedProcessor;
import org.dromara.sms4j.core.proxy.processor.SingleBlendRestrictedProcessor;
import org.dromara.sms4j.ctyun.config.CtyunFactory;
import org.dromara.sms4j.dingzhong.config.DingZhongFactory;
import org.dromara.sms4j.emay.config.EmayFactory;

View File

@ -106,7 +106,7 @@ public class SmsProcessorTest {
Assert.notNull(knowEx);
knowEx = null;
try {
SmsFactory.getBySupplier(SupplierConstant.UNISMS).massTexting(new ArrayList<String>(), "321321");
SmsFactory.getBySupplier(SupplierConstant.UNISMS).massTexting(new ArrayList<>(), "321321");
} catch (SmsBlendException e) {
knowEx = e;
System.out.println(knowEx.getMessage());

View File

@ -4,9 +4,14 @@ import cn.hutool.core.bean.BeanUtil;
import org.dromara.sms4j.core.datainterface.SmsReadConfig;
import org.dromara.sms4j.provider.config.BaseConfig;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ConfigCombineMapAdeptor<S, M> extends HashMap {
@Override
public M get(Object key) {
Object o = super.get(key);
if (null == o){

View File

@ -12,10 +12,14 @@ import org.dromara.sms4j.comm.constant.Constant;
import org.dromara.sms4j.comm.enumerate.ConfigType;
import org.dromara.sms4j.comm.utils.SmsUtils;
import org.dromara.sms4j.core.datainterface.SmsReadConfig;
import org.dromara.sms4j.core.proxy.EnvirmentHolder;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.core.proxy.processor.*;
import org.dromara.sms4j.core.proxy.EnvirmentHolder;
import org.dromara.sms4j.core.proxy.SmsProxyFactory;
import org.dromara.sms4j.core.proxy.processor.BlackListProcessor;
import org.dromara.sms4j.core.proxy.processor.BlackListRecordingProcessor;
import org.dromara.sms4j.core.proxy.processor.CoreMethodParamValidateProcessor;
import org.dromara.sms4j.core.proxy.processor.RestrictedProcessor;
import org.dromara.sms4j.core.proxy.processor.SingleBlendRestrictedProcessor;
import org.dromara.sms4j.ctyun.config.CtyunFactory;
import org.dromara.sms4j.dingzhong.config.DingZhongFactory;
import org.dromara.sms4j.emay.config.EmayFactory;

View File

@ -1,8 +1,6 @@
package org.dromara.sms4j.starter.holder;
import org.dromara.sms4j.api.dao.SmsDao;
import org.dromara.sms4j.api.dao.SmsDaoDefaultImpl;
import org.dromara.sms4j.comm.utils.SmsUtils;
import org.dromara.sms4j.starter.utils.SmsSpringUtils;
public class SpringSmsDaoHolder {

View File

@ -1,5 +1,6 @@
package org.dromara.sms4j.starter.utils;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@ -19,6 +20,7 @@ import java.util.Map;
@Slf4j
public class SmsSpringUtils implements ApplicationContextAware {
@Getter
private static ApplicationContext applicationContext;
private final DefaultListableBeanFactory beanFactory;
@ -27,10 +29,6 @@ public class SmsSpringUtils implements ApplicationContextAware {
this.beanFactory = beanFactory;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (SmsSpringUtils.applicationContext == null) {