From 4fd2e2611b009c577e04a8eb0e63d26186e57dae Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Thu, 30 Jan 2025 09:42:39 +0900 Subject: [PATCH 1/6] =?UTF-8?q?CLAP-176=20Refactor:=20outbound=20port=20ta?= =?UTF-8?q?skhistory=20=EB=94=94=EB=A0=89=ED=86=A0=EB=A6=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../outbound/persistense/CommentPersistenceAdapter.java | 2 +- .../outbound/persistense/TaskHistoryPersistenceAdapter.java | 3 +-- .../outbound/{task => taskhistory}/CommandCommentPort.java | 2 +- .../port/outbound/{task => taskhistory}/LoadCommentPort.java | 2 +- .../outbound/{task => taskhistory}/LoadTaskHistoryPort.java | 2 +- .../server/application/service/task/ApprovalTaskService.java | 2 ++ .../application/service/task/FindTaskHistoriesService.java | 2 +- 7 files changed, 8 insertions(+), 7 deletions(-) rename src/main/java/clap/server/application/port/outbound/{task => taskhistory}/CommandCommentPort.java (73%) rename src/main/java/clap/server/application/port/outbound/{task => taskhistory}/LoadCommentPort.java (72%) rename src/main/java/clap/server/application/port/outbound/{task => taskhistory}/LoadTaskHistoryPort.java (75%) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java index 20b4aca6..48b65cf7 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/CommentPersistenceAdapter.java @@ -1,6 +1,6 @@ package clap.server.adapter.outbound.persistense; -import clap.server.application.port.outbound.task.LoadCommentPort; +import clap.server.application.port.outbound.taskhistory.LoadCommentPort; import clap.server.domain.model.task.Comment; import java.util.Optional; diff --git a/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java index 15a60b9b..eb520518 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java @@ -1,10 +1,9 @@ package clap.server.adapter.outbound.persistense; -import clap.server.adapter.outbound.persistense.entity.task.TaskHistoryEntity; import clap.server.adapter.outbound.persistense.mapper.TaskHistoryPersistenceMapper; import clap.server.adapter.outbound.persistense.repository.task.TaskHistoryRepository; -import clap.server.application.port.outbound.task.LoadTaskHistoryPort; +import clap.server.application.port.outbound.taskhistory.LoadTaskHistoryPort; import clap.server.common.annotation.architecture.PersistenceAdapter; import clap.server.domain.model.task.TaskHistory; diff --git a/src/main/java/clap/server/application/port/outbound/task/CommandCommentPort.java b/src/main/java/clap/server/application/port/outbound/taskhistory/CommandCommentPort.java similarity index 73% rename from src/main/java/clap/server/application/port/outbound/task/CommandCommentPort.java rename to src/main/java/clap/server/application/port/outbound/taskhistory/CommandCommentPort.java index 61720996..ed378deb 100644 --- a/src/main/java/clap/server/application/port/outbound/task/CommandCommentPort.java +++ b/src/main/java/clap/server/application/port/outbound/taskhistory/CommandCommentPort.java @@ -1,4 +1,4 @@ -package clap.server.application.port.outbound.task; +package clap.server.application.port.outbound.taskhistory; import clap.server.domain.model.task.Comment; diff --git a/src/main/java/clap/server/application/port/outbound/task/LoadCommentPort.java b/src/main/java/clap/server/application/port/outbound/taskhistory/LoadCommentPort.java similarity index 72% rename from src/main/java/clap/server/application/port/outbound/task/LoadCommentPort.java rename to src/main/java/clap/server/application/port/outbound/taskhistory/LoadCommentPort.java index e27869b9..a49cd218 100644 --- a/src/main/java/clap/server/application/port/outbound/task/LoadCommentPort.java +++ b/src/main/java/clap/server/application/port/outbound/taskhistory/LoadCommentPort.java @@ -1,4 +1,4 @@ -package clap.server.application.port.outbound.task; +package clap.server.application.port.outbound.taskhistory; import clap.server.domain.model.task.Comment; diff --git a/src/main/java/clap/server/application/port/outbound/task/LoadTaskHistoryPort.java b/src/main/java/clap/server/application/port/outbound/taskhistory/LoadTaskHistoryPort.java similarity index 75% rename from src/main/java/clap/server/application/port/outbound/task/LoadTaskHistoryPort.java rename to src/main/java/clap/server/application/port/outbound/taskhistory/LoadTaskHistoryPort.java index b5ef8d7a..96d73464 100644 --- a/src/main/java/clap/server/application/port/outbound/task/LoadTaskHistoryPort.java +++ b/src/main/java/clap/server/application/port/outbound/taskhistory/LoadTaskHistoryPort.java @@ -1,4 +1,4 @@ -package clap.server.application.port.outbound.task; +package clap.server.application.port.outbound.taskhistory; import clap.server.domain.model.task.TaskHistory; diff --git a/src/main/java/clap/server/application/service/task/ApprovalTaskService.java b/src/main/java/clap/server/application/service/task/ApprovalTaskService.java index 2c4d88b4..eeb28859 100644 --- a/src/main/java/clap/server/application/service/task/ApprovalTaskService.java +++ b/src/main/java/clap/server/application/service/task/ApprovalTaskService.java @@ -39,6 +39,8 @@ public ApprovalTaskResponse approvalTaskByReviewer(Long reviewerId, Long taskId, Label label = labelService.findById(approvalTaskRequest.labelId()); task.approveTask(reviewer, processor, approvalTaskRequest.dueDate(), category, label); + //담당자 할당에 대한 히스토리 생성 + return TaskMapper.toApprovalTaskResponse(commandTaskPort.save(task)); } diff --git a/src/main/java/clap/server/application/service/task/FindTaskHistoriesService.java b/src/main/java/clap/server/application/service/task/FindTaskHistoriesService.java index 69c5d9ae..4bb1d4a1 100644 --- a/src/main/java/clap/server/application/service/task/FindTaskHistoriesService.java +++ b/src/main/java/clap/server/application/service/task/FindTaskHistoriesService.java @@ -6,7 +6,7 @@ import clap.server.application.port.inbound.task.FindTaskHistoriesUsecase; import clap.server.application.port.outbound.task.LoadAttachmentPort; -import clap.server.application.port.outbound.task.LoadTaskHistoryPort; +import clap.server.application.port.outbound.taskhistory.LoadTaskHistoryPort; import clap.server.application.port.outbound.task.LoadTaskPort; import clap.server.common.annotation.architecture.ApplicationService; import clap.server.domain.model.task.Attachment; From 4dad6b8aca2c019f4a985a84758bee7eb2d11b25 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Thu, 30 Jan 2025 10:25:37 +0900 Subject: [PATCH 2/6] =?UTF-8?q?CLAP-176=20Add:=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=EC=8A=B9=EC=9D=B8=20=EC=B2=98=EB=A6=AC=EC=8B=9C=20=EB=8B=B4?= =?UTF-8?q?=EB=8B=B9=EC=9E=90=20=ED=95=A0=EB=8B=B9=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=9C=20=ED=9E=88=EC=8A=A4=ED=86=A0=EB=A6=AC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TaskHistoryPersistenceAdapter.java | 11 ++++++- .../entity/task/TaskModificationInfo.java | 6 ---- .../taskhistory/CommandTaskHistoryPort.java | 8 +++++ .../service/task/ApprovalTaskService.java | 7 +++- .../server/domain/model/task/TaskHistory.java | 33 ++++++++++--------- 5 files changed, 41 insertions(+), 24 deletions(-) create mode 100644 src/main/java/clap/server/application/port/outbound/taskhistory/CommandTaskHistoryPort.java diff --git a/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java index eb520518..9d9b3e31 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java @@ -1,8 +1,10 @@ package clap.server.adapter.outbound.persistense; +import clap.server.adapter.outbound.persistense.entity.task.TaskHistoryEntity; import clap.server.adapter.outbound.persistense.mapper.TaskHistoryPersistenceMapper; import clap.server.adapter.outbound.persistense.repository.task.TaskHistoryRepository; +import clap.server.application.port.outbound.taskhistory.CommandTaskHistoryPort; import clap.server.application.port.outbound.taskhistory.LoadTaskHistoryPort; import clap.server.common.annotation.architecture.PersistenceAdapter; @@ -14,7 +16,7 @@ @PersistenceAdapter @RequiredArgsConstructor -public class TaskHistoryPersistenceAdapter implements LoadTaskHistoryPort { +public class TaskHistoryPersistenceAdapter implements LoadTaskHistoryPort, CommandTaskHistoryPort { private final TaskHistoryRepository taskHistoryRepository; private final TaskHistoryPersistenceMapper taskHistoryPersistenceMapper; @@ -25,4 +27,11 @@ public List findAllTaskHistoriesByTaskId(Long taskId) { .map(taskHistoryPersistenceMapper::toDomain) .toList(); } + + @Override + public TaskHistory save(TaskHistory taskHistory) { + TaskHistoryEntity taskHistoryEntity = taskHistoryPersistenceMapper.toEntity(taskHistory); + TaskHistoryEntity savedTaskHistoryEntity = taskHistoryRepository.save(taskHistoryEntity); + return taskHistoryPersistenceMapper.toDomain(savedTaskHistoryEntity); + } } diff --git a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java index 2fac6d00..d8db9640 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java @@ -17,13 +17,7 @@ public class TaskModificationInfo { @JoinColumn(name = "task_id") private TaskEntity task; - @Column(name = "modified_field") - private String modifiedField; //TODO: 속성 필요성 검토 - @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "modified_member_id") private MemberEntity modifiedMember; - - @Column(name = "new_value") - private String newValue; //TODO: 속성 필요성 검토 } diff --git a/src/main/java/clap/server/application/port/outbound/taskhistory/CommandTaskHistoryPort.java b/src/main/java/clap/server/application/port/outbound/taskhistory/CommandTaskHistoryPort.java new file mode 100644 index 00000000..007b0661 --- /dev/null +++ b/src/main/java/clap/server/application/port/outbound/taskhistory/CommandTaskHistoryPort.java @@ -0,0 +1,8 @@ +package clap.server.application.port.outbound.taskhistory; + +import clap.server.domain.model.task.TaskHistory; + +public interface CommandTaskHistoryPort { + TaskHistory save(TaskHistory taskHistory); + +} diff --git a/src/main/java/clap/server/application/service/task/ApprovalTaskService.java b/src/main/java/clap/server/application/service/task/ApprovalTaskService.java index eeb28859..aac3776b 100644 --- a/src/main/java/clap/server/application/service/task/ApprovalTaskService.java +++ b/src/main/java/clap/server/application/service/task/ApprovalTaskService.java @@ -3,6 +3,7 @@ import clap.server.adapter.inbound.web.dto.task.ApprovalTaskRequest; import clap.server.adapter.inbound.web.dto.task.ApprovalTaskResponse; import clap.server.adapter.inbound.web.dto.task.FindApprovalFormResponse; +import clap.server.adapter.outbound.persistense.entity.task.constant.TaskHistoryType; import clap.server.application.mapper.TaskMapper; import clap.server.application.port.inbound.domain.CategoryService; import clap.server.application.port.inbound.domain.LabelService; @@ -10,11 +11,13 @@ import clap.server.application.port.inbound.domain.TaskService; import clap.server.application.port.inbound.task.ApprovalTaskUsecase; import clap.server.application.port.outbound.task.CommandTaskPort; +import clap.server.application.port.outbound.taskhistory.CommandTaskHistoryPort; import clap.server.common.annotation.architecture.ApplicationService; import clap.server.domain.model.member.Member; import clap.server.domain.model.task.Category; import clap.server.domain.model.task.Label; import clap.server.domain.model.task.Task; +import clap.server.domain.model.task.TaskHistory; import lombok.RequiredArgsConstructor; import org.springframework.transaction.annotation.Transactional; @@ -28,6 +31,7 @@ public class ApprovalTaskService implements ApprovalTaskUsecase { private final CategoryService categoryService; private final LabelService labelService; private final CommandTaskPort commandTaskPort; + private final CommandTaskHistoryPort commandTaskHistoryPort; @Override @Transactional @@ -40,7 +44,8 @@ public ApprovalTaskResponse approvalTaskByReviewer(Long reviewerId, Long taskId, task.approveTask(reviewer, processor, approvalTaskRequest.dueDate(), category, label); //담당자 할당에 대한 히스토리 생성 - + TaskHistory taskHistory = TaskHistory.createTaskHistory(TaskHistoryType.PROCESSOR_ASSIGNED, task, processor, null); + commandTaskHistoryPort.save(taskHistory); return TaskMapper.toApprovalTaskResponse(commandTaskPort.save(task)); } diff --git a/src/main/java/clap/server/domain/model/task/TaskHistory.java b/src/main/java/clap/server/domain/model/task/TaskHistory.java index b41b0fa9..27742116 100644 --- a/src/main/java/clap/server/domain/model/task/TaskHistory.java +++ b/src/main/java/clap/server/domain/model/task/TaskHistory.java @@ -1,15 +1,11 @@ package clap.server.domain.model.task; -import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus; import clap.server.adapter.outbound.persistense.entity.task.constant.TaskHistoryType; + import clap.server.domain.model.common.BaseTime; import clap.server.domain.model.member.Member; -import clap.server.domain.model.member.MemberInfo; -import co.elastic.clients.elasticsearch.inference.TaskType; -import lombok.AccessLevel; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; + +import lombok.*; import lombok.experimental.SuperBuilder; @Getter @@ -22,20 +18,25 @@ public class TaskHistory extends BaseTime { private Comment comment; @Getter + @Builder + @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public static class TaskModificationInfo { private Task task; - private String modifiedField; private Member modifiedMember; - private String newValue; + } - @Builder - public TaskModificationInfo(Task task, String modifiedField, Member modifiedMember, String newValue) { - this.task = task; - this.modifiedField = modifiedField; - this.modifiedMember = modifiedMember; - this.newValue = newValue; - } + public static TaskHistory createTaskHistory(TaskHistoryType type, Task task, Member member, Comment comment) { + return TaskHistory.builder() + .type(type) + .taskModificationInfo( + TaskModificationInfo.builder() + .task(task) + .modifiedMember(member) + .build() + ) + .comment(comment) + .build(); } } From 9fdcd81fe682b7d6e4ec1e700f96ddb3f5c6d210 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Thu, 30 Jan 2025 10:28:52 +0900 Subject: [PATCH 3/6] =?UTF-8?q?CLAP-176=20Add:=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=EC=8A=B9=EC=9D=B8=20=EC=B2=98=EB=A6=AC=20=EC=8B=9C=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=20=EC=83=81=ED=83=9C=20=EA=B2=80=EC=A6=9D=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/application/service/task/ApprovalTaskService.java | 1 - src/main/java/clap/server/domain/model/task/Task.java | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/clap/server/application/service/task/ApprovalTaskService.java b/src/main/java/clap/server/application/service/task/ApprovalTaskService.java index aac3776b..01b4ef39 100644 --- a/src/main/java/clap/server/application/service/task/ApprovalTaskService.java +++ b/src/main/java/clap/server/application/service/task/ApprovalTaskService.java @@ -43,7 +43,6 @@ public ApprovalTaskResponse approvalTaskByReviewer(Long reviewerId, Long taskId, Label label = labelService.findById(approvalTaskRequest.labelId()); task.approveTask(reviewer, processor, approvalTaskRequest.dueDate(), category, label); - //담당자 할당에 대한 히스토리 생성 TaskHistory taskHistory = TaskHistory.createTaskHistory(TaskHistoryType.PROCESSOR_ASSIGNED, task, processor, null); commandTaskHistoryPort.save(taskHistory); return TaskMapper.toApprovalTaskResponse(commandTaskPort.save(task)); diff --git a/src/main/java/clap/server/domain/model/task/Task.java b/src/main/java/clap/server/domain/model/task/Task.java index efdfeba5..fd076ac7 100644 --- a/src/main/java/clap/server/domain/model/task/Task.java +++ b/src/main/java/clap/server/domain/model/task/Task.java @@ -85,6 +85,7 @@ public void updateLabel(Label label) { } public void approveTask(Member reviewer, Member processor, LocalDateTime dueDate, Category category, Label label) { + validateTaskRequested(); this.reviewer = reviewer; this.processor = processor; this.dueDate = dueDate; From ffd050c82d2c8b3fe146e18fded2a64a6cccfc32 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Thu, 30 Jan 2025 11:05:35 +0900 Subject: [PATCH 4/6] =?UTF-8?q?CLAP-176=20Fix:=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=20=EB=B3=80=EA=B2=BD=20secured=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inbound/web/task/ChangeTaskController.java | 2 +- .../entity/task/TaskModificationInfo.java | 3 +++ .../application/mapper/TaskHistoryMapper.java | 2 +- .../service/task/ApprovalTaskService.java | 2 +- .../application/service/task/UpdateTaskService.java | 13 +++++++------ .../clap/server/domain/model/task/TaskHistory.java | 4 +++- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java index 9ec8bd7a..ba732172 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java @@ -31,7 +31,7 @@ public class ChangeTaskController { private final ApprovalTaskUsecase approvalTaskUsecase; @Operation(summary = "작업 상태 변경") - @Secured({"ROLE_MANGER"}) + @Secured({"ROLE_MANAGER"}) @PatchMapping("/state/{taskId}") public ResponseEntity updateTaskState( @PathVariable @NotNull Long taskId, diff --git a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java index d8db9640..e7679315 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java @@ -20,4 +20,7 @@ public class TaskModificationInfo { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "modified_member_id") private MemberEntity modifiedMember; + + @JoinColumn(name = "modified_status") + private String modifiedStatus; } diff --git a/src/main/java/clap/server/application/mapper/TaskHistoryMapper.java b/src/main/java/clap/server/application/mapper/TaskHistoryMapper.java index dd8ba622..d0fc4e4f 100644 --- a/src/main/java/clap/server/application/mapper/TaskHistoryMapper.java +++ b/src/main/java/clap/server/application/mapper/TaskHistoryMapper.java @@ -28,7 +28,7 @@ public static FindTaskHistoryResponse toFindTaskHistoryResponse(List new FindTaskHistoryResponse.Details( new FindTaskHistoryResponse.TaskDetails( - taskHistory.getTaskModificationInfo().getTask().getTaskStatus().getDescription() + taskHistory.getTaskModificationInfo().getModifiedStatus() ), null, null diff --git a/src/main/java/clap/server/application/service/task/ApprovalTaskService.java b/src/main/java/clap/server/application/service/task/ApprovalTaskService.java index 01b4ef39..124c6527 100644 --- a/src/main/java/clap/server/application/service/task/ApprovalTaskService.java +++ b/src/main/java/clap/server/application/service/task/ApprovalTaskService.java @@ -43,7 +43,7 @@ public ApprovalTaskResponse approvalTaskByReviewer(Long reviewerId, Long taskId, Label label = labelService.findById(approvalTaskRequest.labelId()); task.approveTask(reviewer, processor, approvalTaskRequest.dueDate(), category, label); - TaskHistory taskHistory = TaskHistory.createTaskHistory(TaskHistoryType.PROCESSOR_ASSIGNED, task, processor, null); + TaskHistory taskHistory = TaskHistory.createTaskHistory(TaskHistoryType.PROCESSOR_ASSIGNED, task, null, processor,null); commandTaskHistoryPort.save(taskHistory); return TaskMapper.toApprovalTaskResponse(commandTaskPort.save(task)); } diff --git a/src/main/java/clap/server/application/service/task/UpdateTaskService.java b/src/main/java/clap/server/application/service/task/UpdateTaskService.java index b25e355f..756aa740 100644 --- a/src/main/java/clap/server/application/service/task/UpdateTaskService.java +++ b/src/main/java/clap/server/application/service/task/UpdateTaskService.java @@ -2,6 +2,7 @@ import clap.server.adapter.inbound.web.dto.task.*; import clap.server.adapter.outbound.infrastructure.s3.S3UploadAdapter; +import clap.server.adapter.outbound.persistense.entity.task.constant.TaskHistoryType; import clap.server.application.mapper.AttachmentMapper; import clap.server.application.mapper.TaskMapper; import clap.server.application.port.inbound.domain.CategoryService; @@ -15,13 +16,11 @@ import clap.server.application.port.outbound.task.CommandAttachmentPort; import clap.server.application.port.outbound.task.CommandTaskPort; import clap.server.application.port.outbound.task.LoadAttachmentPort; +import clap.server.application.port.outbound.taskhistory.CommandTaskHistoryPort; import clap.server.common.annotation.architecture.ApplicationService; import clap.server.common.constants.FilePathConstants; import clap.server.domain.model.member.Member; -import clap.server.domain.model.task.Attachment; -import clap.server.domain.model.task.Category; -import clap.server.domain.model.task.Label; -import clap.server.domain.model.task.Task; +import clap.server.domain.model.task.*; import clap.server.exception.ApplicationException; import clap.server.exception.code.TaskErrorCode; import lombok.RequiredArgsConstructor; @@ -45,6 +44,7 @@ public class UpdateTaskService implements UpdateTaskUsecase, UpdateTaskStatusUse private final LoadAttachmentPort loadAttachmentPort; private final LabelService labelService; private final CommandAttachmentPort commandAttachmentPort; + private final CommandTaskHistoryPort commandTaskHistoryPort; private final S3UploadAdapter s3UploadAdapter; @Override @@ -69,8 +69,9 @@ public UpdateTaskResponse updateTaskState(Long memberId, Long taskId, UpdateTask memberService.findActiveMember(memberId); Task task = taskService.findById(taskId); task.updateTaskStatus(updateTaskStatusRequest.taskStatus()); - Task updateTask = commandTaskPort.save(task); - return TaskMapper.toUpdateTaskResponse(updateTask); + TaskHistory taskHistory = TaskHistory.createTaskHistory(TaskHistoryType.STATUS_SWITCHED, task, task.getTaskStatus().getDescription(), null, null); + commandTaskHistoryPort.save(taskHistory); + return TaskMapper.toUpdateTaskResponse(commandTaskPort.save(task)); // TODO : 알림 생성 로직 및 푸시 알림 로직 추가 } diff --git a/src/main/java/clap/server/domain/model/task/TaskHistory.java b/src/main/java/clap/server/domain/model/task/TaskHistory.java index 27742116..0e751998 100644 --- a/src/main/java/clap/server/domain/model/task/TaskHistory.java +++ b/src/main/java/clap/server/domain/model/task/TaskHistory.java @@ -24,15 +24,17 @@ public class TaskHistory extends BaseTime { public static class TaskModificationInfo { private Task task; private Member modifiedMember; + private String modifiedStatus; } - public static TaskHistory createTaskHistory(TaskHistoryType type, Task task, Member member, Comment comment) { + public static TaskHistory createTaskHistory(TaskHistoryType type, Task task, String statusDescription, Member member, Comment comment) { return TaskHistory.builder() .type(type) .taskModificationInfo( TaskModificationInfo.builder() .task(task) .modifiedMember(member) + .modifiedStatus(statusDescription) .build() ) .comment(comment) From c9d01b0c3abbf56298b8c39ee314f1555886eda7 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Thu, 30 Jan 2025 11:17:54 +0900 Subject: [PATCH 5/6] =?UTF-8?q?CLAP-176=20Fix:=20TaskStatus=20jsoncreater?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inbound/web/dto/task/UpdateTaskStatusRequest.java | 2 +- .../adapter/inbound/web/task/ChangeTaskController.java | 2 +- .../persistense/entity/task/constant/TaskStatus.java | 10 ---------- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/UpdateTaskStatusRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/UpdateTaskStatusRequest.java index 12eebbdb..dd4b07cb 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/UpdateTaskStatusRequest.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/UpdateTaskStatusRequest.java @@ -7,7 +7,7 @@ @Schema(description = "작업 상태 변경 요청") public record UpdateTaskStatusRequest( - @Schema(description = "변경하고 싶은 작업 상태", example = "완료") + @Schema(description = "변경하고 싶은 작업 상태", example = "COMPLETED") @NotNull TaskStatus taskStatus ) { diff --git a/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java index ba732172..3b4e3970 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java @@ -31,7 +31,7 @@ public class ChangeTaskController { private final ApprovalTaskUsecase approvalTaskUsecase; @Operation(summary = "작업 상태 변경") - @Secured({"ROLE_MANAGER"}) + @Secured("ROLE_MANAGER") @PatchMapping("/state/{taskId}") public ResponseEntity updateTaskState( @PathVariable @NotNull Long taskId, diff --git a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/constant/TaskStatus.java b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/constant/TaskStatus.java index 83a653f4..3eb78723 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/constant/TaskStatus.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/constant/TaskStatus.java @@ -17,16 +17,6 @@ public enum TaskStatus { private final String description; - @JsonCreator - public static TaskStatus fromDescription(String description) { - for (TaskStatus status : TaskStatus.values()) { - if (status.getDescription().equals(description)) { - return status; - } - } - throw new IllegalArgumentException("Unknown description: " + description); - } - public static List getTaskBoardStatusList() { return List.of( TaskStatus.IN_PROGRESS, From 843da42c91f312357c893d88b73e58e5cc0c5dd8 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Thu, 30 Jan 2025 11:29:04 +0900 Subject: [PATCH 6/6] =?UTF-8?q?CLAP-176=20Add:=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=EC=9E=90=20=EB=B3=80=EA=B2=BD=20=EC=8B=9C=20?= =?UTF-8?q?=ED=9E=88=EC=8A=A4=ED=86=A0=EB=A6=AC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/dto/task/UpdateTaskProcessorRequest.java | 1 - .../service/task/UpdateTaskService.java | 14 ++++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/UpdateTaskProcessorRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/UpdateTaskProcessorRequest.java index 3831ab49..547e00f2 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/UpdateTaskProcessorRequest.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/UpdateTaskProcessorRequest.java @@ -1,6 +1,5 @@ package clap.server.adapter.inbound.web.dto.task; -import clap.server.domain.model.member.Member; public record UpdateTaskProcessorRequest( Long processorId diff --git a/src/main/java/clap/server/application/service/task/UpdateTaskService.java b/src/main/java/clap/server/application/service/task/UpdateTaskService.java index 756aa740..3da416ff 100644 --- a/src/main/java/clap/server/application/service/task/UpdateTaskService.java +++ b/src/main/java/clap/server/application/service/task/UpdateTaskService.java @@ -79,13 +79,13 @@ public UpdateTaskResponse updateTaskState(Long memberId, Long taskId, UpdateTask @Transactional @Override public UpdateTaskResponse updateTaskProcessor(Long taskId, Long userId, UpdateTaskProcessorRequest request) { - Member reviewer = memberService.findReviewer(userId); + memberService.findReviewer(userId); Member processor = memberService.findById(request.processorId()); - Task task = taskService.findById(taskId); task.updateProcessor(processor); - Task updateTask = commandTaskPort.save(task); - return TaskMapper.toUpdateTaskResponse(updateTask); + TaskHistory taskHistory = TaskHistory.createTaskHistory(TaskHistoryType.PROCESSOR_CHANGED, task, null, processor, null); + commandTaskHistoryPort.save(taskHistory); + return TaskMapper.toUpdateTaskResponse(commandTaskPort.save(task)); // TODO : 알림 생성 로직 및 푸시 알림 로직 추가 } @@ -93,13 +93,11 @@ public UpdateTaskResponse updateTaskProcessor(Long taskId, Long userId, UpdateTa @Transactional @Override public UpdateTaskResponse updateTaskLabel(Long taskId, Long userId, UpdateTaskLabelRequest request) { - Member reviewer = memberService.findReviewer(userId); + memberService.findReviewer(userId); Task task = taskService.findById(taskId); Label label = labelService.findById(request.labelId()); - task.updateLabel(label); - Task updatetask = commandTaskPort.save(task); - return TaskMapper.toUpdateTaskResponse(updatetask); + return TaskMapper.toUpdateTaskResponse(commandTaskPort.save(task)); } private void updateAttachments(List attachmentIdsToDelete, List files, Task task) {