Skip to content

Commit 98e216c

Browse files
authored
Merge branch 'develop' into CLAP-155
2 parents fe9eb4d + 250507d commit 98e216c

19 files changed

+308
-16
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package clap.server.adapter.inbound.web.dto.task.response;
2+
3+
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskHistoryType;
4+
5+
import java.time.LocalDate;
6+
import java.time.LocalTime;
7+
import java.util.List;
8+
9+
public record FindTaskHistoryResponse(
10+
List<TaskHistoryResponse> histories
11+
) {
12+
public static record TaskHistoryResponse(
13+
Long historyId,
14+
LocalDate date,
15+
LocalTime time,
16+
TaskHistoryType taskHistoryType,
17+
Details details
18+
) {}
19+
20+
public static record Details(
21+
TaskDetails taskDetails,
22+
CommentDetails commentDetails,
23+
CommentFileDetails commentFileDetails
24+
) {}
25+
26+
public static record TaskDetails(
27+
String newValue
28+
) {}
29+
30+
public static record CommentDetails(
31+
String nickName,
32+
String profileImageUrl,
33+
boolean isModified,
34+
String comment
35+
) {}
36+
37+
public static record CommentFileDetails(
38+
String nickName,
39+
String profileImageUrl,
40+
boolean isModified,
41+
String fileName,
42+
String url,
43+
String size
44+
) {}
45+
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,25 @@
55
import clap.server.application.port.inbound.task.ApprovalTaskUsecase;
66
import clap.server.common.annotation.architecture.WebAdapter;
77
import io.swagger.v3.oas.annotations.Operation;
8+
import io.swagger.v3.oas.annotations.tags.Tag;
89
import lombok.RequiredArgsConstructor;
910
import org.springframework.http.ResponseEntity;
1011
import org.springframework.security.access.annotation.Secured;
1112
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1213
import org.springframework.web.bind.annotation.*;
1314

15+
@Tag(name = "02. Task [조회]", description = "작업 조회 API")
1416
@WebAdapter
1517
@RestController
1618
@RequiredArgsConstructor
17-
@RequestMapping("/api/tasks/form")
19+
@RequestMapping("/api/tasks")
1820
public class FindApprovalTaskFormController {
1921

2022
private final ApprovalTaskUsecase approvalTaskUsecase;
2123

2224
@Operation(summary = "요청 승인 폼 조회")
2325
@Secured("ROLE_MANAGER")
24-
@GetMapping("/{taskId}")
26+
@GetMapping("/approval/{taskId}")
2527
public ResponseEntity<FindApprovalFormResponse> findTaskForm(
2628
@PathVariable Long taskId,
2729
@AuthenticationPrincipal SecurityUserDetails userInfo){

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1818
import org.springframework.web.bind.annotation.*;
1919

20-
@Tag(name = "작업 조회")
20+
@Tag(name = "02. Task [조회]", description = "작업 조회 API")
2121
@WebAdapter
2222
@RestController
2323
@RequiredArgsConstructor
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package clap.server.adapter.inbound.web.task;
2+
3+
import clap.server.adapter.inbound.security.SecurityUserDetails;
4+
import clap.server.adapter.inbound.web.dto.task.FindTaskDetailsForManagerResponse;
5+
import clap.server.adapter.inbound.web.dto.task.response.FindTaskHistoryResponse;
6+
import clap.server.application.port.inbound.task.FindTaskHistoriesUsecase;
7+
import clap.server.common.annotation.architecture.WebAdapter;
8+
import io.swagger.v3.oas.annotations.Operation;
9+
import io.swagger.v3.oas.annotations.tags.Tag;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.http.ResponseEntity;
12+
import org.springframework.security.access.annotation.Secured;
13+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
14+
import org.springframework.web.bind.annotation.GetMapping;
15+
import org.springframework.web.bind.annotation.PathVariable;
16+
import org.springframework.web.bind.annotation.RequestMapping;
17+
import org.springframework.web.bind.annotation.RestController;
18+
19+
20+
@Tag(name = "02. Task [조회]", description = "작업 조회 API")
21+
@WebAdapter
22+
@RestController
23+
@RequiredArgsConstructor
24+
@RequestMapping("/api/tasks")
25+
public class FindTaskHistoryController {
26+
27+
private final FindTaskHistoriesUsecase findTaskHistoriesUsecase;
28+
29+
@Operation(summary = "작업 히스토리 조회")
30+
@Secured({"ROLE_MANAGER","ROLE_USER"})
31+
@GetMapping("/histories/{taskId}")
32+
public ResponseEntity<FindTaskHistoryResponse> findTaskHistories(
33+
@PathVariable Long taskId,
34+
@AuthenticationPrincipal SecurityUserDetails userInfo) {
35+
return ResponseEntity.ok(findTaskHistoriesUsecase.findTaskHistories(userInfo.getUserId(), taskId));
36+
}
37+
}

src/main/java/clap/server/adapter/outbound/persistense/AttachmentPersistenceAdapter.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,19 @@ public List<Attachment> findAllByTaskIdAndCommentIsNull(final Long taskId) {
4545
.collect(Collectors.toList());
4646
}
4747

48+
@Override
4849
public List<Attachment> findAllByTaskIdAndCommentIsNullAndAttachmentId(final Long taskId, final List<Long> attachmentIds) {
4950
List<AttachmentEntity> attachmentEntities = attachmentRepository.findAllByTask_TaskIdAndCommentIsNullAndIsDeletedIsFalseAndAttachmentIdIn(taskId, attachmentIds);
5051
return attachmentEntities.stream()
5152
.map(attachmentPersistenceMapper::toDomain)
5253
.collect(Collectors.toList());
5354
}
55+
56+
@Override
57+
public List<Attachment> findAllByTaskIdAndCommentIsNotNull(final Long taskId) {
58+
List<AttachmentEntity> attachmentEntities = attachmentRepository.findAllByTask_TaskIdAndCommentIsNotNullAndIsDeletedIsFalse(taskId);
59+
return attachmentEntities.stream()
60+
.map(attachmentPersistenceMapper::toDomain)
61+
.collect(Collectors.toList());
62+
}
5463
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package clap.server.adapter.outbound.persistense;
2+
3+
import clap.server.application.port.outbound.task.LoadCommentPort;
4+
import clap.server.domain.model.task.Comment;
5+
6+
import java.util.Optional;
7+
8+
public class CommentPersistenceAdapter implements LoadCommentPort {
9+
@Override
10+
public Optional<Comment> findById(Long id) {
11+
return Optional.empty();
12+
}
13+
}
Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,29 @@
11
package clap.server.adapter.outbound.persistense;
22

33

4+
import clap.server.adapter.outbound.persistense.entity.task.TaskHistoryEntity;
5+
import clap.server.adapter.outbound.persistense.mapper.TaskHistoryPersistenceMapper;
6+
import clap.server.adapter.outbound.persistense.repository.task.TaskHistoryRepository;
47
import clap.server.application.port.outbound.task.LoadTaskHistoryPort;
58
import clap.server.common.annotation.architecture.PersistenceAdapter;
69

10+
import clap.server.domain.model.task.TaskHistory;
711
import lombok.RequiredArgsConstructor;
812

9-
10-
11-
13+
import java.util.List;
1214

1315

1416
@PersistenceAdapter
1517
@RequiredArgsConstructor
1618
public class TaskHistoryPersistenceAdapter implements LoadTaskHistoryPort {
17-
19+
private final TaskHistoryRepository taskHistoryRepository;
20+
private final TaskHistoryPersistenceMapper taskHistoryPersistenceMapper;
21+
22+
@Override
23+
public List<TaskHistory> findAllTaskHistoriesByTaskId(Long taskId) {
24+
return taskHistoryRepository.findAllTaskHistoriesByTaskId(taskId)
25+
.stream()
26+
.map(taskHistoryPersistenceMapper::toDomain)
27+
.toList();
28+
}
1829
}

src/main/java/clap/server/adapter/outbound/persistense/entity/task/CommentEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class CommentEntity extends BaseTimeEntity {
2727
@JoinColumn(name = "task_id", nullable = false)
2828
private TaskEntity task;
2929

30-
@Column(name = "content", nullable = false) //nullable false인 이유
30+
@Column(name = "content")
3131
private String content;
3232

3333
@Column(name = "is_modified", nullable = false)

src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ public class TaskModificationInfo {
1818
private TaskEntity task;
1919

2020
@Column(name = "modified_field")
21-
private String modifiedField; //처리자(requestor) / 요청상태(taskStatus) -> task 상태 변경 혹은 처리 변경시에 taskhistory 테이블도 변경해야함
21+
private String modifiedField; //TODO: 속성 필요성 검토
2222

2323
@ManyToOne(fetch = FetchType.LAZY)
24-
@JoinColumn(name = "modified_member_id") //처리자가 바뀌는 경우
24+
@JoinColumn(name = "modified_member_id")
2525
private MemberEntity modifiedMember;
2626

2727
@Column(name = "new_value")
28-
private String newValue; //상태가 바뀌는 경우
28+
private String newValue; //TODO: 속성 필요성 검토
2929
}

src/main/java/clap/server/adapter/outbound/persistense/repository/task/AttachmentRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99
public interface AttachmentRepository extends JpaRepository<AttachmentEntity, Long> {
1010
List<AttachmentEntity> findAllByTask_TaskIdAndCommentIsNullAndIsDeletedIsFalse(Long taskId);
1111
List<AttachmentEntity> findAllByTask_TaskIdAndCommentIsNullAndIsDeletedIsFalseAndAttachmentIdIn(Long task_taskId, List<Long> attachmentId);
12-
12+
List<AttachmentEntity> findAllByTask_TaskIdAndCommentIsNotNullAndIsDeletedIsFalse(Long taskId);
1313
}

0 commit comments

Comments
 (0)