Skip to content

Commit 48d226d

Browse files
committed
CLAP-154 Feature: 작업 상태 변경 기능 구현
1 parent 7a03d28 commit 48d226d

File tree

5 files changed

+43
-0
lines changed

5 files changed

+43
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package clap.server.adapter.inbound.web.dto.task;
2+
3+
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import jakarta.validation.constraints.NotNull;
6+
7+
@Schema(description = "작업 상태 변경 요청")
8+
public record UpdateTaskStateRequest(
9+
10+
@Schema(description = "변경하고 싶은 작업 상태", example = "COMPLETED")
11+
@NotNull
12+
TaskStatus taskStatus
13+
) {
14+
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ public ResponseEntity<UpdateTaskResponse> updateTask(
5454
return ResponseEntity.ok(updateTaskUsecase.updateTask(userInfo.getUserId(), taskId, updateTaskRequest, attachments));
5555
}
5656

57+
@Operation(summary = "작업 상태 변경")
58+
@Secured({"ROLE_MANGER"})
59+
@PatchMapping("/state/{taskId}")
60+
public ResponseEntity<UpdateTaskResponse> updateTaskState(
61+
@PathVariable @NotNull Long taskId,
62+
@AuthenticationPrincipal SecurityUserDetails userInfo,
63+
@RequestBody UpdateTaskStateRequest updateTaskStateRequest) {
64+
65+
return ResponseEntity.ok(updateTaskUsecase.updateTaskState(userInfo.getUserId(), taskId, updateTaskStateRequest));
66+
}
67+
5768
@Operation(summary = "작업 승인")
5869
@Secured({"ROLE_MANAGER"})
5970
@PostMapping("/approval/{taskId}")

src/main/java/clap/server/application/Task/UpdateTaskService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import clap.server.adapter.inbound.web.dto.task.UpdateTaskRequest;
44
import clap.server.adapter.inbound.web.dto.task.UpdateTaskResponse;
5+
import clap.server.adapter.inbound.web.dto.task.UpdateTaskStateRequest;
56
import clap.server.adapter.outbound.infrastructure.s3.S3UploadAdapter;
67
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
78
import clap.server.application.mapper.AttachmentMapper;
@@ -62,6 +63,17 @@ public UpdateTaskResponse updateTask(Long requesterId, Long taskId, UpdateTaskRe
6263
return TaskMapper.toUpdateTaskResponse(updatedTask);
6364
}
6465

66+
@Override
67+
public UpdateTaskResponse updateTaskState(Long memberId, Long taskId, UpdateTaskStateRequest updateTaskStateRequest) {
68+
memberService.findActiveMember(memberId);
69+
Task task = taskService.findById(taskId);
70+
task.updateTaskStatus(updateTaskStateRequest.taskStatus());
71+
Task updateTask = commandTaskPort.save(task);
72+
return TaskMapper.toUpdateTaskResponse(updateTask);
73+
74+
// TODO : 알림 생성 로직 및 푸시 알림 로직 추가
75+
}
76+
6577
private void updateAttachments(List<Long> attachmentIdsToDelete, List<MultipartFile> files, Task task) {
6678
validateAttachments(attachmentIdsToDelete, task);
6779
commandAttachmentPort.deleteByIds(attachmentIdsToDelete);

src/main/java/clap/server/application/port/inbound/task/UpdateTaskUsecase.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33

44
import clap.server.adapter.inbound.web.dto.task.UpdateTaskRequest;
55
import clap.server.adapter.inbound.web.dto.task.UpdateTaskResponse;
6+
import clap.server.adapter.inbound.web.dto.task.UpdateTaskStateRequest;
67
import org.springframework.web.multipart.MultipartFile;
78

89
import java.util.List;
910

1011
public interface UpdateTaskUsecase {
1112
UpdateTaskResponse updateTask(Long memberId, Long taskId, UpdateTaskRequest updateTaskRequest, List<MultipartFile> files);
13+
UpdateTaskResponse updateTaskState(Long memberId, Long taskId, UpdateTaskStateRequest updateTaskStateRequest);
1214
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ public void updateTask(Category category, String title, String description) {
5050
this.taskCode = toTaskCode(category);
5151
}
5252

53+
public void updateTaskStatus(TaskStatus status) {
54+
this.taskStatus = status;
55+
}
56+
5357
public void approveTask(Member reviewer, Member processor, LocalDateTime dueDate, Category category, Label label) {
5458
this.reviewer = reviewer;
5559
this.processor = processor;

0 commit comments

Comments
 (0)