mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-06 17:08:40 +08:00
移除冗余异常抛出和使用lombok简化,并优化点代码
This commit is contained in:
parent
55c957ca27
commit
fc623cf5a9
@ -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添加加瓦贡献代码
|
||||
|
||||
2
pom.xml
2
pom.xml
@ -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>
|
||||
|
||||
@ -22,8 +22,6 @@ import java.util.Objects;
|
||||
**/
|
||||
public final class HtmlUtil {
|
||||
|
||||
private static final HtmlUtil htmlUtil = new HtmlUtil();
|
||||
|
||||
private HtmlUtil() {
|
||||
}
|
||||
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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!");
|
||||
}
|
||||
}
|
||||
|
||||
@ -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]);
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -22,8 +22,6 @@ import java.util.Objects;
|
||||
**/
|
||||
public final class HtmlUtil {
|
||||
|
||||
private static final HtmlUtil htmlUtil = new HtmlUtil();
|
||||
|
||||
private HtmlUtil() {
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
* 钉钉通知签名和信息构建
|
||||
|
||||
@ -26,6 +26,7 @@ public abstract class OaAbstractProviderFactory<S extends OaSender, C extends Oa
|
||||
*
|
||||
* @return 配置类
|
||||
*/
|
||||
@Override
|
||||
public Class<C> getConfigClass() {
|
||||
return configClass;
|
||||
}
|
||||
|
||||
@ -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> {
|
||||
|
||||
/**
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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())
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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<>();
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ public abstract class AbstractProviderFactory<S extends SmsBlend, C extends Supp
|
||||
* 获取配置类
|
||||
* @return 配置类
|
||||
*/
|
||||
@Override
|
||||
public Class<C> getConfigClass() {
|
||||
return configClass;
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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){
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user