diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/GroupConfigController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/GroupConfigController.java index 3f9d88a15..e8664bfa9 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/GroupConfigController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/GroupConfigController.java @@ -12,6 +12,8 @@ import com.aizuda.snailjob.server.web.model.response.GroupConfigResponseVO; import com.aizuda.snailjob.server.web.service.GroupConfigService; import com.aizuda.snailjob.server.web.util.ExportUtils; import com.aizuda.snailjob.server.web.util.ImportUtils; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -21,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; +import java.util.Set; /** * 重试组接口 @@ -102,4 +105,10 @@ public class GroupConfigController { public ResponseEntity exportGroup(@RequestBody ExportGroupVO exportGroupVO) { return ExportUtils.doExport(groupConfigService.exportGroup(exportGroupVO)); } + + @LoginRequired(role = RoleEnum.ADMIN) + @DeleteMapping("{id}") + public boolean deleteByIds(@PathVariable("id") Long id) { + return groupConfigService.deleteByIds(id); + } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobBatchController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobBatchController.java index bdea48179..b08a2186f 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobBatchController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobBatchController.java @@ -5,10 +5,13 @@ import com.aizuda.snailjob.server.web.model.base.PageResult; import com.aizuda.snailjob.server.web.model.request.JobBatchQueryVO; import com.aizuda.snailjob.server.web.model.response.JobBatchResponseVO; import com.aizuda.snailjob.server.web.service.JobBatchService; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Set; /** * @author: opensnail @@ -46,4 +49,9 @@ public class JobBatchController { return jobBatchService.retry(taskBatchId); } + @DeleteMapping("/ids") + @LoginRequired + public Boolean deleteJobBatchById(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set ids) { + return jobBatchService.deleteJobBatchById(ids); + } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobController.java index 5997a2e7c..a74f88f2d 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobController.java @@ -11,6 +11,8 @@ import com.aizuda.snailjob.server.web.model.response.JobResponseVO; import com.aizuda.snailjob.server.web.service.JobService; import com.aizuda.snailjob.server.web.util.ExportUtils; import com.aizuda.snailjob.server.web.util.ImportUtils; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -20,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; +import java.util.Set; /** * @author opensnail @@ -72,10 +75,17 @@ public class JobController { @DeleteMapping("{id}") @LoginRequired + @Deprecated public Boolean deleteJobById(@PathVariable("id") Long id) { return jobService.deleteJobById(id); } + @DeleteMapping("/ids") + @LoginRequired + public Boolean deleteJobById(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set ids) { + return jobService.deleteJobByIds(ids); + } + @GetMapping("/cron") @LoginRequired public List getTimeByCron(@RequestParam("cron") String cron) { diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobTaskController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobTaskController.java index f6ae40e6c..00a32d3f4 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobTaskController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/JobTaskController.java @@ -6,12 +6,13 @@ import com.aizuda.snailjob.server.web.model.base.PageResult; import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO; import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO; import com.aizuda.snailjob.server.web.service.JobTaskService; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Set; /** * @author: opensnail @@ -36,4 +37,9 @@ public class JobTaskController { return jobTaskService.getTreeJobTask(jobTaskQueryVO); } + @DeleteMapping("/ids") + @LoginRequired + public Boolean deleteJobTaskById(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set ids) { + return jobTaskService.deleteJobTaskById(ids); + } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/RetryTaskLogController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/RetryTaskLogController.java index e97fcd8bb..b618ae4ef 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/RetryTaskLogController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/RetryTaskLogController.java @@ -7,6 +7,8 @@ import com.aizuda.snailjob.server.web.model.request.RetryTaskLogQueryVO; import com.aizuda.snailjob.server.web.model.response.RetryTaskLogMessageResponseVO; import com.aizuda.snailjob.server.web.model.response.RetryTaskLogResponseVO; import com.aizuda.snailjob.server.web.service.RetryTaskLogService; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -52,7 +54,7 @@ public class RetryTaskLogController { @LoginRequired @DeleteMapping("ids") - public Boolean batchDelete(@RequestBody Set ids) { + public Boolean batchDelete(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set ids) { return retryTaskLogService.batchDelete(ids); } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/SceneConfigController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/SceneConfigController.java index b9917acf3..c047d3d29 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/SceneConfigController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/SceneConfigController.java @@ -10,6 +10,8 @@ import com.aizuda.snailjob.server.web.model.response.SceneConfigResponseVO; import com.aizuda.snailjob.server.web.service.SceneConfigService; import com.aizuda.snailjob.server.web.util.ExportUtils; import com.aizuda.snailjob.server.web.util.ImportUtils; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -19,6 +21,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; +import java.util.Set; /** * 重试场景接口 @@ -82,4 +85,9 @@ public class SceneConfigController { return ExportUtils.doExport(sceneConfigService.exportSceneConfig(exportSceneVO)); } + @LoginRequired + @DeleteMapping("/ids") + public boolean deleteByIds(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set ids) { + return sceneConfigService.deleteByIds(ids); + } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java index 5bdfd4d01..33de3a39c 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java @@ -68,7 +68,7 @@ public class WorkflowController { } @DeleteMapping("/{id}") - @LoginRequired(role = RoleEnum.ADMIN) + @LoginRequired(role = RoleEnum.USER) public Boolean deleteById(@PathVariable("id") Long id) { return workflowService.deleteById(id); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/GroupConfigService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/GroupConfigService.java index 8a5633ea0..62765978b 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/GroupConfigService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/GroupConfigService.java @@ -9,6 +9,7 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import java.util.List; +import java.util.Set; /** * @author: opensnail @@ -37,4 +38,6 @@ public interface GroupConfigService { void importGroup(@Valid @NotEmpty(message = "导入数据不能为空") List requestVOS); String exportGroup(ExportGroupVO exportGroupVO); + + boolean deleteByIds(Long id); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobBatchService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobBatchService.java index 26bef195c..975d96c9b 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobBatchService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobBatchService.java @@ -5,6 +5,7 @@ import com.aizuda.snailjob.server.web.model.request.JobBatchQueryVO; import com.aizuda.snailjob.server.web.model.response.JobBatchResponseVO; import java.util.List; +import java.util.Set; /** * @author: opensnail @@ -20,4 +21,6 @@ public interface JobBatchService { boolean stop(Long taskBatchId); Boolean retry(Long taskBatchId); + + Boolean deleteJobBatchById(Set ids); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobService.java index c4068c231..62fa64f46 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobService.java @@ -10,6 +10,7 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import java.util.List; +import java.util.Set; /** * @author opensnail @@ -41,4 +42,5 @@ public interface JobService { String exportJobs(ExportJobVO exportJobVO); + Boolean deleteJobByIds(Set ids); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobTaskService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobTaskService.java index c35bc1085..5264ffd4a 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobTaskService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/JobTaskService.java @@ -6,6 +6,7 @@ import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO; import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO; import java.util.List; +import java.util.Set; /** * @author: opensnail @@ -17,4 +18,6 @@ public interface JobTaskService { PageResult> getJobTaskPage(JobTaskQueryVO jobTaskQueryVO); List getTreeJobTask(JobTaskQueryVO jobTaskQueryVO); + + Boolean deleteJobTaskById(Set ids); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/SceneConfigService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/SceneConfigService.java index 54aeb63c7..eecf22006 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/SceneConfigService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/SceneConfigService.java @@ -9,6 +9,7 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import java.util.List; +import java.util.Set; /** * @author: opensnail @@ -32,4 +33,5 @@ public interface SceneConfigService { String exportSceneConfig(ExportSceneVO exportSceneVO); + boolean deleteByIds(Set ids); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/GroupConfigServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/GroupConfigServiceImpl.java index 7b9ba0a9f..b0b934e8a 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/GroupConfigServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/GroupConfigServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.HashUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; +import com.aizuda.snailjob.common.core.enums.StatusEnum; import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.core.util.StreamUtils; import com.aizuda.snailjob.server.common.config.SystemProperties; @@ -444,6 +445,26 @@ public class GroupConfigServiceImpl implements GroupConfigService { return JsonUtil.toJsonString(allRequestList); } + @Override + public boolean deleteByIds(Long id) { + // 前置检查 + // 1. 定时任务是否删除 + // 2. 工作流是否删除 + // 3. 重试场景是否删除 + // 4. 是否存在已分配的权限 + // 5. 检查是否存活的客户端节点 + + String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId(); + Assert.isTrue(1 == accessTemplate.getGroupConfigAccess().delete( + new LambdaQueryWrapper() + .eq(GroupConfig::getNamespaceId, namespaceId) + .eq(GroupConfig::getGroupStatus, StatusEnum.NO.getStatus()) + .eq(GroupConfig::getId, id)), + () -> new SnailJobServerException("删除组失败, 请检查状态是否关闭状态")); + + return Boolean.TRUE; + } + @EqualsAndHashCode(callSuper = true) @Getter private static class GroupConfigPartitionTask extends PartitionTask { diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobBatchServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobBatchServiceImpl.java index 3ade3324f..186179d60 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobBatchServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobBatchServiceImpl.java @@ -1,6 +1,7 @@ package com.aizuda.snailjob.server.web.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.common.core.constant.SystemConstants; @@ -8,6 +9,7 @@ import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.server.common.dto.CallbackConfig; import com.aizuda.snailjob.server.common.dto.DecisionConfig; import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum; +import com.aizuda.snailjob.server.common.exception.SnailJobServerException; import com.aizuda.snailjob.server.web.model.base.PageResult; import com.aizuda.snailjob.server.web.model.request.JobBatchQueryVO; import com.aizuda.snailjob.server.web.model.request.UserSessionVO; @@ -23,6 +25,7 @@ import com.aizuda.snailjob.template.datasource.persistence.mapper.WorkflowNodeMa import com.aizuda.snailjob.template.datasource.persistence.po.Job; import com.aizuda.snailjob.template.datasource.persistence.po.JobTaskBatch; import com.aizuda.snailjob.template.datasource.persistence.po.WorkflowNode; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import lombok.RequiredArgsConstructor; @@ -32,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Set; /** * @author: opensnail @@ -119,5 +123,15 @@ public class JobBatchServiceImpl implements JobBatchService { return jobHandler.retry(taskBatchId); } + @Override + public Boolean deleteJobBatchById(Set ids) { + String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId(); + Assert.isTrue(ids.size() == jobTaskBatchMapper.delete( + new LambdaQueryWrapper() + .eq(JobTaskBatch::getNamespaceId, namespaceId) + .in(JobTaskBatch::getId, ids) + ), () -> new SnailJobServerException("删除任务批次失败")); + return Boolean.TRUE; + } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobServiceImpl.java index 3960d3771..105f4fa5c 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobServiceImpl.java @@ -33,6 +33,7 @@ import com.aizuda.snailjob.template.datasource.access.AccessTemplate; import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper; import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig; import com.aizuda.snailjob.template.datasource.persistence.po.Job; +import com.aizuda.snailjob.template.datasource.persistence.po.RetrySceneConfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import lombok.EqualsAndHashCode; @@ -44,10 +45,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; /** * @author opensnail @@ -295,6 +293,20 @@ public class JobServiceImpl implements JobService { return JsonUtil.toJsonString(requestList); } + @Override + public Boolean deleteJobByIds(Set ids) { + String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId(); + + Assert.isTrue(ids.size() == jobMapper.delete( + new LambdaQueryWrapper() + .eq(Job::getNamespaceId, namespaceId) + .eq(Job::getJobStatus, StatusEnum.NO.getStatus()) + .in(Job::getId, ids) + ), () -> new SnailJobServerException("删除定时任务失败, 请检查任务状态是否关闭状态")); + + return Boolean.TRUE; + } + @EqualsAndHashCode(callSuper = true) @Getter private static class JobPartitionTask extends PartitionTask { diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobTaskServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobTaskServiceImpl.java index 56cc6f398..73b25b7ba 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobTaskServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobTaskServiceImpl.java @@ -1,26 +1,28 @@ package com.aizuda.snailjob.server.web.service.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.lang.tree.Tree; -import cn.hutool.core.lang.tree.TreeNode; -import cn.hutool.core.lang.tree.TreeNodeConfig; -import cn.hutool.core.lang.tree.TreeUtil; -import com.aizuda.snailjob.common.core.util.JsonUtil; +import cn.hutool.core.lang.Assert; import com.aizuda.snailjob.common.core.util.StreamUtils; +import com.aizuda.snailjob.server.common.exception.SnailJobServerException; import com.aizuda.snailjob.server.web.model.base.PageResult; import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO; import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO; import com.aizuda.snailjob.server.web.service.JobTaskService; import com.aizuda.snailjob.server.web.service.convert.JobTaskResponseVOConverter; +import com.aizuda.snailjob.server.web.util.UserSessionUtils; +import com.aizuda.snailjob.template.datasource.persistence.mapper.JobLogMessageMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskMapper; +import com.aizuda.snailjob.template.datasource.persistence.po.JobLogMessage; import com.aizuda.snailjob.template.datasource.persistence.po.JobTask; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Set; /** * @author: opensnail @@ -28,10 +30,10 @@ import java.util.stream.Collectors; * @since :2.4.0 */ @Service +@RequiredArgsConstructor public class JobTaskServiceImpl implements JobTaskService { - - @Autowired - private JobTaskMapper jobTaskMapper; + private final JobTaskMapper jobTaskMapper; + private final JobLogMessageMapper jobLogMessageMapper; @Override public PageResult> getJobTaskPage(final JobTaskQueryVO queryVO) { @@ -64,6 +66,25 @@ public class JobTaskServiceImpl implements JobTaskService { return convertJobTaskList(taskList); } + @Override + public Boolean deleteJobTaskById(Set ids) { + String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId(); + + Assert.isTrue(ids.size() == jobTaskMapper.delete( + new LambdaQueryWrapper() + .eq(JobTask::getNamespaceId, namespaceId) + .in(JobTask::getId, ids) + ), () -> new SnailJobServerException("删除任务批次失败")); + + // 删除日志信息 + jobLogMessageMapper.delete(new LambdaQueryWrapper() + .eq(JobLogMessage::getNamespaceId, namespaceId) + .eq(JobLogMessage::getTaskId, ids) + ); + + return Boolean.TRUE; + } + private List convertJobTaskList(List taskList) { if (CollUtil.isEmpty(taskList)) { return new ArrayList<>(); diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/RetryTaskLogServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/RetryTaskLogServiceImpl.java index 0f8d1beec..70e9afd91 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/RetryTaskLogServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/RetryTaskLogServiceImpl.java @@ -205,6 +205,6 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService { .eq(RetryTaskLogMessage::getGroupName, retryTaskLog.getGroupName()) .eq(RetryTaskLogMessage::getUniqueId, retryTaskLog.getUniqueId())); } - return 1 == retryTaskLogMapper.deleteBatchIds(ids); + return 1 == retryTaskLogMapper.deleteByIds(ids); } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SceneConfigServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SceneConfigServiceImpl.java index 5b04d3fdb..2937bf3d3 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SceneConfigServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SceneConfigServiceImpl.java @@ -3,6 +3,7 @@ package com.aizuda.snailjob.server.web.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; +import com.aizuda.snailjob.common.core.enums.StatusEnum; import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.core.util.StreamUtils; import com.aizuda.snailjob.server.common.dto.PartitionTask; @@ -218,6 +219,20 @@ public class SceneConfigServiceImpl implements SceneConfigService { return JsonUtil.toJsonString(requestList); } + @Override + public boolean deleteByIds(Set ids) { + String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId(); + + Assert.isTrue(ids.size() == accessTemplate.getSceneConfigAccess().delete( + new LambdaQueryWrapper() + .eq(RetrySceneConfig::getNamespaceId, namespaceId) + .eq(RetrySceneConfig::getSceneStatus, StatusEnum.NO.getStatus()) + .in(RetrySceneConfig::getId, ids) + ), () -> new SnailJobServerException("删除重试场景失败, 请检查场景状态是否关闭状态")); + + return Boolean.TRUE; + } + private void batchSaveSceneConfig(final List requests, final String namespaceId) { Set groupNameSet = Sets.newHashSet();