diff --git a/README.md b/README.md
index e2121ba..2e02f25 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
-![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2ccd794db76e482680f72d60959cf368~tplv-k3u1fbpfcp-zoom-1.image)
+
+![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/108bca55a5364a73b3fd50b8bde304d1~tplv-k3u1fbpfcp-watermark.image?)
@@ -8,9 +9,14 @@
+
+最近我已经在**bilibili**更新Austin的视频了哟,**求关注和三连**!这是我更新的动力!!
+
+[https://space.bilibili.com/198434865/channel/collectiondetail?sid=435119](https://space.bilibili.com/198434865/channel/collectiondetail?sid=435119)
+
## 项目介绍
diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java
index 392462d..f727faa 100644
--- a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java
+++ b/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/limit/SlideWindowLimitService.java
@@ -1,10 +1,10 @@
package com.java3y.austin.handler.deduplication.limit;
+import cn.hutool.core.util.IdUtil;
import com.java3y.austin.common.domain.TaskInfo;
import com.java3y.austin.handler.deduplication.DeduplicationParam;
import com.java3y.austin.handler.deduplication.service.AbstractDeduplicationService;
import com.java3y.austin.support.utils.RedisUtils;
-import com.java3y.austin.support.utils.SnowFlakeIdUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.script.DefaultRedisScript;
@@ -29,7 +29,6 @@ public class SlideWindowLimitService extends AbstractLimitService {
@Autowired
private RedisUtils redisUtils;
- private SnowFlakeIdUtils snowFlakeIdUtils = new SnowFlakeIdUtils(1, 1);
private DefaultRedisScript redisScript;
@@ -55,7 +54,7 @@ public class SlideWindowLimitService extends AbstractLimitService {
long nowTime = System.currentTimeMillis();
for (String receiver : taskInfo.getReceiver()) {
String key = LIMIT_TAG + deduplicationSingleKey(service, taskInfo, receiver);
- String scoreValue = String.valueOf(snowFlakeIdUtils.nextId());
+ String scoreValue = String.valueOf(IdUtil.getSnowflake().nextId());
String score = String.valueOf(nowTime);
if (redisUtils.execLimitLua(redisScript, Arrays.asList(key), String.valueOf(param.getDeduplicationTime() * 1000), score, String.valueOf(param.getCountNum()), scoreValue)) {
filterReceiver.add(receiver);
diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/push/PushParam.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/push/PushParam.java
index 5ab85ca..31d1c3c 100644
--- a/austin-handler/src/main/java/com/java3y/austin/handler/domain/push/PushParam.java
+++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/push/PushParam.java
@@ -7,8 +7,10 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.util.Set;
-
+/**
+ * @author 3y
+ * push的参数
+ */
@NoArgsConstructor
@AllArgsConstructor
@Data
diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/YunPianSendResult.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/YunPianSendResult.java
index 61c5bcf..8a02a47 100644
--- a/austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/YunPianSendResult.java
+++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/sms/YunPianSendResult.java
@@ -6,6 +6,11 @@ import lombok.NoArgsConstructor;
import java.util.List;
+
+/**
+ * 云片网短信调用发送接口返回值
+ * @author 3y
+ */
@NoArgsConstructor
@Data
public class YunPianSendResult {
diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java
index a3fb691..46a2d90 100644
--- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java
+++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/SmsHandler.java
@@ -98,7 +98,8 @@ public class SmsHandler extends BaseHandler implements Handler {
if (index <= messageTypeSmsConfigs.get(i).getWeights()) {
supplier = messageTypeSmsConfigs.get(i);
- int j = (i + 1) % messageTypeSmsConfigs.size(); // 取下一个供应商
+ // 取下一个供应商
+ int j = (i + 1) % messageTypeSmsConfigs.size();
if (i == j) {
return new MessageTypeSmsConfig[]{supplier};
}
diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/YunPianSmsScript.java b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/YunPianSmsScript.java
index d3df125..c4ac233 100644
--- a/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/YunPianSmsScript.java
+++ b/austin-handler/src/main/java/com/java3y/austin/handler/script/impl/YunPianSmsScript.java
@@ -65,7 +65,7 @@ public class YunPianSmsScript extends BaseSmsScript implements SmsScript {
* @return
*/
private Map assembleParam(SmsParam smsParam, YunPianSmsAccount account) {
- Map params = new HashMap<>();
+ Map params = new HashMap<>(8);
params.put("apikey", account.getApikey());
params.put("mobile", StringUtils.join(smsParam.getPhones(), StrUtil.C_COMMA));
params.put("tpl_id", account.getTplId());
diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/AfterParamCheckAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/AfterParamCheckAction.java
index ee44492..f86ea5e 100644
--- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/AfterParamCheckAction.java
+++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/AfterParamCheckAction.java
@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ReUtil;
import com.alibaba.fastjson.JSON;
import com.java3y.austin.common.domain.TaskInfo;
-import com.java3y.austin.common.enums.ChannelType;
import com.java3y.austin.common.enums.IdType;
import com.java3y.austin.common.enums.RespStatusEnum;
import com.java3y.austin.common.vo.BasicResultVO;
@@ -31,7 +30,7 @@ import java.util.stream.Collectors;
public class AfterParamCheckAction implements BusinessProcess {
public static final String PHONE_REGEX_EXP = "^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(166)|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$";
- public static final String EMAIL_REGEX_EXP = "[a-zA-Z0-9]+@[a-zA-Z0-9]+\\\\.[a-zA-Z0-9]+";
+ public static final String EMAIL_REGEX_EXP = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$";
public static final HashMap CHANNEL_REGEX_EXP = new HashMap<>();
static {
diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/SnowFlakeIdUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/SnowFlakeIdUtils.java
deleted file mode 100644
index 925ea8b..0000000
--- a/austin-support/src/main/java/com/java3y/austin/support/utils/SnowFlakeIdUtils.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.java3y.austin.support.utils;
-
-/**
- * 雪花算法生成唯一id工具类
- *
- * @author cao
- * @date 2022-04-20 13:12
- */
-public class SnowFlakeIdUtils {
-
- /**
- * 初始时间截 (2017-01-01)
- */
- private final static long START_TIMESTAMP = 1483200000000L;
-
- /**
- * 每一部分占用的位数
- */
- private final static long SEQUENCE_BIT = 12; //***占用的位数
- private final static long MACHINE_BIT = 5; //机器标识占用的位数
- private final static long DATA_CENTER_BIT = 5; //数据中心占用的位数
-
- /**
- * 每一部分的最大值
- */
- private final static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT);
- private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT);
- private final static long MAX_DATA_CENTER_NUM = -1L ^ (-1L << DATA_CENTER_BIT);
-
- /**
- * 每一部分向左的位移
- */
- private final static long MACHINE_LEFT = SEQUENCE_BIT;
- private final static long DATA_CENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;
- private final static long TIMESTAMP_LEFT = DATA_CENTER_LEFT + DATA_CENTER_BIT;
-
- private long dataCenterId; //数据中心
- private long machineId; //机器标识
- private long sequence = 0L; //***
- private long lastTimeStamp = -1L; //上一次时间戳
-
-
- /**
- * 根据指定的数据中心ID和机器标志ID生成指定的***
- *
- * @param dataCenterId 数据中心ID
- * @param machineId 机器标志ID
- */
- public SnowFlakeIdUtils(long dataCenterId, long machineId) {
- if (dataCenterId > MAX_DATA_CENTER_NUM || dataCenterId < 0) {
- throw new IllegalArgumentException(String.format("DtaCenterId 不能大于 %d 或小于 0", MAX_DATA_CENTER_NUM));
- }
- if (machineId > MAX_MACHINE_NUM || machineId < 0) {
- throw new IllegalArgumentException(String.format("MachineId 不能大于 %d 或小于 0", MAX_MACHINE_NUM));
- }
- this.dataCenterId = dataCenterId;
- this.machineId = machineId;
- }
-
-
- /**
- * 产生下一个ID
- *
- * @return
- */
- public synchronized long nextId() {
- long currTimeStamp = System.currentTimeMillis();
- if (currTimeStamp < lastTimeStamp) {
- throw new RuntimeException("当前时间小于上一次记录的时间戳!");
- }
-
- if (currTimeStamp == lastTimeStamp) {
- //相同毫秒内,***自增
- sequence = (sequence + 1) & MAX_SEQUENCE;
- //同一毫秒的序列数已经达到最大
- if (sequence == 0L) {
- currTimeStamp = getNextMill();
- }
- } else {
- //不同毫秒内,***置为0
- sequence = 0L;
- }
-
- lastTimeStamp = currTimeStamp;
-
- return (currTimeStamp - START_TIMESTAMP) << TIMESTAMP_LEFT //时间戳部分
- | dataCenterId << DATA_CENTER_LEFT //数据中心部分
- | machineId << MACHINE_LEFT //机器标识部分
- | sequence; //***部分
- }
-
-
- /**
- * 阻塞到下一个毫秒,直到获得新的时间戳
- *
- * @return 当前时间戳
- */
- private long getNextMill() {
-
- long mill = System.currentTimeMillis();
- while (mill <= lastTimeStamp) {
- mill = System.currentTimeMillis();
- }
- return mill;
-
- }
-
-}