diff --git a/src/main/java/com/dnd/moddo/event/application/query/QueryMemberExpenseService.java b/src/main/java/com/dnd/moddo/event/application/query/QueryMemberExpenseService.java index 9f3eea6..2c69456 100644 --- a/src/main/java/com/dnd/moddo/event/application/query/QueryMemberExpenseService.java +++ b/src/main/java/com/dnd/moddo/event/application/query/QueryMemberExpenseService.java @@ -45,9 +45,9 @@ public List findAllByExpenseId( public MembersExpenseResponse findMemberExpenseDetailsBySettlementId(Long settlementId, Long userId) { Settlement settlement = settlementReader.read(settlementId); - Map paymentRequestByMemberId = settlement.isWriter(userId) - ? paymentRequestReader.findLatestRequestByMemberId(settlementId) - : Map.of(); + boolean isManager = settlement.isWriter(userId); + Map paymentRequestByMemberId = + paymentRequestReader.findLatestRequestByMemberId(settlementId); List members = memberReader.findAllBySettlementId(settlementId); @@ -67,7 +67,8 @@ public MembersExpenseResponse findMemberExpenseDetailsBySettlementId(Long settle key -> findMemberExpenseDetailByAppointmentMember(appointmentMemberById.get(key), memberExpenses.get(key), expenses, - paymentRequestByMemberId) + paymentRequestByMemberId, + isManager) ) .filter(Objects::nonNull) .toList(); @@ -85,18 +86,18 @@ private Map convertAppointmentMembersToMap(List members) { private MemberExpenseItemResponse findMemberExpenseDetailByAppointmentMember( Member member, List memberExpenses, List expenses, - Map paymentRequestByMemberId) { + Map paymentRequestByMemberId, boolean isManager) { PaymentRequestSummaryResponse paymentRequest = paymentRequestByMemberId.get(member.getId()); if (memberExpenses == null) { - return MemberExpenseItemResponse.of(member, 0L, new ArrayList<>(), paymentRequest); + return MemberExpenseItemResponse.of(member, 0L, new ArrayList<>(), paymentRequest, isManager); } List memberExpenseDetails = mapToMemberExpenseDetails(memberExpenses, expenses); Long totalAmount = calculateTotalAmount(memberExpenses); - return MemberExpenseItemResponse.of(member, totalAmount, memberExpenseDetails, paymentRequest); + return MemberExpenseItemResponse.of(member, totalAmount, memberExpenseDetails, paymentRequest, isManager); } private Long calculateTotalAmount(List memberExpenses) { diff --git a/src/main/java/com/dnd/moddo/event/presentation/response/MemberExpenseItemResponse.java b/src/main/java/com/dnd/moddo/event/presentation/response/MemberExpenseItemResponse.java index 8903de4..d544372 100644 --- a/src/main/java/com/dnd/moddo/event/presentation/response/MemberExpenseItemResponse.java +++ b/src/main/java/com/dnd/moddo/event/presentation/response/MemberExpenseItemResponse.java @@ -24,7 +24,7 @@ public record MemberExpenseItemResponse( List expenses ) { public static MemberExpenseItemResponse of(Member member, Long totalAmount, - List expenses, PaymentRequestSummaryResponse paymentRequest) { + List expenses, PaymentRequestSummaryResponse paymentRequest, boolean isManager) { return MemberExpenseItemResponse.builder() .id(member.getId()) .role(member.getRole()) @@ -33,7 +33,7 @@ public static MemberExpenseItemResponse of(Member member, Long totalAmount, .profile(member.getProfileUrl()) .isPaid(member.isPaid()) .paidAt(member.getPaidAt()) - .paymentRequestId(paymentRequest == null ? null : paymentRequest.id()) + .paymentRequestId(paymentRequest == null || !isManager ? null : paymentRequest.id()) .paymentRequestStatus(paymentRequest == null ? null : paymentRequest.status()) .paymentRequestStatusLabel(paymentRequest == null ? null : paymentRequest.statusLabel()) .expenses(expenses).build(); diff --git a/src/test/java/com/dnd/moddo/domain/memberExpense/service/QueryMemberExpenseServiceTest.java b/src/test/java/com/dnd/moddo/domain/memberExpense/service/QueryMemberExpenseServiceTest.java index b391556..7958e32 100644 --- a/src/test/java/com/dnd/moddo/domain/memberExpense/service/QueryMemberExpenseServiceTest.java +++ b/src/test/java/com/dnd/moddo/domain/memberExpense/service/QueryMemberExpenseServiceTest.java @@ -166,6 +166,8 @@ void findMemberExpenseDetailsBySettlementId_Success_WhenNotManager() { when(member.getId()).thenReturn(1L); when(settlementReader.read(groupId)).thenReturn(mockSettlement); + when(paymentRequestReader.findLatestRequestByMemberId(groupId)) + .thenReturn(Map.of(1L, new PaymentRequestSummaryResponse(100L, PaymentRequestStatus.PENDING, "확인중"))); when(memberReader.findAllBySettlementId(eq(groupId))).thenReturn(List.of(member)); when(memberExpenseReader.findAllByAppointMemberIds(List.of(1L))).thenReturn(List.of()); when(expenseReader.findAllBySettlementId(groupId)).thenReturn(List.of()); @@ -178,11 +180,11 @@ void findMemberExpenseDetailsBySettlementId_Success_WhenNotManager() { assertThat(response).isNotNull(); assertThat(response.memberExpenses()).hasSize(1); assertThat(response.memberExpenses().get(0).paymentRequestId()).isNull(); - assertThat(response.memberExpenses().get(0).paymentRequestStatus()).isNull(); - assertThat(response.memberExpenses().get(0).paymentRequestStatusLabel()).isNull(); + assertThat(response.memberExpenses().get(0).paymentRequestStatus()).isEqualTo(PaymentRequestStatus.PENDING); + assertThat(response.memberExpenses().get(0).paymentRequestStatusLabel()).isEqualTo("확인중"); verify(settlementReader, times(1)).read(groupId); - verify(paymentRequestReader, never()).findLatestRequestByMemberId(anyLong()); + verify(paymentRequestReader, times(1)).findLatestRequestByMemberId(groupId); verify(memberReader, times(1)).findAllBySettlementId(groupId); }