Skip to content

Commit e5b8fac

Browse files
committed
CLAP-308 HotFix: 작업 취소 버그 수정
1 parent 4e67ab6 commit e5b8fac

File tree

5 files changed

+20
-10
lines changed

5 files changed

+20
-10
lines changed

src/main/java/clap/server/adapter/inbound/web/task/CancelTaskController.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package clap.server.adapter.inbound.web.task;
22

3+
import clap.server.adapter.inbound.security.service.SecurityUserDetails;
34
import clap.server.application.port.inbound.task.CancelTaskUsecase;
45
import clap.server.common.annotation.architecture.WebAdapter;
56
import io.swagger.v3.oas.annotations.Operation;
@@ -18,9 +19,9 @@ public class CancelTaskController {
1819
private final CancelTaskUsecase cancelTaskUsecase;
1920

2021
@Operation(summary = "작업 취소")
21-
@Secured("ROLE_USER")
22+
@Secured({"ROLE_USER","ROLE_MANAGER"})
2223
@PatchMapping("/{taskId}/cancel")
23-
public void cancelTask(@PathVariable Long taskId) {
24-
cancelTaskUsecase.cancleTask(taskId);
24+
public void cancelTask(@PathVariable Long taskId, SecurityUserDetails userDetails) {
25+
cancelTaskUsecase.cancleTask(taskId, userDetails.getUserId());
2526
}
2627
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package clap.server.application.port.inbound.task;
22

33
public interface CancelTaskUsecase {
4-
void cancleTask(Long taskId);
4+
void cancleTask(Long taskId, Long memberId);
55
}

src/main/java/clap/server/application/service/task/CancelTaskService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,21 @@
55
import clap.server.common.annotation.architecture.ApplicationService;
66
import clap.server.domain.model.task.Task;
77
import lombok.RequiredArgsConstructor;
8+
import org.springframework.transaction.annotation.Transactional;
9+
10+
import java.util.Objects;
811

912

1013
@ApplicationService
1114
@RequiredArgsConstructor
15+
@Transactional
1216
public class CancelTaskService implements CancelTaskUsecase {
1317
private final TaskService taskService;
1418

1519
@Override
16-
public void cancleTask(Long taskId) {
20+
public void cancleTask(Long taskId, Long memberId) {
1721
Task task = taskService.findById(taskId);
18-
task.cancelTask();
22+
task.cancelTask(memberId);
1923
taskService.upsert(task);
2024
}
2125
}

src/main/java/clap/server/domain/model/task/Task.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import clap.server.domain.model.common.BaseTime;
55
import clap.server.domain.model.member.Member;
66
import clap.server.exception.ApplicationException;
7+
import clap.server.exception.DomainException;
78
import clap.server.exception.code.TaskErrorCode;
89
import lombok.AccessLevel;
910
import lombok.Getter;
@@ -15,6 +16,7 @@
1516
import java.util.Objects;
1617

1718
import static clap.server.domain.policy.task.TaskPolicyConstants.DEFAULT_PROCESSOR_ORDER_GAP;
19+
import static clap.server.exception.code.TaskErrorCode.NOT_A_REQUESTER;
1820

1921
@Getter
2022
@SuperBuilder
@@ -48,7 +50,7 @@ public static Task createTask(Member member, Category category, String title, St
4850

4951
public void updateTask(Long requesterId, Category category, String title, String description) {
5052
if (!Objects.equals(requesterId, this.requester.getMemberId())) {
51-
throw new ApplicationException(TaskErrorCode.NOT_A_REQUESTER);
53+
throw new ApplicationException(NOT_A_REQUESTER);
5254
}
5355
this.category = category;
5456
this.title = title;
@@ -103,7 +105,10 @@ public void updateProcessorOrder(long newProcessorOrder) {
103105
this.processorOrder = newProcessorOrder;
104106
}
105107

106-
public void cancelTask() {
108+
public void cancelTask(Long requesterId) {
109+
if (!Objects.equals(this.requester.getMemberId(), requesterId)) {
110+
throw new DomainException(NOT_A_REQUESTER);
111+
}
107112
this.taskStatus = TaskStatus.TERMINATED;
108113
this.finishedAt = LocalDateTime.now();
109114
}

src/main/java/clap/server/exception/code/TaskErrorCode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public enum TaskErrorCode implements BaseErrorCode {
1616
INVALID_TASK_ORDER(HttpStatus.INTERNAL_SERVER_ERROR, "TASK_007", "유효하지 않은 task order입니다."),
1717
INVALID_TASK_STATUS_TRANSITION(HttpStatus.BAD_REQUEST, "TASK_008", "유효하지 않은 작업 상태 전환입니다."),
1818
NOT_A_REVIEWER(HttpStatus.FORBIDDEN, "TASK_009", "작업 승인 및 수정 권한이 없습니다."),
19-
NOT_A_REQUESTER(HttpStatus.FORBIDDEN, "TASK_009", "작업 수정 권한이 없습니다."),
20-
TASK_STATUS_NOT_ALLOWED(HttpStatus.BAD_REQUEST, "TASK_010", "변경할 수 없는 작업 상태입니다. 다른 API를 사용해주세요")
19+
NOT_A_REQUESTER(HttpStatus.FORBIDDEN, "TASK_010", "작업 수정 및 취소 권한이 없습니다."),
20+
TASK_STATUS_NOT_ALLOWED(HttpStatus.BAD_REQUEST, "TASK_011", "변경할 수 없는 작업 상태입니다. 다른 API를 사용해주세요")
2121
;
2222

2323
private final HttpStatus httpStatus;

0 commit comments

Comments
 (0)