Skip to content

Commit b492c46

Browse files
committed
CLAP-69 Feat: 내 작업 조회 API 구현
1 parent be5c7fd commit b492c46

File tree

9 files changed

+66
-37
lines changed

9 files changed

+66
-37
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package clap.server.adapter.inbound.web.dto.task;
2+
3+
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
4+
5+
import java.time.LocalDateTime;
6+
7+
public record FilterAssignedTaskListResponse(
8+
Long taskId,
9+
String taskCode,
10+
LocalDateTime requestedAt,
11+
String mainCategoryName,
12+
String categoryName,
13+
String title,
14+
String requesterName,
15+
TaskStatus taskStatus,
16+
LocalDateTime finishedAt
17+
) {}
18+
19+

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package clap.server.adapter.outbound.persistense;
22

3-
import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse;
4-
import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest;
5-
import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse;
6-
import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse;
3+
import clap.server.adapter.inbound.web.dto.task.*;
74
import clap.server.adapter.outbound.persistense.entity.task.TaskEntity;
85
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
96
import clap.server.adapter.outbound.persistense.mapper.TaskPersistenceMapper;
@@ -50,6 +47,13 @@ public Page<FilterRequestedTasksResponse> findTasksRequestedByUser(Long requeste
5047
return taskList.map(TaskMapper::toFilterRequestedTasksResponse);
5148
}
5249

50+
@Override
51+
public Page<FilterAssignedTaskListResponse> findTasksAssignedByManager(Long processorId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
52+
Page<Task> taskList = taskRepository.findTasksAssignedByManager(processorId, pageable, filterTaskListRequest)
53+
.map(taskPersistenceMapper::toDomain);
54+
return taskList.map(TaskMapper::toFilterAssignedTaskListResponse);
55+
}
56+
5357
@Override
5458
public Page<FilterPendingApprovalResponse> findPendingApprovalTasks(Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
5559
Page<Task> taskList = taskRepository.findPendingApprovalTasks(pageable, filterTaskListRequest)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ public interface TaskCustomRepository {
1010
Page<TaskEntity> findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest);
1111
Page<TaskEntity> findPendingApprovalTasks(Pageable pageable, FilterTaskListRequest findTaskListRequest);
1212
Page<TaskEntity> findAllTasks(Pageable pageable, FilterTaskListRequest findTaskListRequest);
13+
Page<TaskEntity> findTasksAssignedByManager(Long processorId, Pageable pageable, FilterTaskListRequest findTaskListRequest);
1314
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,17 @@ public Page<TaskEntity> findTasksRequestedByUser(Long requesterId, Pageable page
3636
return getTasksPage(pageable, whereClause, filterTaskListRequest.orderRequest().sortBy(), filterTaskListRequest.orderRequest().sortDirection());
3737
}
3838

39+
@Override
40+
public Page<TaskEntity> findTasksAssignedByManager(Long processorId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
41+
BooleanBuilder whereClause = createFilter(filterTaskListRequest);
42+
if (!filterTaskListRequest.nickName().isEmpty()) {
43+
whereClause.and(taskEntity.requester.nickname.eq(filterTaskListRequest.nickName()));
44+
}
45+
whereClause.and(taskEntity.processor.memberId.eq(processorId));
46+
47+
return getTasksPage(pageable, whereClause, filterTaskListRequest.orderRequest().sortBy(), filterTaskListRequest.orderRequest().sortDirection());
48+
}
49+
3950
@Override
4051
public Page<TaskEntity> findPendingApprovalTasks(Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
4152
BooleanBuilder whereClause = createFilter(filterTaskListRequest);

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package clap.server.application.Task;
22

3-
import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse;
4-
import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest;
5-
import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse;
3+
import clap.server.adapter.inbound.web.dto.task.*;
64

7-
import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse;
85
import clap.server.application.port.inbound.domain.MemberService;
96

107
import clap.server.application.port.inbound.task.FindTaskListUsecase;
@@ -35,6 +32,12 @@ public Page<FilterRequestedTasksResponse> findTasksRequestedByUser(Long requeste
3532
return loadTaskPort.findTasksRequestedByUser(requester.getMemberId(), pageable, findTaskListRequest);
3633
}
3734

35+
@Override
36+
public Page<FilterAssignedTaskListResponse> findTasksAssignedByManager(Long processorId, Pageable pageable, FilterTaskListRequest findTaskListRequest) {
37+
Member processor = memberService.findActiveMember(processorId);
38+
return loadTaskPort.findTasksAssignedByManager(processor.getMemberId(), pageable, findTaskListRequest);
39+
}
40+
3841
@Override
3942
public Page<FilterPendingApprovalResponse> findPendingApprovalTasks(Long managerId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
4043
memberService.findActiveMember(managerId);

src/main/java/clap/server/application/mapper/TaskMapper.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,19 @@ public static FilterRequestedTasksResponse toFilterRequestedTasksResponse(Task t
4242
task.getFinishedAt() != null ? task.getFinishedAt() : null
4343
);
4444
}
45-
45+
public static FilterAssignedTaskListResponse toFilterAssignedTaskListResponse(Task task) {
46+
return new FilterAssignedTaskListResponse(
47+
task.getTaskId(),
48+
task.getTaskCode(),
49+
task.getUpdatedAt(),
50+
task.getCategory().getMainCategory().getName(),
51+
task.getCategory().getName(),
52+
task.getTitle(),
53+
task.getRequester() != null ? task.getRequester().getMemberInfo().getNickname() : "",
54+
task.getTaskStatus(),
55+
task.getFinishedAt() != null ? task.getFinishedAt() : null
56+
);
57+
}
4658
public static FilterPendingApprovalResponse toFilterPendingApprovalTasksResponse(Task task) {
4759
return new FilterPendingApprovalResponse(
4860
task.getTaskId(),

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package clap.server.application.port.inbound.task;
22

3-
import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse;
4-
import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest;
5-
import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse;
6-
import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse;
3+
import clap.server.adapter.inbound.web.dto.task.*;
74
import org.springframework.data.domain.Page;
85
import org.springframework.data.domain.Pageable;
96

107
public interface FindTaskListUsecase {
118
Page<FilterRequestedTasksResponse> findTasksRequestedByUser(Long memberId, Pageable pageable, FilterTaskListRequest findTaskListRequest);
129

10+
Page<FilterAssignedTaskListResponse> findTasksAssignedByManager(Long memberId, Pageable pageable, FilterTaskListRequest findTaskListRequest);
11+
1312
Page<FilterPendingApprovalResponse> findPendingApprovalTasks(Long userId, Pageable pageable, FilterTaskListRequest filterTaskListRequest);
1413

1514
Page<FilterAllTasksResponse> findAllTasks(Long userId, Pageable pageable, FilterTaskListRequest filterTaskListRequest);

src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package clap.server.application.port.outbound.task;
22

3-
import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse;
4-
import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest;
5-
import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse;
6-
import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse;
3+
import clap.server.adapter.inbound.web.dto.task.*;
74
import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse;
85
import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest;
96
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
@@ -24,6 +21,8 @@ public interface LoadTaskPort {
2421

2522
Page<FilterRequestedTasksResponse> findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest);
2623

24+
Page<FilterAssignedTaskListResponse> findTasksAssignedByManager(Long processorId, Pageable pageable, FilterTaskListRequest filterTaskListRequest);
25+
2726
Page<FilterPendingApprovalResponse> findPendingApprovalTasks(Pageable pageable, FilterTaskListRequest filterTaskListRequest);
2827

2928
Page<FilterAllTasksResponse> findAllTasks(Pageable pageable, FilterTaskListRequest findTaskListRequest);

src/test/resources/application.yml

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,6 @@ spring:
1414
hibernate:
1515
ddl-auto: create
1616

17-
mail:
18-
host: smtp.gmail.com
19-
port: 587
20-
username: leegd120@gmail.com
21-
password: znlictzarqurxlla
22-
properties:
23-
mail:
24-
smtp:
25-
auth: true
26-
starttls:
27-
enable: true
28-
2917
testcontainers:
3018
beans:
3119
startup: parallel
@@ -36,7 +24,7 @@ server:
3624

3725
web:
3826
domain:
39-
local: 127.0.0.1:3O00
27+
local: 127.0.0.1:3000
4028
service: 127.0.0.1:3000
4129

4230
swagger:
@@ -58,11 +46,4 @@ password:
5846
length: 12
5947
characters: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+
6048

61-
kakaowork:
62-
url: https://api.kakaowork.com/v1/messages.send_by_email
63-
auth: Bearer 1b01becc.a7f10da76d2e4038948771107cfe5c1d
64-
65-
agit:
66-
url: https://agit.io/webhook/a342181d-fb18-4eb0-a99a-30f4fb5b14b1
67-
6849

0 commit comments

Comments
 (0)