diff --git a/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/handler/RestExceptionHandler.java b/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/handler/RestExceptionHandler.java index 46aba9edf..5e6267d9e 100644 --- a/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/handler/RestExceptionHandler.java +++ b/snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/handler/RestExceptionHandler.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.method.annotation.HandlerMethodValidationException; import java.util.List; import java.util.Objects; @@ -133,6 +134,23 @@ public class RestExceptionHandler { return null; } + /** + * Contrller 参数检验错误 + * + * @param e 异常对象 + * @return HttpResult + */ + @ExceptionHandler(HandlerMethodValidationException.class) + public Result onHandlerMethodValidationException(HandlerMethodValidationException e) { + Object[] detailMessageArguments = e.getDetailMessageArguments(); + if (detailMessageArguments != null && detailMessageArguments.length > 0) { + return new Result(0, detailMessageArguments[0].toString()); + } + + return new Result<>("参数校验失败"); + + } + /** * 400错误 */ 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 cd73bcb5f..66f70cd94 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,7 +5,6 @@ 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 jakarta.validation.constraints.Size; import lombok.RequiredArgsConstructor; @@ -52,10 +51,10 @@ public class JobBatchController { @DeleteMapping("/ids") @LoginRequired - public Boolean deleteJobBatchByIds(@RequestBody @Valid - @NotEmpty(message = "ids不能为空") - @Size(max = 100, message = "最多删除5个") - Set ids) { - return jobBatchService.deleteJobBatchByIds(ids); + public Boolean deleteJobBatchByIds(@RequestBody + @NotEmpty(message = "ids不能为空") + @Size(max = 100, message = "最多删除 {max} 个") + Long[] ids) { + return jobBatchService.deleteJobBatchByIds(Set.of(ids)); } } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/JobHandler.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/JobHandler.java index 9588dffc0..bee285645 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/JobHandler.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/JobHandler.java @@ -155,9 +155,9 @@ public class JobHandler { } WorkflowTaskBatch workflowTaskBatch = workflowTaskBatchMapper.selectOne( - new LambdaQueryWrapper() - .select(WorkflowTaskBatch::getWfContext) - .eq(WorkflowTaskBatch::getId, workflowTaskBatchId) + new LambdaQueryWrapper() + .select(WorkflowTaskBatch::getWfContext) + .eq(WorkflowTaskBatch::getId, workflowTaskBatchId) ); if (Objects.isNull(workflowTaskBatch)) { @@ -170,29 +170,24 @@ public class JobHandler { /** * 批次删除定时任务批次 * - * @param ids 任务批次id + * @param ids 任务批次id * @param namespaceId 命名空间 */ @Transactional public void deleteJobTaskBatchByIds(Set ids, String namespaceId) { + // 1. 删除任务批次 job_task_batch + Assert.isTrue(jobTaskBatchMapper.deleteByIds(ids) > 0, + () -> new SnailJobServerException("删除任务批次失败")); - Assert.isTrue(ids.size() == jobTaskBatchMapper.delete( - new LambdaQueryWrapper() - .in(JobTaskBatch::getId, ids) - ), () -> new SnailJobServerException("删除任务批次失败")); + // 2. 删除任务实例 job_task + jobTaskMapper.delete(new LambdaQueryWrapper() + .eq(JobTask::getNamespaceId, namespaceId) + .in(JobTask::getTaskBatchId, ids)); - - Assert.isTrue(ids.size() == jobTaskMapper.delete( - new LambdaQueryWrapper() - .eq(JobTask::getNamespaceId, namespaceId) - .in(JobTask::getId, ids) - ), () -> new SnailJobServerException("删除任务批次失败")); - - // 删除日志信息 + // 3. 删除调度日志 job_log_message jobLogMessageMapper.delete(new LambdaQueryWrapper() .eq(JobLogMessage::getNamespaceId, namespaceId) - .in(JobLogMessage::getTaskId, ids) + .in(JobLogMessage::getTaskBatchId, ids) ); - } }