From 76757b4e740e443e848d4a48e0ca8b19a2172011 Mon Sep 17 00:00:00 2001 From: KAispread Date: Fri, 29 Sep 2023 01:08:11 +0900 Subject: [PATCH] fix(meeting): fix credits being consumed incorrectly when accept meeting request --- .../meeting/MeetingHandleServiceImpl.java | 24 ++++++------------- .../meeting/MeetingHandleServiceImplTest.java | 2 +- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/e2i/wemeet/service/meeting/MeetingHandleServiceImpl.java b/src/main/java/com/e2i/wemeet/service/meeting/MeetingHandleServiceImpl.java index abd8e681..6bdb6c3c 100644 --- a/src/main/java/com/e2i/wemeet/service/meeting/MeetingHandleServiceImpl.java +++ b/src/main/java/com/e2i/wemeet/service/meeting/MeetingHandleServiceImpl.java @@ -15,6 +15,7 @@ import static com.e2i.wemeet.service.sns.SnsMessageFormat.getMeetingRequestMessage; import static com.e2i.wemeet.util.validator.CustomExpirationValidator.isExpiredOfDays; +import com.e2i.wemeet.domain.cost.Spent; import com.e2i.wemeet.domain.meeting.Meeting; import com.e2i.wemeet.domain.meeting.MeetingRepository; import com.e2i.wemeet.domain.meeting.MeetingRequest; @@ -65,7 +66,7 @@ public Long sendRequest(final SendMeetingRequestDto requestDto, final Long membe MeetingRequest request = meetingRequestRepository.save(meetingRequest); // 이벤트 발행 - publishMeetingEvent(getMeetingRequestMessage(), memberLeaderId, partnerTeam); + publishMeetingEvent(getMeetingRequestMessage(), memberLeaderId, partnerTeam, MEETING_REQUEST); return request.getMeetingRequestId(); } @@ -87,7 +88,8 @@ public Long sendRequestWithMessage(final SendMeetingWithMessageRequestDto reques MeetingRequest request = meetingRequestRepository.save(meetingRequest); // 이벤트 발행 - publishMeetingWithMessageEvent(getMeetingRequestMessage(), memberLeaderId, partnerTeam); + publishMeetingEvent(getMeetingRequestMessage(), memberLeaderId, partnerTeam, + MEETING_REQUEST_WITH_MESSAGE); return request.getMeetingRequestId(); } @@ -108,7 +110,7 @@ public Long acceptRequest(final Long memberLeaderId, final Long meetingRequestId // 미팅 성사 이벤트 발행 Team myTeam = meetingRequest.getTeam(); String leaderNickname = meetingRequest.getPartnerTeam().getTeamLeader().getNickname(); - publishMeetingEvent(getMeetingAcceptMessage(leaderNickname), memberLeaderId, myTeam); + publishMeetingEvent(getMeetingAcceptMessage(leaderNickname), memberLeaderId, myTeam, MEETING_ACCEPT); return saveMeeting(meetingRequest).getMeetingId(); } @@ -176,26 +178,14 @@ private void validateHasAuthorizationToChangeStatus(Long memberLeaderId, // 미팅 이벤트 발행 private void publishMeetingEvent(final String message, final Long memberLeaderId, - final Team targetTeam) { + final Team targetTeam, final Spent spent) { String leaderPhoneNumber = meetingRepository.findLeaderPhoneNumberById( targetTeam.getTeamId()); eventPublisher.publishEvent( - MeetingEvent.of(leaderPhoneNumber, message, MEETING_REQUEST, memberLeaderId) + MeetingEvent.of(leaderPhoneNumber, message, spent, memberLeaderId) ); } - // 미팅 이벤트 발행 - private void publishMeetingWithMessageEvent(final String message, final Long memberLeaderId, - final Team targetTeam) { - String leaderPhoneNumber = meetingRepository.findLeaderPhoneNumberById( - targetTeam.getTeamId()); - eventPublisher.publishEvent( - MeetingEvent.of(leaderPhoneNumber, message, MEETING_REQUEST_WITH_MESSAGE, - memberLeaderId) - ); - } - - // 중복된 미팅 요청인지 검증 private void checkDuplicateMeetingRequest(Team team, Team partnerTeam, LocalDateTime meetingRequestTime) { diff --git a/src/test/java/com/e2i/wemeet/service/meeting/MeetingHandleServiceImplTest.java b/src/test/java/com/e2i/wemeet/service/meeting/MeetingHandleServiceImplTest.java index 02e95f8b..4302d797 100644 --- a/src/test/java/com/e2i/wemeet/service/meeting/MeetingHandleServiceImplTest.java +++ b/src/test/java/com/e2i/wemeet/service/meeting/MeetingHandleServiceImplTest.java @@ -459,7 +459,7 @@ void handleRequestToAccept() { .extracting("team", "partnerTeam", "isOver") .contains(kaiTeam, rimTeam, false)); - assertThat(rim.getCredit()).isLessThan(rimCredit); + assertThat(rim.getCredit()).isEqualTo(rimCredit - 5); } @DisplayName("받았던 미팅 신청을 여러번 수락할 수 없다.")