Skip to content

Commit f48faa3

Browse files
authored
Merge pull request #596 from TaskFlow-CLAP/CLAP-441
Clap-451 member에 대해 command가 일어나는 서비스 일 때, department를 fetch하도록 수정
2 parents 54b652c + 1665be3 commit f48faa3

22 files changed

+68
-59
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,9 @@ public List<Task> findTasksByMemberIdAndStatus(final Long memberId, final List<T
125125
.collect(Collectors.toList());
126126
}
127127

128+
@Override
129+
public Optional<Task> findTaskWithProcessorDepartment(Long taskId) {
130+
return taskRepository.findTaskWithProcessorDepartment(taskId).map(taskPersistenceMapper::toDomain);
131+
}
132+
128133
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ public List<TaskEntity> findTeamStatus(Long memberId, FilterTeamStatusRequest fi
5555
BooleanBuilder builder = createFilterBuilder(memberId, filter);
5656
return queryFactory
5757
.selectFrom(taskEntity)
58+
.leftJoin(taskEntity.requester)
59+
.leftJoin(taskEntity.requester.department).fetchJoin()
60+
.leftJoin(taskEntity.processor)
61+
.leftJoin(taskEntity.processor.department).fetchJoin()
5862
.where(builder)
5963
.fetch();
6064
}

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,10 @@ Optional<TaskEntity> findTopByProcessor_MemberIdAndTaskStatusAndProcessorOrderAf
3939

4040
Optional<TaskEntity> findTopByProcessor_MemberIdAndTaskStatusAndTaskIdGreaterThanOrderByTaskIdAsc(Long processorId, TaskStatus status, Long taskId);
4141

42-
43-
}
42+
@Query("SELECT t FROM TaskEntity t " +
43+
"LEFT JOIN FETCH t.requester rq " +
44+
"LEFT JOIN FETCH t.processor p " +
45+
"LEFT JOIN FETCH p.department " +
46+
"WHERE t.taskId = :taskId")
47+
Optional<TaskEntity> findTaskWithProcessorDepartment(@Param("taskId") Long taskId);
48+
}

src/main/java/clap/server/application/port/inbound/domain/MemberService.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import clap.server.application.port.outbound.member.LoadMemberPort;
44
import clap.server.domain.model.member.Member;
5-
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
65
import clap.server.exception.ApplicationException;
76
import clap.server.exception.code.MemberErrorCode;
87
import lombok.RequiredArgsConstructor;
@@ -44,4 +43,14 @@ public List<Member> findReviewers() {
4443
return loadMemberPort.findReviewers();
4544
}
4645

46+
public Member findActiveMemberWithDepartment(Long memberId) {
47+
return loadMemberPort.findActiveMemberByIdWithFetchDepartment(memberId).orElseThrow(
48+
() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));
49+
}
50+
51+
public Member findMemberWithDepartment(Long memberId) {
52+
return loadMemberPort.findByIdWithFetchDepartment(memberId).orElseThrow(
53+
() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));
54+
}
55+
4756
}

src/main/java/clap/server/application/port/inbound/domain/TaskService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,8 @@ public Task upsert(Task task) {
2828
public Task findByIdAndStatus(Long taskId, TaskStatus status) {
2929
return loadTaskPort.findByIdAndStatus(taskId, status).orElseThrow(() -> new ApplicationException(TaskErrorCode.TASK_NOT_FOUND));
3030
}
31+
32+
public Task findTaskWithProcessorDepartment(Long taskId){
33+
return loadTaskPort.findTaskWithProcessorDepartment(taskId).orElseThrow(()-> new ApplicationException(TaskErrorCode.TASK_NOT_FOUND));
34+
}
3135
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import clap.server.adapter.inbound.web.dto.task.request.FilterTaskBoardRequest;
44
import clap.server.adapter.inbound.web.dto.task.request.FilterTaskListRequest;
55
import clap.server.adapter.inbound.web.dto.task.request.FilterTeamStatusRequest;
6-
import clap.server.adapter.inbound.web.dto.task.response.TeamTaskResponse;
7-
import clap.server.adapter.outbound.persistense.entity.task.TaskEntity;
86
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
97
import clap.server.domain.model.task.Task;
108
import org.springframework.data.domain.Page;
@@ -42,4 +40,6 @@ public interface LoadTaskPort {
4240
List<Task> findTeamStatus(Long memberId, FilterTeamStatusRequest filter);
4341

4442
List<Task> findTasksByMemberIdAndStatus(Long memberId, List<TaskStatus> taskStatuses);
43+
44+
Optional<Task> findTaskWithProcessorDepartment(Long taskId);
4545
}

src/main/java/clap/server/application/service/admin/DeleteMemberService.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,25 @@
22

33
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
44
import clap.server.application.port.inbound.admin.DeleteMemberUsecase;
5+
import clap.server.application.port.inbound.domain.MemberService;
56
import clap.server.application.port.outbound.member.CommandMemberPort;
6-
import clap.server.application.port.outbound.member.LoadMemberPort;
77
import clap.server.common.annotation.architecture.ApplicationService;
88
import clap.server.domain.model.member.Member;
99
import clap.server.domain.policy.member.ManagerInfoUpdatePolicy;
10-
import clap.server.exception.ApplicationException;
11-
import clap.server.exception.code.MemberErrorCode;
1210
import lombok.RequiredArgsConstructor;
1311
import org.springframework.transaction.annotation.Transactional;
1412

1513
@ApplicationService
1614
@RequiredArgsConstructor
1715
public class DeleteMemberService implements DeleteMemberUsecase {
18-
private final LoadMemberPort loadMemberPort;
16+
private final MemberService memberService;
1917
private final CommandMemberPort commandMemberPort;
2018
private final ManagerInfoUpdatePolicy managerInfoUpdatePolicy;
2119

2220
@Transactional
2321
@Override
2422
public void deleteMember(Long memberId) {
25-
Member member = loadMemberPort.findById(memberId)
26-
.orElseThrow(() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));
23+
Member member = memberService.findMemberWithDepartment(memberId);
2724

2825
if (member.getMemberInfo().getRole() == MemberRole.ROLE_MANAGER) {
2926
managerInfoUpdatePolicy.validateNoRemainingTasks(member);

src/main/java/clap/server/application/service/admin/ManageMemberService.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,30 @@
66
import clap.server.application.mapper.response.MemberResponseMapper;
77
import clap.server.application.port.inbound.admin.MemberDetailUsecase;
88
import clap.server.application.port.inbound.admin.UpdateMemberUsecase;
9+
import clap.server.application.port.inbound.domain.MemberService;
910
import clap.server.application.port.outbound.member.CommandMemberPort;
1011
import clap.server.application.port.outbound.member.LoadDepartmentPort;
11-
import clap.server.application.port.outbound.member.LoadMemberPort;
1212
import clap.server.common.annotation.architecture.ApplicationService;
1313
import clap.server.domain.model.member.Department;
1414
import clap.server.domain.model.member.Member;
1515
import clap.server.domain.policy.member.ManagerInfoUpdatePolicy;
1616
import clap.server.exception.ApplicationException;
1717
import clap.server.exception.code.DepartmentErrorCode;
18-
import clap.server.exception.code.MemberErrorCode;
1918
import lombok.RequiredArgsConstructor;
2019
import org.springframework.transaction.annotation.Transactional;
2120

2221
@ApplicationService
2322
@RequiredArgsConstructor
2423
class ManageMemberService implements UpdateMemberUsecase, MemberDetailUsecase {
25-
private final LoadMemberPort loadMemberPort;
24+
private final MemberService memberService;
2625
private final CommandMemberPort commandMemberPort;
2726
private final LoadDepartmentPort loadDepartmentPort;
2827
private final ManagerInfoUpdatePolicy managerInfoUpdatePolicy;
2928

3029
@Override
3130
@Transactional
3231
public void updateMemberInfo(Long adminId, Long memberId, UpdateMemberRequest request) {
33-
Member member = loadMemberPort.findByIdWithFetchDepartment(memberId).orElseThrow(
34-
() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));
32+
Member member = memberService.findMemberWithDepartment(memberId);
3533
Department department = loadDepartmentPort.findById(request.departmentId()).orElseThrow(() ->
3634
new ApplicationException(DepartmentErrorCode.DEPARTMENT_NOT_FOUND));
3735
managerInfoUpdatePolicy.validateDepartment(department, request.role());
@@ -48,8 +46,7 @@ public void updateMemberInfo(Long adminId, Long memberId, UpdateMemberRequest re
4846
@Override
4947
@Transactional(readOnly = true)
5048
public MemberDetailsResponse getMemberDetail(Long memberId) {
51-
Member member = loadMemberPort.findByIdWithFetchDepartment(memberId).orElseThrow(
52-
() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));;
49+
Member member = memberService.findMemberWithDepartment(memberId);
5350
return MemberResponseMapper.toMemberDetailsResponse(member);
5451
}
5552
}

src/main/java/clap/server/application/service/admin/SendInvitationService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
import clap.server.adapter.inbound.web.dto.admin.request.SendInvitationRequest;
44
import clap.server.application.port.inbound.admin.SendInvitationUsecase;
5+
import clap.server.application.port.inbound.domain.MemberService;
56
import clap.server.application.port.outbound.member.CommandMemberPort;
67
import clap.server.application.port.outbound.member.LoadMemberPort;
78
import clap.server.common.annotation.architecture.ApplicationService;
89
import clap.server.common.utils.InitialPasswordGenerator;
910
import clap.server.domain.model.member.Member;
10-
import clap.server.exception.ApplicationException;
11-
import clap.server.exception.code.MemberErrorCode;
1211
import lombok.RequiredArgsConstructor;
1312
import org.springframework.security.crypto.password.PasswordEncoder;
1413
import org.springframework.transaction.annotation.Transactional;
@@ -17,6 +16,7 @@
1716
@RequiredArgsConstructor
1817
public class SendInvitationService implements SendInvitationUsecase {
1918
private final LoadMemberPort loadMemberPort;
19+
private final MemberService memberService;
2020
private final CommandMemberPort commandMemberPort;
2121
private final SendInvitationEmailService sendInvitationEmailService;
2222
private final InitialPasswordGenerator passwordGenerator;
@@ -25,8 +25,7 @@ public class SendInvitationService implements SendInvitationUsecase {
2525
@Override
2626
@Transactional
2727
public void sendInvitation(SendInvitationRequest request) {
28-
Member member = loadMemberPort.findById(request.memberId())
29-
.orElseThrow(() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));
28+
Member member = memberService.findMemberWithDepartment(request.memberId());
3029

3130
String initialPassword = passwordGenerator.generateRandomPassword();
3231
String encodedPassword = passwordEncoder.encode(initialPassword);
@@ -37,7 +36,6 @@ public void sendInvitation(SendInvitationRequest request) {
3736

3837
commandMemberPort.save(member);
3938

40-
4139
sendInvitationEmailService.sendInvitationEmail(
4240
member.getMemberInfo().getEmail(),
4341
member.getMemberInfo().getName(),

src/main/java/clap/server/application/service/history/CommandCommentService.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,19 @@
22

33
import clap.server.adapter.inbound.web.dto.history.request.EditCommentRequest;
44
import clap.server.application.port.inbound.domain.CommentService;
5+
import clap.server.application.port.inbound.domain.MemberService;
56
import clap.server.application.port.inbound.history.DeleteCommentUsecase;
67
import clap.server.application.port.inbound.history.EditCommentUsecase;
7-
import clap.server.application.port.inbound.domain.MemberService;
8-
import clap.server.application.port.outbound.task.CommandAttachmentPort;
98
import clap.server.application.port.outbound.task.CommandCommentPort;
10-
import clap.server.application.port.outbound.task.LoadAttachmentPort;
11-
import clap.server.application.port.outbound.task.LoadCommentPort;
12-
import clap.server.application.port.outbound.taskhistory.CommandTaskHistoryPort;
139
import clap.server.common.annotation.architecture.ApplicationService;
1410
import clap.server.domain.model.member.Member;
15-
import clap.server.domain.model.task.Attachment;
1611
import clap.server.domain.model.task.Comment;
1712
import clap.server.exception.ApplicationException;
18-
import clap.server.exception.DomainException;
1913
import clap.server.exception.code.CommentErrorCode;
20-
import clap.server.exception.code.MemberErrorCode;
21-
import clap.server.exception.code.TaskErrorCode;
2214
import lombok.RequiredArgsConstructor;
2315
import lombok.extern.slf4j.Slf4j;
2416
import org.springframework.transaction.annotation.Transactional;
2517

26-
import java.util.Objects;
27-
2818
@ApplicationService
2919
@RequiredArgsConstructor
3020
@Slf4j

0 commit comments

Comments
 (0)