diff --git a/doc/sql/easy_retry_mysql.sql b/doc/sql/easy_retry_mysql.sql index 5a578be7..8f20440b 100644 --- a/doc/sql/easy_retry_mysql.sql +++ b/doc/sql/easy_retry_mysql.sql @@ -8,14 +8,14 @@ USE CREATE TABLE `namespace` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `name` varchar(64) NOT NULL DEFAULT '' COMMENT '名称', - `unique_id` varchar(64) NOT NULL DEFAULT '' COMMENT '唯一id', + `name` varchar(64) NOT NULL COMMENT '名称', + `unique_id` varchar(64) NOT NULL COMMENT '唯一id', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除', PRIMARY KEY (`id`), KEY `idx_name` (`name`), - UNIQUE KEY `uk_name` (`unique_id`) + UNIQUE KEY `uk_unique_id` (`unique_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='命名空间'; @@ -246,6 +246,7 @@ CREATE TABLE `system_user_permission` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `group_name` varchar(64) NOT NULL COMMENT '组名称', + `namespace_id` bigint(20) unsigned NOT NULL DEFAULT 1 COMMENT '命名空间id', `system_user_id` bigint(20) NOT NULL COMMENT '系统用户id', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', diff --git a/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/JobOperationReasonEnum.java b/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/JobOperationReasonEnum.java index 35cbd05b..d60507ec 100644 --- a/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/JobOperationReasonEnum.java +++ b/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/JobOperationReasonEnum.java @@ -4,6 +4,8 @@ import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.HashMap; + /** * 标识某个操作的具体原因 * diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobBatchQueryDO.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobBatchQueryDO.java index 21f50b3a..14cc935e 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobBatchQueryDO.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/dataobject/JobBatchQueryDO.java @@ -14,5 +14,9 @@ public class JobBatchQueryDO { private Integer taskBatchStatus; private String jobName; private Long jobId; + /** + * 命名空间id + */ + private Long namespaceId; } diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/NamespaceMapper.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/NamespaceMapper.java new file mode 100644 index 00000000..3a0deb2e --- /dev/null +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/mapper/NamespaceMapper.java @@ -0,0 +1,18 @@ +package com.aizuda.easy.retry.template.datasource.persistence.mapper; + +import com.aizuda.easy.retry.template.datasource.persistence.po.Namespace; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 命名空间 Mapper 接口 + *

+ * + * @author xiaowoniu + * @since 2023-11-21 + */ +@Mapper +public interface NamespaceMapper extends BaseMapper { + +} diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/GroupConfig.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/GroupConfig.java index 47fc743e..53f6901c 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/GroupConfig.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/GroupConfig.java @@ -14,6 +14,9 @@ public class GroupConfig implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + private Long namespaceId; + + private String groupName; private Integer groupStatus; diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/Job.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/Job.java index 46c84412..b8b0647f 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/Job.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/Job.java @@ -29,6 +29,11 @@ public class Job implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + /** + * 命名空间id + */ + private Long namespaceId; + /** * 组名称 */ diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/JobTaskBatch.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/JobTaskBatch.java index 60f169a3..7037fc18 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/JobTaskBatch.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/JobTaskBatch.java @@ -32,6 +32,12 @@ public class JobTaskBatch implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + /** + * 命名空间id + */ + private Long namespaceId; + + /** * 组名称 */ diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/Namespace.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/Namespace.java new file mode 100644 index 00000000..470751a6 --- /dev/null +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/Namespace.java @@ -0,0 +1,56 @@ +package com.aizuda.easy.retry.template.datasource.persistence.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 命名空间 + *

+ * + * @author xiaowoniu + * @since 2023-11-21 + */ +@Getter +@Setter +@TableName("namespace") +public class Namespace implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 唯一id + */ + private String uniqueId; + + /** + * 创建时间 + */ + private LocalDateTime createDt; + + /** + * 修改时间 + */ + private LocalDateTime updateDt; + + /** + * 逻辑删除 1、删除 + */ + private Byte deleted; +} diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/NotifyConfig.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/NotifyConfig.java index f15765f9..92211611 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/NotifyConfig.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/NotifyConfig.java @@ -12,6 +12,8 @@ public class NotifyConfig implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + private Long namespaceId; + private String groupName; private String sceneName; diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryDeadLetter.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryDeadLetter.java index 35ec7a1d..3e85416a 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryDeadLetter.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryDeadLetter.java @@ -13,6 +13,8 @@ public class RetryDeadLetter implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + private Long namespaceId; + private String uniqueId; private String groupName; diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryTask.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryTask.java index 3fe2fe4f..cdcb1669 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryTask.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryTask.java @@ -15,6 +15,8 @@ public class RetryTask implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + private Long namespaceId; + private String uniqueId; private String groupName; diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryTaskLog.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryTaskLog.java index e12aba14..4cc9f481 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryTaskLog.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/RetryTaskLog.java @@ -13,6 +13,8 @@ public class RetryTaskLog implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + private Long namespaceId; + private String uniqueId; private String groupName; diff --git a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SceneConfig.java b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SceneConfig.java index 0d33c6a9..e25e43b6 100644 --- a/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SceneConfig.java +++ b/easy-retry-datasource/easy-retry-datasource-template/src/main/java/com/aizuda/easy/retry/template/datasource/persistence/po/SceneConfig.java @@ -18,6 +18,9 @@ public class SceneConfig implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + private Long namespaceId; + + private String groupName; private String sceneName; diff --git a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobTaskBatchMapper.xml index b506e7a2..bf8f6df5 100644 --- a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobTaskBatchMapper.xml +++ b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/JobTaskBatchMapper.xml @@ -7,6 +7,7 @@ + @@ -18,6 +19,7 @@ SELECT a.*, b.job_name, b.task_type, b.block_strategy, b.trigger_type FROM job_task_batch a join job b on a.job_id = b.id + namespace_id = #{queryDO.namespaceId} and job_id = #{queryDO.jobId} diff --git a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml index b506e7a2..37d256fc 100644 --- a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml +++ b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/JobTaskBatchMapper.xml @@ -7,6 +7,7 @@ + @@ -18,6 +19,7 @@ SELECT a.*, b.job_name, b.task_type, b.block_strategy, b.trigger_type FROM job_task_batch a join job b on a.job_id = b.id + namespace_id = #{queryDO.namespaceId} and job_id = #{queryDO.jobId} diff --git a/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/NamespaceMapper.xml b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/NamespaceMapper.xml new file mode 100644 index 00000000..d6effaa0 --- /dev/null +++ b/easy-retry-datasource/easy-retry-mysql-datasource/src/main/resources/mysql/mapper/NamespaceMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobTaskBatchMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobTaskBatchMapper.xml index b506e7a2..bf8f6df5 100644 --- a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobTaskBatchMapper.xml +++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobTaskBatchMapper.xml @@ -7,6 +7,7 @@ + @@ -18,6 +19,7 @@ SELECT a.*, b.job_name, b.task_type, b.block_strategy, b.trigger_type FROM job_task_batch a join job b on a.job_id = b.id + namespace_id = #{queryDO.namespaceId} and job_id = #{queryDO.jobId} diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/strategy/BlockStrategies.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/strategy/BlockStrategies.java index f47111d4..18625b30 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/strategy/BlockStrategies.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/strategy/BlockStrategies.java @@ -80,7 +80,7 @@ public class BlockStrategies { // 重新生成任务 JobTaskBatchGenerator jobTaskBatchGenerator = SpringContext.getBeanByType(JobTaskBatchGenerator.class); JobTaskBatchGeneratorContext jobTaskBatchGeneratorContext = JobTaskConverter.INSTANCE.toJobTaskGeneratorContext(context); - jobTaskBatchGeneratorContext.setTaskBatchStatus(JobTaskBatchStatusEnum.FAIL.getStatus()); + jobTaskBatchGeneratorContext.setTaskBatchStatus(JobTaskBatchStatusEnum.CANCEL.getStatus()); jobTaskBatchGeneratorContext.setOperationReason(JobOperationReasonEnum.JOB_DISCARD.getReason()); jobTaskBatchGenerator.generateJobTaskBatch(jobTaskBatchGeneratorContext); } diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/generator/task/AbstractGenerator.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/generator/task/AbstractGenerator.java index 51af26a5..bd051634 100644 --- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/generator/task/AbstractGenerator.java +++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/generator/task/AbstractGenerator.java @@ -120,6 +120,7 @@ public abstract class AbstractGenerator implements TaskGenerator { } RetryTask retryTask = RetryTaskConverter.INSTANCE.toRetryTask(taskInfo); + retryTask.setNamespaceId(sceneConfig.getNamespaceId()); retryTask.setUniqueId(getIdGenerator(taskContext.getGroupName())); retryTask.setTaskType(TaskTypeEnum.RETRY.getType()); retryTask.setGroupName(taskContext.getGroupName()); diff --git a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/timer/RetryTimerTask.java b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/timer/RetryTimerTask.java index 56e240e5..bf7e5b3b 100644 --- a/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/timer/RetryTimerTask.java +++ b/easy-retry-server/easy-retry-server-retry-task/src/main/java/com/aizuda/easy/retry/server/retry/task/support/timer/RetryTimerTask.java @@ -2,7 +2,6 @@ package com.aizuda.easy.retry.server.retry.task.support.timer; import com.aizuda.easy.retry.common.core.context.SpringContext; import com.aizuda.easy.retry.common.core.enums.RetryStatusEnum; -import com.aizuda.easy.retry.common.core.util.JsonUtil; import com.aizuda.easy.retry.server.retry.task.support.dispatch.task.TaskExecutor; import com.aizuda.easy.retry.server.retry.task.support.dispatch.task.TaskActuatorFactory; import com.aizuda.easy.retry.template.datasource.access.AccessTemplate; diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java index 69c29c3e..6f5604f7 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/GroupConfigController.java @@ -69,8 +69,8 @@ public class GroupConfigController { @LoginRequired @GetMapping("/all/group-name/list") - public List getAllGroupNameList() { - return groupConfigService.getAllGroupNameList(); + public List getAllGroupNameList(@RequestParam("namespaceId") Long namespaceId) { + return groupConfigService.getAllGroupNameList(namespaceId); } @Deprecated diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/NamespaceController.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/NamespaceController.java new file mode 100644 index 00000000..d1e86509 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/controller/NamespaceController.java @@ -0,0 +1,51 @@ +package com.aizuda.easy.retry.server.web.controller; + +import com.aizuda.easy.retry.server.web.annotation.LoginUser; +import com.aizuda.easy.retry.server.web.model.base.PageResult; +import com.aizuda.easy.retry.server.web.model.request.NamespaceQueryVO; +import com.aizuda.easy.retry.server.web.model.request.NamespaceRequestVO; +import com.aizuda.easy.retry.server.web.model.response.NamespaceResponseVO; +import com.aizuda.easy.retry.server.web.service.NamespaceService; +import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author: xiaowoniu + * @date : 2023-11-21 15:02 + * @since : 2.5.0 + */ +@RestController +@RequestMapping("/namespace") +public class NamespaceController { + + @Autowired + private NamespaceService namespaceService; + + @PostMapping + public Boolean saveNamespace(@RequestBody @Validated NamespaceRequestVO namespaceRequestVO) { + return namespaceService.saveNamespace(namespaceRequestVO); + } + + @PutMapping + public Boolean updateNamespace(@RequestBody @Validated NamespaceRequestVO namespaceRequestVO) { + return namespaceService.updateNamespace(namespaceRequestVO); + } + + @PutMapping + public PageResult> getNamespacePage(NamespaceQueryVO queryVO) { + return namespaceService.getNamespacePage(queryVO); + } + + @PutMapping + public List getNamespaceByUserId(@LoginUser SystemUser systemUser) { + return namespaceService.getNamespaceByUserId(systemUser); + } +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java index 36ddcc2f..7a4c1e32 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigQueryVO.java @@ -22,4 +22,9 @@ public class GroupConfigQueryVO extends BaseQueryVO { @NotNull(message = "组状态不能为空") private Integer groupStatus; + /** + * 命名空间id + */ + private Long namespaceId; + } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java index 40fa7d05..aff84d3d 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/GroupConfigRequestVO.java @@ -17,6 +17,12 @@ import javax.validation.constraints.Pattern; @Data public class GroupConfigRequestVO { + /** + * 命名空间id + */ + @NotNull(message = "命名空间id 不能为空") + private Long namespaceId; + @NotBlank(message = "组名称不能为空") @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private String groupName; diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobBatchQueryVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobBatchQueryVO.java index 5b9f3234..99f3d684 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobBatchQueryVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobBatchQueryVO.java @@ -16,4 +16,9 @@ public class JobBatchQueryVO extends BaseQueryVO { private String jobName; private Integer taskBatchStatus; private String groupName; + + /** + * 命名空间id + */ + private Long namespaceId; } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobQueryVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobQueryVO.java index 683cb200..f4aae2b7 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobQueryVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobQueryVO.java @@ -15,4 +15,6 @@ public class JobQueryVO extends BaseQueryVO { private String groupName; private String jobName; private Integer jobStatus; + private Long namespaceId; + } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobRequestVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobRequestVO.java index b5b62570..f2541d16 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobRequestVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/JobRequestVO.java @@ -29,6 +29,12 @@ public class JobRequestVO { @NotBlank(message = "jobName 不能为空") private String jobName; + /** + * 命名空间id + */ + @NotNull(message = "命名空间id 不能为空") + private Long namespaceId; + /** * 重试状态 0、关闭、1、开启 */ diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceQueryVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceQueryVO.java new file mode 100644 index 00000000..fa14acf0 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceQueryVO.java @@ -0,0 +1,18 @@ +package com.aizuda.easy.retry.server.web.model.request; + +import com.aizuda.easy.retry.server.web.model.base.BaseQueryVO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author: xiaowoniu + * @date : 2023-11-21 15:21 + * @since : 2.5.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class NamespaceQueryVO extends BaseQueryVO { + + private String name; + +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceRequestVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceRequestVO.java new file mode 100644 index 00000000..c7162527 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NamespaceRequestVO.java @@ -0,0 +1,23 @@ +package com.aizuda.easy.retry.server.web.model.request; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author: xiaowoniu + * @date : 2023-11-21 15:15 + * @since : 2.5.0 + */ +@Data +public class NamespaceRequestVO { + + private Long id; + + /** + * 名称 + */ + @NotBlank(message= "name 不能为空") + private String name; + +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NotifyConfigQueryVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NotifyConfigQueryVO.java index 4b80af2c..46555442 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NotifyConfigQueryVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NotifyConfigQueryVO.java @@ -14,4 +14,5 @@ import lombok.EqualsAndHashCode; public class NotifyConfigQueryVO extends BaseQueryVO { private String groupName; private String sceneName; + private Long namespaceId; } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NotifyConfigRequestVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NotifyConfigRequestVO.java index b6518cd6..ff456c8e 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NotifyConfigRequestVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/NotifyConfigRequestVO.java @@ -20,6 +20,12 @@ public class NotifyConfigRequestVO { @Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线") private String groupName; + /** + * 命名空间id + */ + @NotNull(message = "命名空间id 不能为空") + private Long namespaceId; + private String sceneName; @NotNull(message = "通知状态不能为空") diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryDeadLetterQueryVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryDeadLetterQueryVO.java index 92b60e7c..13a4253a 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryDeadLetterQueryVO.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/request/RetryDeadLetterQueryVO.java @@ -14,4 +14,5 @@ public class RetryDeadLetterQueryVO extends BaseQueryVO { private String bizNo; private String idempotentId; private String uniqueId; + private Long namespaceId; } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/NamespaceResponseVO.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/NamespaceResponseVO.java new file mode 100644 index 00000000..8f9abd2f --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/model/response/NamespaceResponseVO.java @@ -0,0 +1,37 @@ +package com.aizuda.easy.retry.server.web.model.response; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author: xiaowoniu + * @date : 2023-11-21 15:39 + * @since : 2.5.0 + */ +@Data +public class NamespaceResponseVO { + + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 唯一id + */ + private String uniqueId; + + /** + * 创建时间 + */ + private LocalDateTime createDt; + + /** + * 修改时间 + */ + private LocalDateTime updateDt; + +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java index 1c4b8ca2..fc3952df 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/GroupConfigService.java @@ -23,5 +23,5 @@ public interface GroupConfigService { GroupConfigResponseVO getGroupConfigByGroupName(String groupName); - List getAllGroupNameList(); + List getAllGroupNameList(final Long namespaceId); } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/NamespaceService.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/NamespaceService.java new file mode 100644 index 00000000..34454a32 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/NamespaceService.java @@ -0,0 +1,25 @@ +package com.aizuda.easy.retry.server.web.service; + +import com.aizuda.easy.retry.server.web.model.base.PageResult; +import com.aizuda.easy.retry.server.web.model.request.NamespaceQueryVO; +import com.aizuda.easy.retry.server.web.model.request.NamespaceRequestVO; +import com.aizuda.easy.retry.server.web.model.response.NamespaceResponseVO; +import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser; + +import java.util.List; + +/** + * @author: xiaowoniu + * @date : 2023-11-21 15:14 + * @since : 2.5.0 + */ +public interface NamespaceService { + + Boolean saveNamespace(NamespaceRequestVO namespaceRequestVO); + + Boolean updateNamespace(NamespaceRequestVO namespaceRequestVO); + + PageResult> getNamespacePage(NamespaceQueryVO queryVO); + + List getNamespaceByUserId(SystemUser systemUser); +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/convert/NamespaceResponseVOConverter.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/convert/NamespaceResponseVOConverter.java new file mode 100644 index 00000000..cddc1cc1 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/convert/NamespaceResponseVOConverter.java @@ -0,0 +1,19 @@ +package com.aizuda.easy.retry.server.web.service.convert; + +import com.aizuda.easy.retry.server.web.model.response.NamespaceResponseVO; +import com.aizuda.easy.retry.template.datasource.persistence.po.Namespace; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * @author: xiaowoniu + * @date : 2023-11-21 16:20 + * @since : 2.5.0 + */ +public interface NamespaceResponseVOConverter { + + NamespaceResponseVOConverter INSTANCE = Mappers.getMapper(NamespaceResponseVOConverter.class); + + List toNamespaceResponseVOs(List namespaces); +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java index 9996796f..b0fee7a1 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/GroupConfigServiceImpl.java @@ -24,7 +24,6 @@ import com.aizuda.easy.retry.template.datasource.persistence.po.*; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.jdbc.BadSqlGrammarException; @@ -142,8 +141,9 @@ public class GroupConfigServiceImpl implements GroupConfigService { public PageResult> getGroupConfigForPage(GroupConfigQueryVO queryVO) { LambdaQueryWrapper groupConfigLambdaQueryWrapper = new LambdaQueryWrapper<>(); + groupConfigLambdaQueryWrapper.eq(GroupConfig::getNamespaceId, queryVO.getNamespaceId()); if (StrUtil.isNotBlank(queryVO.getGroupName())) { - groupConfigLambdaQueryWrapper.like(GroupConfig::getGroupName, queryVO.getGroupName()); + groupConfigLambdaQueryWrapper.like(GroupConfig::getGroupName, queryVO.getGroupName() + "%"); } ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess(); @@ -236,10 +236,11 @@ public class GroupConfigServiceImpl implements GroupConfigService { } @Override - public List getAllGroupNameList() { + public List getAllGroupNameList(final Long namespaceId) { ConfigAccess groupConfigAccess = accessTemplate.getGroupConfigAccess(); return groupConfigAccess.list(new LambdaQueryWrapper() + .eq(GroupConfig::getNamespaceId, namespaceId) .select(GroupConfig::getGroupName)).stream() .map(GroupConfig::getGroupName) .collect(Collectors.toList()); diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobBatchServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobBatchServiceImpl.java index df73af78..2f1f2dde 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobBatchServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobBatchServiceImpl.java @@ -52,12 +52,13 @@ public class JobBatchServiceImpl implements JobBatchService { JobBatchQueryDO jobBatchQueryDO = new JobBatchQueryDO(); if (StrUtil.isNotBlank(queryVO.getJobName())) { - jobBatchQueryDO.setJobName("%" + queryVO.getJobName() + "%"); + jobBatchQueryDO.setJobName(queryVO.getJobName() + "%"); } jobBatchQueryDO.setJobId(queryVO.getJobId()); jobBatchQueryDO.setTaskBatchStatus(queryVO.getTaskBatchStatus()); jobBatchQueryDO.setGroupName(queryVO.getGroupName()); + jobBatchQueryDO.setNamespaceId(queryVO.getNamespaceId()); List batchResponseDOList = jobTaskBatchMapper.selectJobBatchList(pageDTO, jobBatchQueryDO); List batchResponseVOList = JobBatchResponseVOConverter.INSTANCE.toJobBatchResponseVOs( diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java index 251ff72e..cab3c6e9 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java @@ -61,6 +61,7 @@ public class JobServiceImpl implements JobService { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Job::getDeleted, StatusEnum.NO.getStatus()); + queryWrapper.eq(Job::getNamespaceId, queryVO.getNamespaceId()); if (StrUtil.isNotBlank(queryVO.getGroupName())) { queryWrapper.eq(Job::getGroupName, queryVO.getGroupName()); } diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NamespaceServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NamespaceServiceImpl.java new file mode 100644 index 00000000..f05155a5 --- /dev/null +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NamespaceServiceImpl.java @@ -0,0 +1,75 @@ +package com.aizuda.easy.retry.server.web.service.impl; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.aizuda.easy.retry.common.core.enums.StatusEnum; +import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException; +import com.aizuda.easy.retry.server.web.model.base.PageResult; +import com.aizuda.easy.retry.server.web.model.request.NamespaceQueryVO; +import com.aizuda.easy.retry.server.web.model.request.NamespaceRequestVO; +import com.aizuda.easy.retry.server.web.model.response.NamespaceResponseVO; +import com.aizuda.easy.retry.server.web.service.NamespaceService; +import com.aizuda.easy.retry.server.web.service.convert.NamespaceResponseVOConverter; +import com.aizuda.easy.retry.template.datasource.persistence.mapper.NamespaceMapper; +import com.aizuda.easy.retry.template.datasource.persistence.po.JobTaskBatch; +import com.aizuda.easy.retry.template.datasource.persistence.po.Namespace; +import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author: xiaowoniu + * @date : 2023-11-21 15:42 + * @since : 2.5.0 + */ +@Service +public class NamespaceServiceImpl implements NamespaceService { + + @Autowired + private NamespaceMapper namespaceMapper; + + @Override + public Boolean saveNamespace(final NamespaceRequestVO namespaceRequestVO) { + Namespace namespace = new Namespace(); + namespace.setName(namespaceRequestVO.getName()); + namespace.setUniqueId(IdUtil.simpleUUID()); + return 1 == namespaceMapper.insert(namespace); + } + + @Override + public Boolean updateNamespace(final NamespaceRequestVO namespaceRequestVO) { + Long id = namespaceRequestVO.getId(); + Assert.notNull(id, () -> new EasyRetryServerException("参数错误")); + + Namespace namespace = new Namespace(); + namespace.setName(namespaceRequestVO.getName()); + namespace.setId(id); + return 1 == namespaceMapper.updateById(namespace); + } + + @Override + public PageResult> getNamespacePage(final NamespaceQueryVO queryVO) { + + PageDTO pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize()); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(queryVO.getName())) { + queryWrapper.like(Namespace::getName, "%" + queryVO.getName() + "%"); + } + + queryWrapper.eq(Namespace::getDeleted, StatusEnum.NO); + + PageDTO selectPage = namespaceMapper.selectPage(pageDTO, queryWrapper); + return new PageResult<>(pageDTO, NamespaceResponseVOConverter.INSTANCE.toNamespaceResponseVOs(selectPage.getRecords())); + } + + @Override + public List getNamespaceByUserId(final SystemUser systemUser) { + return null; + } +} diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NotifyConfigServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NotifyConfigServiceImpl.java index 4c2d32f7..ddefafdd 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NotifyConfigServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/NotifyConfigServiceImpl.java @@ -37,6 +37,7 @@ public class NotifyConfigServiceImpl implements NotifyConfigService { PageDTO pageDTO = new PageDTO<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(NotifyConfig::getNamespaceId, queryVO.getNamespaceId()); if (StrUtil.isNotBlank(queryVO.getGroupName())) { queryWrapper.eq(NotifyConfig::getGroupName, queryVO.getGroupName()); }