From 302c2b15dc97d73a0df25132e273b7a04cc51109 Mon Sep 17 00:00:00 2001 From: vran Date: Tue, 19 Apr 2022 23:19:33 +0800 Subject: [PATCH] feat: add cancel task api --- .../java/com/databasir/api/ProjectController.java | 9 ++++++++- api/src/main/java/com/databasir/api/Routes.java | 2 ++ .../core/domain/project/service/ProjectService.java | 11 +++++++++++ .../databasir/dao/enums/ProjectSyncTaskStatus.java | 2 +- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/com/databasir/api/ProjectController.java b/api/src/main/java/com/databasir/api/ProjectController.java index d32107d..5fb9f25 100644 --- a/api/src/main/java/com/databasir/api/ProjectController.java +++ b/api/src/main/java/com/databasir/api/ProjectController.java @@ -91,7 +91,14 @@ public class ProjectController { @PostMapping(Routes.GroupProject.LIST_MANUAL_TASKS) public JsonData> listManualTasks(@PathVariable Integer projectId, - @RequestBody ProjectTaskListCondition condition) { + @RequestBody ProjectTaskListCondition condition) { return JsonData.ok(projectService.listManualTasks(projectId, condition)); } + + @PatchMapping(Routes.GroupProject.CANCEL_MANUAL_TASK) + public JsonData cancelTask(@PathVariable Integer projectId, + @PathVariable Integer taskId) { + projectService.cancelTask(projectId, taskId); + return JsonData.ok(); + } } diff --git a/api/src/main/java/com/databasir/api/Routes.java b/api/src/main/java/com/databasir/api/Routes.java index 9cc4cd8..52472c9 100644 --- a/api/src/main/java/com/databasir/api/Routes.java +++ b/api/src/main/java/com/databasir/api/Routes.java @@ -72,6 +72,8 @@ public interface Routes { String TEST_CONNECTION = BASE + "/projects/test_connection"; String LIST_MANUAL_TASKS = BASE + "/projects/{projectId}/list_manual_tasks"; + + String CANCEL_MANUAL_TASK = BASE + "/projects/{projectId}/tasks/{taskId}/cancel"; } interface Document { diff --git a/core/src/main/java/com/databasir/core/domain/project/service/ProjectService.java b/core/src/main/java/com/databasir/core/domain/project/service/ProjectService.java index def1458..ced03bf 100644 --- a/core/src/main/java/com/databasir/core/domain/project/service/ProjectService.java +++ b/core/src/main/java/com/databasir/core/domain/project/service/ProjectService.java @@ -207,4 +207,15 @@ public class ProjectService { var tasks = projectSyncTaskDao.selectList(condition.toCondition(projectId)); return projectSimpleTaskResponseConverter.of(tasks); } + + public void cancelTask(Integer projectId, Integer taskId) { + if (!projectDao.existsById(projectId)) { + throw DomainErrors.PROJECT_NOT_FOUND.exception(); + } + projectSyncTaskDao.selectOptionalById(taskId).ifPresent(task -> { + if (task.getStatus() == ProjectSyncTaskStatus.NEW || task.getStatus() == ProjectSyncTaskStatus.RUNNING) { + projectSyncTaskDao.updateStatusAndResultById(taskId, ProjectSyncTaskStatus.CANCELED, "主动取消"); + } + }); + } } diff --git a/dao/src/main/java/com/databasir/dao/enums/ProjectSyncTaskStatus.java b/dao/src/main/java/com/databasir/dao/enums/ProjectSyncTaskStatus.java index 33e350e..4aa9065 100644 --- a/dao/src/main/java/com/databasir/dao/enums/ProjectSyncTaskStatus.java +++ b/dao/src/main/java/com/databasir/dao/enums/ProjectSyncTaskStatus.java @@ -5,5 +5,5 @@ public enum ProjectSyncTaskStatus { RUNNING, FINISHED, FAILED, - CANCELLED + CANCELED }