!133 优化一些

Merge pull request !133 from handy/dev-3.0.x
This commit is contained in:
风如歌 2024-02-01 03:16:58 +00:00 committed by Gitee
commit deb13be650
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
58 changed files with 210 additions and 171 deletions

View File

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

View File

@ -60,7 +60,7 @@
<solon.version>2.6.5</solon.version> <solon.version>2.6.5</solon.version>
<redisson.version>3.17.0</redisson.version> <redisson.version>3.17.0</redisson.version>
<jdcloud.version>1.3.3</jdcloud.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> <xmlblend.version>2.3.0</xmlblend.version>
<activation.version>1.1.1</activation.version> <activation.version>1.1.1</activation.version>
<mail.version>1.6.2</mail.version> <mail.version>1.6.2</mail.version>

View File

@ -22,8 +22,6 @@ import java.util.Objects;
**/ **/
public final class HtmlUtil { public final class HtmlUtil {
private static final HtmlUtil htmlUtil = new HtmlUtil();
private 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.enable", config.getIsSSL());
// props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory()); // props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory());
this.session = Session.getInstance(props, new Authenticator() { this.session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() { protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(config.getUsername(), config.getPassword()); return new PasswordAuthentication(config.getUsername(), config.getPassword());
} }
@ -63,6 +64,7 @@ public class MailBuild {
// props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory()); // props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory());
this.session = Session.getInstance(props, this.session = Session.getInstance(props,
new Authenticator() { new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() { protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(config.getUsername(), config.getPassword()); return new PasswordAuthentication(config.getUsername(), config.getPassword());
} }

View File

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

View File

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

View File

@ -18,7 +18,7 @@ public interface SmsProcessor extends Order {
return null; 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; return null;
} }
} }

View File

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

View File

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

View File

@ -1,6 +1,13 @@
package org.dromara.sms4j.comm.exception; package org.dromara.sms4j.comm.exception;
import lombok.Setter;
@Setter
public class SmsSqlException extends RuntimeException{ public class SmsSqlException extends RuntimeException{
/**
* -- SETTER --
* 设置 message
*/
private String message; private String message;
@Override @Override
public String getMessage() { public String getMessage() {
@ -11,10 +18,4 @@ public class SmsSqlException extends RuntimeException{
this.message = message; 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 lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend; import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.proxy.SmsProcessor; import org.dromara.sms4j.api.proxy.SmsProcessor;
import org.dromara.sms4j.api.proxy.SuppotFilter;
import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List;
/** /**
@ -52,7 +50,7 @@ public class SmsInvocationHandler implements InvocationHandler {
return objects; 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) { for (SmsProcessor processor : processors) {
processor.exceptionHandleProcessor(method, o, objects,e); 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.SmsProcessor;
import org.dromara.sms4j.api.proxy.SuppotFilter; import org.dromara.sms4j.api.proxy.SuppotFilter;
import org.dromara.sms4j.api.proxy.aware.SmsBlendConfigAware; 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.SmsConfigAware;
import org.dromara.sms4j.api.proxy.aware.SmsDaoAware;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@ -52,10 +52,8 @@ public abstract class SmsProxyFactory {
//判断当前的执行器有没有开厂商过滤支不支持当前厂商 //判断当前的执行器有没有开厂商过滤支不支持当前厂商
if (processor instanceof SuppotFilter) { if (processor instanceof SuppotFilter) {
List<String> supports = ((SuppotFilter) processor).getSupports(); List<String> supports = ((SuppotFilter) processor).getSupports();
boolean exsit = supports.stream().filter(support -> support.equals(smsBlend.getSupplier())).findAny().isPresent(); boolean exsit = supports.stream().anyMatch(support -> support.equals(smsBlend.getSupplier()));
if (!exsit) { return !exsit;
return true;
}
} }
return false; return false;
} }

View File

@ -4,12 +4,13 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.dao.SmsDao; import org.dromara.sms4j.api.dao.SmsDao;
import org.dromara.sms4j.api.proxy.CoreMethodProcessor; 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.api.proxy.aware.SmsDaoAware;
import org.dromara.sms4j.comm.exception.SmsBlendException; 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 * @author sh1yu
* @since 2023/10/27 13:03 * @since 2023/10/27 13:03
*/ */
@Setter
@Slf4j @Slf4j
public class BlackListProcessor implements CoreMethodProcessor, SmsDaoAware { public class BlackListProcessor implements CoreMethodProcessor, SmsDaoAware {
@Setter
SmsDao smsDao; SmsDao smsDao;
@Override @Override
@ -53,7 +54,7 @@ public class BlackListProcessor implements CoreMethodProcessor, SmsDaoAware {
return; return;
} }
for (String phone : phones) { 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"); throw new SmsBlendException("The phone:", phone + " hit global blacklist");
} }
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,12 +1,6 @@
package org.dromara.email.jakarta.core.service; package org.dromara.email.jakarta.core.service;
import cn.hutool.core.collection.CollUtil; 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.Authenticator;
import jakarta.mail.Message; import jakarta.mail.Message;
import jakarta.mail.MessagingException; import jakarta.mail.MessagingException;
@ -15,6 +9,12 @@ import jakarta.mail.Session;
import jakarta.mail.internet.AddressException; import jakarta.mail.internet.AddressException;
import jakarta.mail.internet.InternetAddress; import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMessage; 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.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -43,6 +43,7 @@ public class MailBuild {
props.put("mail.smtp.ssl.enable", config.getIsSSL()); props.put("mail.smtp.ssl.enable", config.getIsSSL());
// props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory()); // props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory());
this.session = Session.getInstance(props, new Authenticator() { this.session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() { protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(config.getUsername(), config.getPassword()); return new PasswordAuthentication(config.getUsername(), config.getPassword());
} }
@ -63,6 +64,7 @@ public class MailBuild {
// props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory()); // props.put("mail.smtp.ssl.socketFactory", new MailSSLSocketFactory());
this.session = Session.getInstance(props, this.session = Session.getInstance(props,
new Authenticator() { new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() { protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(config.getUsername(), config.getPassword()); 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.DataHandler;
import jakarta.activation.DataSource; import jakarta.activation.DataSource;
import jakarta.activation.FileDataSource; 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 jakarta.mail.util.ByteArrayDataSource;
import org.dromara.email.jakarta.api.MailClient; import org.dromara.email.jakarta.api.MailClient;
import org.dromara.email.jakarta.comm.constants.FileConstants; 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.HtmlUtil;
import org.dromara.email.jakarta.comm.utils.ZipUtils; 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.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;

View File

@ -1,10 +1,5 @@
package org.dromara.email.jakarta.core.service; 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.BodyPart;
import jakarta.mail.Flags; import jakarta.mail.Flags;
import jakarta.mail.Folder; import jakarta.mail.Folder;
@ -14,6 +9,12 @@ import jakarta.mail.Multipart;
import jakarta.mail.Session; import jakarta.mail.Session;
import jakarta.mail.Store; import jakarta.mail.Store;
import jakarta.mail.search.FlagTerm; 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.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -32,6 +33,7 @@ import java.util.TimerTask;
public class MonitorService{ public class MonitorService{
private final Store store; private final Store store;
private Monitor monitor; private Monitor monitor;
@Getter
private MailImapConfig mailImapConfig; private MailImapConfig mailImapConfig;
private Timer timer; private Timer timer;
@ -127,7 +129,4 @@ public class MonitorService{
timer.cancel(); 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.constant.Constant;
import org.dromara.sms4j.comm.exception.SmsBlendException; import org.dromara.sms4j.comm.exception.SmsBlendException;
import org.dromara.sms4j.comm.utils.SmsUtils; 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.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.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.ctyun.config.CtyunFactory;
import org.dromara.sms4j.dingzhong.config.DingZhongFactory; import org.dromara.sms4j.dingzhong.config.DingZhongFactory;
import org.dromara.sms4j.emay.config.EmayFactory; 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.BeanInfo;
import java.beans.Introspector; import java.beans.Introspector;
import java.beans.PropertyDescriptor; import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;

View File

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

View File

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

View File

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

View File

@ -17,9 +17,9 @@ import java.util.Base64;
import java.util.List; import java.util.List;
import java.util.Objects; 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_MARKDOWN;
import static org.dromara.oa.comm.enums.MessageType.DINGTALK_TEXT; 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 配置类 * @return 配置类
*/ */
@Override
public Class<C> getConfigClass() { public Class<C> getConfigClass() {
return configClass; 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.api.OaSender;
import org.dromara.oa.comm.config.OaSupplierConfig; import org.dromara.oa.comm.config.OaSupplierConfig;
import java.util.concurrent.Executor;
public interface OaBaseProviderFactory<S extends OaSender, C extends OaSupplierConfig> { public interface OaBaseProviderFactory<S extends OaSender, C extends OaSupplierConfig> {
/** /**

View File

@ -1,10 +1,15 @@
package org.dromara.oa.core.provider.factory; 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.entity.Request;
import org.dromara.oa.comm.task.delayed.DelayedTime;
import org.dromara.oa.core.provider.config.OaConfig; 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 { public class OaBeanFactory {
@ -12,15 +17,18 @@ public class OaBeanFactory {
private static DelayedTime delayedTime; private static DelayedTime delayedTime;
/** 线程池*/ /** 线程池*/
@Getter
private static Executor executor; private static Executor executor;
/** 核心配置信息*/ /** 核心配置信息*/
private static OaConfig oaConfig; private static OaConfig oaConfig;
/** 优先级队列*/ /** 优先级队列*/
@Getter
private static PriorityBlockingQueue<Request> priorityBlockingQueue; private static PriorityBlockingQueue<Request> priorityBlockingQueue;
/** 优先级队列*/ /** 优先级队列*/
@Getter
private static Boolean priorityExecutorThreadStatus = false; private static Boolean priorityExecutorThreadStatus = false;
private OaBeanFactory() { private OaBeanFactory() {
@ -58,10 +66,6 @@ public class OaBeanFactory {
return priorityBlockingQueue; return priorityBlockingQueue;
} }
public static Executor getExecutor() {
return executor;
}
public static OaConfig getSmsConfig(){ public static OaConfig getSmsConfig(){
if (oaConfig == null){ if (oaConfig == null){
oaConfig = new OaConfig(); oaConfig = new OaConfig();
@ -69,14 +73,6 @@ public class OaBeanFactory {
return oaConfig; return oaConfig;
} }
public static PriorityBlockingQueue<Request> getPriorityBlockingQueue(){
return priorityBlockingQueue;
}
public static Boolean getPriorityExecutorThreadStatus() {
return priorityExecutorThreadStatus;
}
public static Boolean setPriorityExecutorThreadStatus(Boolean bo) { public static Boolean setPriorityExecutorThreadStatus(Boolean bo) {
priorityExecutorThreadStatus=bo; priorityExecutorThreadStatus=bo;
return priorityExecutorThreadStatus; 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) { public final void senderAsync(Request request, MessageType messageType) {
pool.execute(() -> sender(request, messageType)); pool.execute(() -> sender(request, messageType));
} }
@Override
public final void senderAsync(Request request, MessageType messageType, OaCallBack callBack) { public final void senderAsync(Request request, MessageType messageType, OaCallBack callBack) {
CompletableFuture<Response> future = CompletableFuture.supplyAsync(() -> sender(request, messageType)); CompletableFuture<Response> future = CompletableFuture.supplyAsync(() -> sender(request, messageType));
future.thenAcceptAsync(callBack::callBack); future.thenAcceptAsync(callBack::callBack);
} }
@Override
public final void senderAsyncByPriority(Request request, MessageType messageType) { public final void senderAsyncByPriority(Request request, MessageType messageType) {
request.setMessageType(messageType); request.setMessageType(messageType);
priorityQueueMap.offer(request); priorityQueueMap.offer(request);

View File

@ -2,12 +2,13 @@ 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;
public class HttpClientImpl extends AbstractHttpClient { public class HttpClientImpl extends AbstractHttpClient {
@Override @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请求 // 发送POST请求
HttpResponse response = HttpRequest.post(url.toString()) HttpResponse response = HttpRequest.post(url.toString())

View File

@ -12,6 +12,6 @@ public interface MsgHttpClient {
String post(String url, Map<String, String> headers); 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 @Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){ if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>(); messages = new LinkedHashMap<>();
} }
return sendMessage(phone, getConfig().getTemplateId(), messages); return sendMessage(phone, getConfig().getTemplateId(), messages);
} }

View File

@ -47,7 +47,7 @@ public class CloopenSmsImpl extends AbstractSmsBlend<CloopenConfig> {
@Override @Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){ if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>(); messages = new LinkedHashMap<>();
} }
return sendMessage(phone, getConfig().getTemplateId(), messages); 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 org.dromara.sms4j.comm.utils.SmsHttpUtils;
import java.util.Date; import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**

View File

@ -52,7 +52,7 @@ public class CtyunSmsImpl extends AbstractSmsBlend<CtyunConfig> {
@Override @Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){ if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>(); messages = new LinkedHashMap<>();
} }
return sendMessage(phone, getConfig().getTemplateId(), messages); 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.comm.utils.SmsUtils;
import org.dromara.sms4j.dingzhong.config.DingZhongConfig; import org.dromara.sms4j.dingzhong.config.DingZhongConfig;
import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**

View File

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

View File

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

View File

@ -1,6 +1,7 @@
package org.dromara.sms4j.huawei.utils; package org.dromara.sms4j.huawei.utils;
import cn.hutool.core.codec.Base64; import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import org.dromara.sms4j.comm.constant.Constant; import org.dromara.sms4j.comm.constant.Constant;
import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.HttpsURLConnection;
@ -12,8 +13,6 @@ import java.net.URLEncoder;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate; import java.security.cert.X509Certificate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -21,13 +20,15 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
public class HuaweiBuilder { public class HuaweiBuilder {
private HuaweiBuilder(){} private HuaweiBuilder() {
}
/** /**
* buildWsseHeader * buildWsseHeader
* <p>构造X-WSSE参数值 * <p>构造X-WSSE参数值
*
* @author :Wind * @author :Wind
*/ */
public static String buildWsseHeader(String appKey, String appSecret) { public static String buildWsseHeader(String appKey, String appSecret) {
if (null == appKey || null == appSecret || appKey.isEmpty() || appSecret.isEmpty()) { if (null == appKey || null == appSecret || appKey.isEmpty() || appSecret.isEmpty()) {
System.out.println("buildWsseHeader(): appKey or appSecret is null."); System.out.println("buildWsseHeader(): appKey or appSecret is null.");
@ -53,12 +54,17 @@ public class HuaweiBuilder {
} }
static void trustAllHttpsCertificates() throws Exception { static void trustAllHttpsCertificates() throws Exception {
TrustManager[] trustAllCerts = new TrustManager[] { TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() { new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) { public void checkClientTrusted(X509Certificate[] chain, String authType) {
} }
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) { public void checkServerTrusted(X509Certificate[] chain, String authType) {
} }
@Override
public X509Certificate[] getAcceptedIssuers() { public X509Certificate[] getAcceptedIssuers() {
return null; return null;
} }
@ -70,16 +76,17 @@ public class HuaweiBuilder {
} }
/** /**
* buildRequestBody * buildRequestBody
* <p>构造请求Body体 * <p>构造请求Body体
* @param sender 国内短信签名通道号 *
* @param receiver 短信接收者 * @param sender 国内短信签名通道号
* @param templateId 短信模板id * @param receiver 短信接收者
* @param templateParas 模板参数 * @param templateId 短信模板id
* @param templateParas 模板参数
* @param statusCallBack 短信状态报告接收地 * @param statusCallBack 短信状态报告接收地
* @param signature | 签名名称,使用国内短信通用模板时填写 * @param signature | 签名名称,使用国内短信通用模板时填写
* @author :Wind * @author :Wind
*/ */
public static String buildRequestBody(String sender, String receiver, String templateId, String templateParas, public static String buildRequestBody(String sender, String receiver, String templateId, String templateParas,
String statusCallBack, String signature) { String statusCallBack, String signature) {
if (null == sender || null == receiver || null == templateId || sender.isEmpty() || receiver.isEmpty() if (null == sender || null == receiver || null == templateId || sender.isEmpty() || receiver.isEmpty()
@ -87,7 +94,7 @@ public class HuaweiBuilder {
System.out.println("buildRequestBody(): sender, receiver or templateId is null."); System.out.println("buildRequestBody(): sender, receiver or templateId is null.");
return null; return null;
} }
Map<String, String> map = new HashMap<String, String>(); Map<String, String> map = new HashMap<>();
map.put("from", sender); map.put("from", sender);
map.put("to", receiver); map.put("to", receiver);
@ -114,10 +121,10 @@ public class HuaweiBuilder {
sb.append(s).append("=").append(temp).append("&"); sb.append(s).append("=").append(temp).append("&");
} }
return sb.deleteCharAt(sb.length()-1).toString(); return sb.deleteCharAt(sb.length() - 1).toString();
} }
public static String listToString(List<String> list){ public static String listToString(List<String> list) {
StringBuilder stringBuffer = new StringBuilder(); StringBuilder stringBuffer = new StringBuilder();
stringBuffer.append("[\""); stringBuffer.append("[\"");
for (String s : list) { for (String s : list) {
@ -126,22 +133,13 @@ public class HuaweiBuilder {
stringBuffer.append(","); stringBuffer.append(",");
stringBuffer.append("\""); stringBuffer.append("\"");
} }
stringBuffer.delete(stringBuffer.length()-3,stringBuffer.length()-1); stringBuffer.delete(stringBuffer.length() - 3, stringBuffer.length() - 1);
stringBuffer.append("]"); stringBuffer.append("]");
return stringBuffer.toString(); return stringBuffer.toString();
} }
static String dateFormat(Date date){ private static String dateFormat(Date date) {
return SDF.format(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 @Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){ if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>(); messages = new LinkedHashMap<>();
} }
return sendMessage(phone, getConfig().getTemplateId(), messages); 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.lianlu.utils.LianLuUtils;
import org.dromara.sms4j.provider.service.AbstractSmsBlend; 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; import java.util.concurrent.Executor;
@Slf4j @Slf4j
@ -28,6 +34,7 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
super(config); super(config);
} }
@Override
public String getSupplier() { public String getSupplier() {
return SupplierConstant.LIANLU; return SupplierConstant.LIANLU;
} }
@ -41,6 +48,7 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
* @param templateParam 模板变量 * @param templateParam 模板变量
* @return * @return
*/ */
@Override
public SmsResponse sendMessage(String phone, String templateParam) { public SmsResponse sendMessage(String phone, String templateParam) {
return this.massTexting(Collections.singletonList(phone), templateParam); return this.massTexting(Collections.singletonList(phone), templateParam);
} }
@ -48,7 +56,7 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
@Override @Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){ if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>(); messages = new LinkedHashMap<>();
} }
return sendMessage(phone, getConfig().getTemplateId(), messages); return sendMessage(phone, getConfig().getTemplateId(), messages);
} }
@ -61,16 +69,19 @@ public class LianLuSmsImpl extends AbstractSmsBlend<LianLuConfig> {
* @param messages key无实际意义value为模板变量值 * @param messages key无实际意义value为模板变量值
* @return * @return
*/ */
@Override
public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, String templateId, LinkedHashMap<String, String> messages) {
return this.massTexting(Collections.singletonList(phone), templateId, messages); return this.massTexting(Collections.singletonList(phone), templateId, messages);
} }
@Override
public SmsResponse massTexting(List<String> phones, String templateParam) { public SmsResponse massTexting(List<String> phones, String templateParam) {
LinkedHashMap<String, String> map = new LinkedHashMap<>(1); LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("", templateParam); map.put("", templateParam);
return massTexting(phones, getConfig().getTemplateId(), map); return massTexting(phones, getConfig().getTemplateId(), map);
} }
@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) {
LianLuRequest req = getRequest(); LianLuRequest req = getRequest();
req.setType(TEMPLATE_MSG) req.setType(TEMPLATE_MSG)

View File

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

View File

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

View File

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

View File

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

View File

@ -55,7 +55,7 @@ public class TencentSmsImpl extends AbstractSmsBlend<TencentConfig> {
@Override @Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){ if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>(); messages = new LinkedHashMap<>();
} }
return sendMessage(phone, getConfig().getTemplateId(), messages); 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 org.dromara.sms4j.comm.utils.SmsHttpUtils;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -67,7 +66,7 @@ public class UniClient {
private Map<String, Object> sign(final Map<String, Object> query) { private Map<String, Object> sign(final Map<String, Object> query) {
if (this.accessKeySecret != null) { if (this.accessKeySecret != null) {
query.put("algorithm", this.signingAlgorithm); query.put("algorithm", this.signingAlgorithm);
query.put("timestamp", new Date().getTime()); query.put("timestamp", System.currentTimeMillis());
query.put("nonce", UUID.randomUUID().toString().replaceAll("-", "")); query.put("nonce", UUID.randomUUID().toString().replaceAll("-", ""));
String strToSign = UniClient.queryStringify(query); String strToSign = UniClient.queryStringify(query);

View File

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

View File

@ -71,7 +71,7 @@ public class ZhutongSmsImpl extends AbstractSmsBlend<ZhutongConfig> {
@Override @Override
public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) { public SmsResponse sendMessage(String phone, LinkedHashMap<String, String> messages) {
if (Objects.isNull(messages)){ if (Objects.isNull(messages)){
messages = new LinkedHashMap<String, String>(); messages = new LinkedHashMap<>();
} }
return sendMessage(phone, getConfig().getTemplateId(), messages); 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.cloopen.config.CloopenFactory;
import org.dromara.sms4j.comm.constant.Constant; import org.dromara.sms4j.comm.constant.Constant;
import org.dromara.sms4j.comm.utils.SmsUtils; 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.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.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.ctyun.config.CtyunFactory;
import org.dromara.sms4j.dingzhong.config.DingZhongFactory; import org.dromara.sms4j.dingzhong.config.DingZhongFactory;
import org.dromara.sms4j.emay.config.EmayFactory; import org.dromara.sms4j.emay.config.EmayFactory;

View File

@ -106,7 +106,7 @@ public class SmsProcessorTest {
Assert.notNull(knowEx); Assert.notNull(knowEx);
knowEx = null; knowEx = null;
try { try {
SmsFactory.getBySupplier(SupplierConstant.UNISMS).massTexting(new ArrayList<String>(), "321321"); SmsFactory.getBySupplier(SupplierConstant.UNISMS).massTexting(new ArrayList<>(), "321321");
} catch (SmsBlendException e) { } catch (SmsBlendException e) {
knowEx = e; knowEx = e;
System.out.println(knowEx.getMessage()); 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.core.datainterface.SmsReadConfig;
import org.dromara.sms4j.provider.config.BaseConfig; 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 { public class ConfigCombineMapAdeptor<S, M> extends HashMap {
@Override
public M get(Object key) { public M get(Object key) {
Object o = super.get(key); Object o = super.get(key);
if (null == o){ 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.enumerate.ConfigType;
import org.dromara.sms4j.comm.utils.SmsUtils; import org.dromara.sms4j.comm.utils.SmsUtils;
import org.dromara.sms4j.core.datainterface.SmsReadConfig; 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.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.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.ctyun.config.CtyunFactory;
import org.dromara.sms4j.dingzhong.config.DingZhongFactory; import org.dromara.sms4j.dingzhong.config.DingZhongFactory;
import org.dromara.sms4j.emay.config.EmayFactory; import org.dromara.sms4j.emay.config.EmayFactory;

View File

@ -1,8 +1,6 @@
package org.dromara.sms4j.starter.holder; package org.dromara.sms4j.starter.holder;
import org.dromara.sms4j.api.dao.SmsDao; 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; import org.dromara.sms4j.starter.utils.SmsSpringUtils;
public class SpringSmsDaoHolder { public class SpringSmsDaoHolder {

View File

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