From 9fbaa7fc246e1afbe711436c7dfbbcf15191a342 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Mon, 17 Jul 2023 23:36:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=202.1.0=201.=20=E9=92=88=E5=AF=B9groupNam?= =?UTF-8?q?e=E6=B7=BB=E5=8A=A0=E6=AD=A3=E5=88=99=E8=A1=A8=E8=BE=BE?= =?UTF-8?q?=E5=BC=8F=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/config/MyBatisPlusConfig.java | 2 +- .../server/config/RequestDataHelper.java | 13 +- .../mybatis/mapper/RetryTaskMapper.java | 2 +- .../ReportRetryInfoHttpRequestHandler.java | 13 +- .../generator/task/AbstractGenerator.java | 9 +- .../web/controller/GroupConfigController.java | 2 +- .../model/request/BatchDeleteRetryTaskVO.java | 7 +- .../web/model/request/GroupConfigQueryVO.java | 6 +- .../model/request/GroupConfigRequestVO.java | 6 +- .../server/web/model/request/ParseLogsVO.java | 6 +- .../RetryTaskUpdateExecutorNameRequestVO.java | 8 +- .../RetryTaskUpdateStatusRequestVO.java | 2 + .../resources/mapper/RetryTaskLogMapper.xml | 4 +- .../main/resources/mapper/RetryTaskMapper.xml | 4 +- .../src/views/profile/advanced/Advanced.vue | 373 ------------------ frontend/src/views/profile/basic/index.vue | 249 ------------ 16 files changed, 53 insertions(+), 653 deletions(-) delete mode 100644 frontend/src/views/profile/advanced/Advanced.vue delete mode 100644 frontend/src/views/profile/basic/index.vue diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/config/MyBatisPlusConfig.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/config/MyBatisPlusConfig.java index 22a1b4d4f..bdfa6da84 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/config/MyBatisPlusConfig.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/config/MyBatisPlusConfig.java @@ -37,7 +37,7 @@ public class MyBatisPlusConfig { if (!TABLES.contains(tableName)) { return tableName; } - Integer partition = RequestDataHelper.getRequestData("partition"); + Integer partition = RequestDataHelper.getPartition(); RequestDataHelper.remove(); return tableName + "_"+ partition; }); diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/config/RequestDataHelper.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/config/RequestDataHelper.java index c2c60968e..7ba5378e9 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/config/RequestDataHelper.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/config/RequestDataHelper.java @@ -22,6 +22,7 @@ public class RequestDataHelper { * 请求参数存取 */ private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + private static final String PARTITION = "group-partition"; /** * 设置请求参数 @@ -40,7 +41,7 @@ public class RequestDataHelper { public static void setPartition(int partition) { Map map = new HashMap<>(); - map.put("partition", partition); + map.put(PARTITION, partition); RequestDataHelper.setRequestData(map); } @@ -91,6 +92,16 @@ public class RequestDataHelper { return REQUEST_DATA.get(); } + public static Integer getPartition() { + Map requestData = getRequestData(); + if (CollectionUtils.isEmpty(requestData)) { + return null; + } + + return (Integer) requestData.get(PARTITION); + } + + public static void remove() { REQUEST_DATA.remove(); diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/persistence/mybatis/mapper/RetryTaskMapper.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/persistence/mybatis/mapper/RetryTaskMapper.java index 639991905..b0e4a2387 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/persistence/mybatis/mapper/RetryTaskMapper.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/persistence/mybatis/mapper/RetryTaskMapper.java @@ -13,6 +13,6 @@ public interface RetryTaskMapper extends BaseMapper { int countAllRetryTaskByRetryStatus(@Param("partition") Integer partition, @Param("retryStatus") Integer retryStatus); - int batchInsert(List list); + int batchInsert(@Param("list") List list, @Param("partition") Integer partition); } diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/server/handler/ReportRetryInfoHttpRequestHandler.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/server/handler/ReportRetryInfoHttpRequestHandler.java index efca0c0a1..88b503afa 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/server/handler/ReportRetryInfoHttpRequestHandler.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/server/handler/ReportRetryInfoHttpRequestHandler.java @@ -2,15 +2,14 @@ package com.aizuda.easy.retry.server.server.handler; import cn.hutool.core.lang.Assert; import cn.hutool.core.net.url.UrlQuery; +import com.aizuda.easy.retry.common.core.log.LogUtils; +import com.aizuda.easy.retry.common.core.model.EasyRetryRequest; +import com.aizuda.easy.retry.common.core.model.NettyResult; +import com.aizuda.easy.retry.common.core.util.JsonUtil; +import com.aizuda.easy.retry.server.enums.StatusEnum; import com.aizuda.easy.retry.server.enums.TaskGeneratorScene; import com.aizuda.easy.retry.server.exception.EasyRetryServerException; import com.aizuda.easy.retry.server.model.dto.RetryTaskDTO; -import com.aizuda.easy.retry.server.service.RetryService; -import com.aizuda.easy.retry.server.enums.StatusEnum; -import com.aizuda.easy.retry.common.core.log.LogUtils; -import com.aizuda.easy.retry.common.core.model.NettyResult; -import com.aizuda.easy.retry.common.core.model.EasyRetryRequest; -import com.aizuda.easy.retry.common.core.util.JsonUtil; import com.aizuda.easy.retry.server.service.convert.TaskContextConverter; import com.aizuda.easy.retry.server.support.generator.TaskGenerator; import com.aizuda.easy.retry.server.support.generator.task.TaskContext; @@ -19,6 +18,7 @@ import io.netty.handler.codec.http.HttpMethod; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -52,6 +52,7 @@ public class ReportRetryInfoHttpRequestHandler extends PostHttpRequestHandler { } @Override + @Transactional public String doHandler(String content, UrlQuery urlQuery, HttpHeaders headers) { LogUtils.info(log, "Batch Report Retry Data. content:[{}]", content); diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/task/AbstractGenerator.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/task/AbstractGenerator.java index 195f08740..4c4cc6142 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/task/AbstractGenerator.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/task/AbstractGenerator.java @@ -68,6 +68,7 @@ public abstract class AbstractGenerator implements TaskGenerator { Set idempotentIdSet = taskInfos.stream().map(TaskContext.TaskInfo::getIdempotentId).collect(Collectors.toSet()); // 获取相关的任务,用户幂等校验 + RequestDataHelper.setPartition(taskContext.getGroupName()); List retryTasks = retryTaskMapper.selectList(new LambdaQueryWrapper() .eq(RetryTask::getGroupName, taskContext.getGroupName()) .eq(RetryTask::getSceneName, taskContext.getSceneName()) @@ -84,8 +85,12 @@ public abstract class AbstractGenerator implements TaskGenerator { waitInsertTaskLogs.addAll(pair.getValue()); } + if (CollectionUtils.isEmpty(waitInsertTasks)) { + return; + } + RequestDataHelper.setPartition(taskContext.getGroupName()); - Assert.isTrue(waitInsertTasks.size() == retryTaskMapper.batchInsert(waitInsertTasks), () -> new EasyRetryServerException("failed to report data")); + Assert.isTrue(waitInsertTasks.size() == retryTaskMapper.batchInsert(waitInsertTasks, RequestDataHelper.getPartition()), () -> new EasyRetryServerException("failed to report data")); Assert.isTrue(waitInsertTaskLogs.size() == retryTaskLogMapper.batchInsert(waitInsertTaskLogs), () -> new EasyRetryServerException("新增重试日志失败")); } @@ -102,7 +107,7 @@ public abstract class AbstractGenerator implements TaskGenerator { List waitInsertTaskLogs = new ArrayList<>(); // 判断是否存在与幂等ID相同的任务 - List list = retryTaskMap.get(taskInfo.getIdempotentId()).stream() + List list = retryTaskMap.getOrDefault(taskInfo.getIdempotentId(), new ArrayList<>()).stream() .filter(retryTask -> taskContext.getGroupName().equals(retryTask.getGroupName()) && taskContext.getSceneName().equals(retryTask.getSceneName())).collect(Collectors.toList()); // 说明存在相同的任务 diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java index 6605a5486..87d58ef87 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java @@ -31,7 +31,7 @@ public class GroupConfigController { @LoginRequired(role = RoleEnum.ADMIN) @PostMapping("") - public Boolean addGroup(@RequestBody @Validated(PostMapping.class) GroupConfigRequestVO groupConfigRequestVO) { + public Boolean addGroup(@RequestBody @Validated GroupConfigRequestVO groupConfigRequestVO) { return groupConfigService.addGroup(groupConfigRequestVO); } diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/BatchDeleteRetryTaskVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/BatchDeleteRetryTaskVO.java index b9878c46e..3e4035598 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/BatchDeleteRetryTaskVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/BatchDeleteRetryTaskVO.java @@ -1,9 +1,9 @@ package com.aizuda.easy.retry.server.web.model.request; import lombok.Data; -import org.hibernate.validator.constraints.NotBlank; -import org.hibernate.validator.constraints.NotEmpty; - +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; import java.util.List; /** @@ -19,6 +19,7 @@ public class BatchDeleteRetryTaskVO { * 组名称 */ @NotBlank(message = "groupName 不能为空") + @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private String groupName; /** diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java index 7eb5b1110..36ddcc2ff 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java @@ -2,10 +2,10 @@ package com.aizuda.easy.retry.server.web.model.request; import com.aizuda.easy.retry.server.web.model.base.BaseQueryVO; import lombok.Data; -import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; - +import javax.validation.constraints.Pattern; /** @@ -15,8 +15,8 @@ import javax.validation.constraints.NotNull; @Data public class GroupConfigQueryVO extends BaseQueryVO { - @NotBlank(message = "组名称不能为空") + @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private String groupName; @NotNull(message = "组状态不能为空") diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java index 932005b9e..9c8c858f6 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java @@ -3,11 +3,8 @@ package com.aizuda.easy.retry.server.web.model.request; import com.aizuda.easy.retry.common.core.constant.SystemConstants; import com.aizuda.easy.retry.server.enums.IdGeneratorMode; import lombok.Data; -import org.hibernate.validator.constraints.NotBlank; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; import java.util.List; /** @@ -21,6 +18,7 @@ import java.util.List; public class GroupConfigRequestVO { @NotBlank(message = "组名称不能为空") + @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private String groupName; @NotNull(message = "组状态不能为空") diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/ParseLogsVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/ParseLogsVO.java index ad64056f1..664595608 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/ParseLogsVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/ParseLogsVO.java @@ -1,9 +1,10 @@ package com.aizuda.easy.retry.server.web.model.request; import lombok.Data; -import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; /** * 解析参数模型 @@ -17,7 +18,8 @@ public class ParseLogsVO { /** * 客户端打印的上报日志信息 */ - @NotBlank(message = "日志信息不能为空") + @NotBlank(message = "组名称不能为空") + @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private String logStr; /** diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryTaskUpdateExecutorNameRequestVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryTaskUpdateExecutorNameRequestVO.java index 2684ab3d4..241e279dc 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryTaskUpdateExecutorNameRequestVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryTaskUpdateExecutorNameRequestVO.java @@ -2,9 +2,10 @@ package com.aizuda.easy.retry.server.web.model.request; import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum; import lombok.Data; -import org.hibernate.validator.constraints.NotBlank; -import org.hibernate.validator.constraints.NotEmpty; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; import java.util.List; /** @@ -19,7 +20,8 @@ public class RetryTaskUpdateExecutorNameRequestVO { /** * 组名称 */ - @NotBlank(message = "groupName 不能为空") + @NotBlank(message = "组名称不能为空") + @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private String groupName; /** diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryTaskUpdateStatusRequestVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryTaskUpdateStatusRequestVO.java index 43f83ef8c..f845de043 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryTaskUpdateStatusRequestVO.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryTaskUpdateStatusRequestVO.java @@ -4,6 +4,7 @@ import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; /** * 更新重试任务模型 @@ -18,6 +19,7 @@ public class RetryTaskUpdateStatusRequestVO { * 重试状态 {@link RetryStatusEnum} */ @NotBlank(message = "重试状态 不能为空") + @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private Integer retryStatus; /** diff --git a/easy-retry-server/src/main/resources/mapper/RetryTaskLogMapper.xml b/easy-retry-server/src/main/resources/mapper/RetryTaskLogMapper.xml index 288c27f73..f7ce70bfd 100644 --- a/easy-retry-server/src/main/resources/mapper/RetryTaskLogMapper.xml +++ b/easy-retry-server/src/main/resources/mapper/RetryTaskLogMapper.xml @@ -89,10 +89,10 @@ - INSERT INTO retry_task_log (unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, retry_status, task_type, create_dt) + INSERT INTO retry_task_log (unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, task_type, create_dt) VALUES - (#{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.retryStatus}, #{item.taskType}, #{item.createDt}) + (#{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.taskType}, #{item.createDt}) diff --git a/easy-retry-server/src/main/resources/mapper/RetryTaskMapper.xml b/easy-retry-server/src/main/resources/mapper/RetryTaskMapper.xml index dbebd0a63..12c3e82ac 100644 --- a/easy-retry-server/src/main/resources/mapper/RetryTaskMapper.xml +++ b/easy-retry-server/src/main/resources/mapper/RetryTaskMapper.xml @@ -70,10 +70,10 @@ - INSERT INTO retry_task_${partition} (unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, next_trigger_at, retry_count, retry_status, task_type, create_dt, update_dt) + INSERT INTO retry_task_${partition} (unique_id, group_name, scene_name, idempotent_id, biz_no, executor_name, args_str, ext_attrs, next_trigger_at, task_type, create_dt) VALUES - (#{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.nextTriggerAt}, #{item.retryCount}, #{item.retryStatus}, #{item.taskType}, #{item.createDt}, #{item.updateDt}) + (#{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.nextTriggerAt}, #{item.taskType}, #{item.createDt}) diff --git a/frontend/src/views/profile/advanced/Advanced.vue b/frontend/src/views/profile/advanced/Advanced.vue deleted file mode 100644 index 1ea29a95c..000000000 --- a/frontend/src/views/profile/advanced/Advanced.vue +++ /dev/null @@ -1,373 +0,0 @@ - - - - - diff --git a/frontend/src/views/profile/basic/index.vue b/frontend/src/views/profile/basic/index.vue deleted file mode 100644 index efaf62382..000000000 --- a/frontend/src/views/profile/basic/index.vue +++ /dev/null @@ -1,249 +0,0 @@ - - - - -