From 2c74c8d42ea16270c71d2f0f8d0448ac78a77257 Mon Sep 17 00:00:00 2001 From: Arachneee Date: Thu, 8 Aug 2024 19:05:52 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=ED=9A=8C=EC=9B=90=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EB=B3=80=EA=B2=BD=20api=20=EC=97=AC=EB=9F=AC?= =?UTF-8?q?=EB=AA=85=EC=9C=BC=EB=A1=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/docs/asciidoc/event.adoc | 11 ++- .../haengdong/application/EventService.java | 53 +++++++++++-- .../request/MemberNameUpdateAppRequest.java | 7 ++ .../request/MemberNamesUpdateAppRequest.java | 8 ++ .../request/MemberUpdateAppRequest.java | 4 - .../exception/HaengdongErrorCode.java | 1 + .../presentation/EventController.java | 9 +-- .../request/MemberNameUpdateRequest.java | 18 +++++ .../request/MemberNamesUpdateRequest.java | 16 ++++ .../request/MemberUpdateRequest.java | 15 ---- .../application/EventServiceTest.java | 78 +++++++++++++++++-- .../docs/EventControllerDocsTest.java | 20 +++-- .../presentation/EventControllerTest.java | 13 +++- 13 files changed, 203 insertions(+), 50 deletions(-) create mode 100644 server/src/main/java/server/haengdong/application/request/MemberNameUpdateAppRequest.java create mode 100644 server/src/main/java/server/haengdong/application/request/MemberNamesUpdateAppRequest.java delete mode 100644 server/src/main/java/server/haengdong/application/request/MemberUpdateAppRequest.java create mode 100644 server/src/main/java/server/haengdong/presentation/request/MemberNameUpdateRequest.java create mode 100644 server/src/main/java/server/haengdong/presentation/request/MemberNamesUpdateRequest.java delete mode 100644 server/src/main/java/server/haengdong/presentation/request/MemberUpdateRequest.java diff --git a/server/src/docs/asciidoc/event.adoc b/server/src/docs/asciidoc/event.adoc index 013731e5..56b3fe04 100644 --- a/server/src/docs/asciidoc/event.adoc +++ b/server/src/docs/asciidoc/event.adoc @@ -106,6 +106,15 @@ operation::updateEventMemberName[snippets="path-parameters,http-request,request- [source,json,options="nowrap"] ---- [ + + { + "code":"MEMBER_NAME_CHANGE_DUPLICATE", + "message":"중복된 참여 인원 이름 변경 요청이 존재합니다." + }, + { + "code":"MEMBER_NOT_EXIST", + "message":"현재 참여하고 있지 않는 인원이 존재합니다." + }, { "code":"REQUEST_EMPTY", "message":"멤버 이름은 공백일 수 없습니다." @@ -128,7 +137,7 @@ operation::updateEventMemberName[snippets="path-parameters,http-request,request- }, { "code":"TOKEN_EXPIRED", - "message":"토큰이 존재하지 않습니다." + "message":"만료된 토큰입니다." }, { "code":"TOKEN_INVALID", diff --git a/server/src/main/java/server/haengdong/application/EventService.java b/server/src/main/java/server/haengdong/application/EventService.java index 3408a621..5f031f97 100644 --- a/server/src/main/java/server/haengdong/application/EventService.java +++ b/server/src/main/java/server/haengdong/application/EventService.java @@ -3,12 +3,14 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Set; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import server.haengdong.application.request.EventAppRequest; import server.haengdong.application.request.EventLoginAppRequest; -import server.haengdong.application.request.MemberUpdateAppRequest; +import server.haengdong.application.request.MemberNameUpdateAppRequest; +import server.haengdong.application.request.MemberNamesUpdateAppRequest; import server.haengdong.application.response.ActionAppResponse; import server.haengdong.application.response.EventAppResponse; import server.haengdong.application.response.EventDetailAppResponse; @@ -100,22 +102,57 @@ public MembersAppResponse findAllMembers(String token) { } @Transactional - public void updateMember(String token, String memberName, MemberUpdateAppRequest request) { + public void updateMember(String token, MemberNamesUpdateAppRequest request) { Event event = getEvent(token); - String updatedMemberName = request.name(); - validateMemberNameUnique(event, updatedMemberName); + List members = request.members(); - memberActionRepository.findAllByAction_EventAndMemberName(event, memberName) - .forEach(memberAction -> memberAction.updateMemberName(updatedMemberName)); + validateBeforeNames(members, event); + validateAfterNames(members, event); + + members.forEach(member -> updateMemberName(event, member.before(), member.after())); + } + + private void validateBeforeNames(List members, Event event) { + List beforeNames = members.stream() + .map(MemberNameUpdateAppRequest::before) + .toList(); + + if (beforeNames.size() != Set.copyOf(beforeNames).size()) { + throw new HaengdongException(HaengdongErrorCode.MEMBER_NAME_CHANGE_DUPLICATE); + } + + beforeNames.forEach(beforeName -> validateBeforeMemberNameExist(event, beforeName)); + } + + private void validateAfterNames(List members, Event event) { + List afterNames = members.stream() + .map(MemberNameUpdateAppRequest::after) + .toList(); + if (afterNames.size() != Set.copyOf(afterNames).size()) { + throw new HaengdongException(HaengdongErrorCode.MEMBER_NAME_CHANGE_DUPLICATE); + } + afterNames.forEach(afterName -> validateAfterMemberNameNotExist(event, afterName)); } - private void validateMemberNameUnique(Event event, String updatedMemberName) { - boolean isMemberNameExist = memberActionRepository.existsByAction_EventAndMemberName(event, updatedMemberName); + private void validateBeforeMemberNameExist(Event event, String beforeName) { + boolean isMemberNameExist = memberActionRepository.existsByAction_EventAndMemberName(event, beforeName); + if (!isMemberNameExist) { + throw new HaengdongException(HaengdongErrorCode.MEMBER_NOT_EXIST); + } + } + + private void validateAfterMemberNameNotExist(Event event, String afterName) { + boolean isMemberNameExist = memberActionRepository.existsByAction_EventAndMemberName(event, afterName); if (isMemberNameExist) { throw new HaengdongException(HaengdongErrorCode.MEMBER_NAME_DUPLICATE); } } + private void updateMemberName(Event event, String beforeName, String afterName) { + memberActionRepository.findAllByAction_EventAndMemberName(event, beforeName) + .forEach(memberAction -> memberAction.updateMemberName(afterName)); + } + public void validatePassword(EventLoginAppRequest request) throws HaengdongException { Event event = getEvent(request.token()); if (event.isSamePassword(request.password())) { diff --git a/server/src/main/java/server/haengdong/application/request/MemberNameUpdateAppRequest.java b/server/src/main/java/server/haengdong/application/request/MemberNameUpdateAppRequest.java new file mode 100644 index 00000000..d629d3a0 --- /dev/null +++ b/server/src/main/java/server/haengdong/application/request/MemberNameUpdateAppRequest.java @@ -0,0 +1,7 @@ +package server.haengdong.application.request; + +public record MemberNameUpdateAppRequest( + String before, + String after +) { +} diff --git a/server/src/main/java/server/haengdong/application/request/MemberNamesUpdateAppRequest.java b/server/src/main/java/server/haengdong/application/request/MemberNamesUpdateAppRequest.java new file mode 100644 index 00000000..cd0c0054 --- /dev/null +++ b/server/src/main/java/server/haengdong/application/request/MemberNamesUpdateAppRequest.java @@ -0,0 +1,8 @@ +package server.haengdong.application.request; + +import java.util.List; + +public record MemberNamesUpdateAppRequest( + List members +) { +} diff --git a/server/src/main/java/server/haengdong/application/request/MemberUpdateAppRequest.java b/server/src/main/java/server/haengdong/application/request/MemberUpdateAppRequest.java deleted file mode 100644 index cbef9dda..00000000 --- a/server/src/main/java/server/haengdong/application/request/MemberUpdateAppRequest.java +++ /dev/null @@ -1,4 +0,0 @@ -package server.haengdong.application.request; - -public record MemberUpdateAppRequest(String name) { -} diff --git a/server/src/main/java/server/haengdong/exception/HaengdongErrorCode.java b/server/src/main/java/server/haengdong/exception/HaengdongErrorCode.java index bd0866d0..8af8d31e 100644 --- a/server/src/main/java/server/haengdong/exception/HaengdongErrorCode.java +++ b/server/src/main/java/server/haengdong/exception/HaengdongErrorCode.java @@ -25,6 +25,7 @@ public enum HaengdongErrorCode { MEMBER_NAME_DUPLICATE("중복된 행사 참여 인원 이름이 존재합니다."), MEMBER_NOT_EXIST("현재 참여하고 있지 않는 인원이 존재합니다."), MEMBER_ALREADY_EXIST("현재 참여하고 있는 인원이 존재합니다."), + MEMBER_NAME_CHANGE_DUPLICATE("중복된 참여 인원 이름 변경 요청이 존재합니다."), MEMBER_ACTION_NOT_FOUND("존재하지 않는 멤버 액션입니다."), MEMBER_ACTION_STATUS_INVALID("멤버 액션은 IN, OUT만 가능합니다. 입력한 멤버 액션: %s"), diff --git a/server/src/main/java/server/haengdong/presentation/EventController.java b/server/src/main/java/server/haengdong/presentation/EventController.java index 2e16e6b0..d5a16b09 100644 --- a/server/src/main/java/server/haengdong/presentation/EventController.java +++ b/server/src/main/java/server/haengdong/presentation/EventController.java @@ -17,7 +17,7 @@ import server.haengdong.infrastructure.auth.CookieProperties; import server.haengdong.presentation.request.EventLoginRequest; import server.haengdong.presentation.request.EventSaveRequest; -import server.haengdong.presentation.request.MemberUpdateRequest; +import server.haengdong.presentation.request.MemberNamesUpdateRequest; import server.haengdong.presentation.response.EventDetailResponse; import server.haengdong.presentation.response.EventResponse; import server.haengdong.presentation.response.MembersResponse; @@ -65,13 +65,12 @@ public ResponseEntity findAllMembers(@PathVariable("eventId") S return ResponseEntity.ok(response); } - @PutMapping("/api/events/{eventId}/members/{memberName}") + @PutMapping("/api/events/{eventId}/members/nameChange") public ResponseEntity updateMember( @PathVariable("eventId") String token, - @PathVariable("memberName") String memberName, - @Valid @RequestBody MemberUpdateRequest request + @Valid @RequestBody MemberNamesUpdateRequest request ) { - eventService.updateMember(token, memberName, request.toAppRequest()); + eventService.updateMember(token, request.toAppRequest()); return ResponseEntity.ok().build(); } diff --git a/server/src/main/java/server/haengdong/presentation/request/MemberNameUpdateRequest.java b/server/src/main/java/server/haengdong/presentation/request/MemberNameUpdateRequest.java new file mode 100644 index 00000000..3cd2294c --- /dev/null +++ b/server/src/main/java/server/haengdong/presentation/request/MemberNameUpdateRequest.java @@ -0,0 +1,18 @@ +package server.haengdong.presentation.request; + +import jakarta.validation.constraints.NotBlank; +import server.haengdong.application.request.MemberNameUpdateAppRequest; + +public record MemberNameUpdateRequest( + + @NotBlank(message = "멤버 이름은 공백일 수 없습니다.") + String before, + + @NotBlank(message = "멤버 이름은 공백일 수 없습니다.") + String after +) { + + public MemberNameUpdateAppRequest toAppRequest() { + return new MemberNameUpdateAppRequest(before, after); + } +} diff --git a/server/src/main/java/server/haengdong/presentation/request/MemberNamesUpdateRequest.java b/server/src/main/java/server/haengdong/presentation/request/MemberNamesUpdateRequest.java new file mode 100644 index 00000000..c67e1b69 --- /dev/null +++ b/server/src/main/java/server/haengdong/presentation/request/MemberNamesUpdateRequest.java @@ -0,0 +1,16 @@ +package server.haengdong.presentation.request; + +import jakarta.validation.Valid; +import java.util.List; +import server.haengdong.application.request.MemberNamesUpdateAppRequest; + +public record MemberNamesUpdateRequest( + @Valid List members +) { + + public MemberNamesUpdateAppRequest toAppRequest() { + return new MemberNamesUpdateAppRequest(members.stream() + .map(MemberNameUpdateRequest::toAppRequest) + .toList()); + } +} diff --git a/server/src/main/java/server/haengdong/presentation/request/MemberUpdateRequest.java b/server/src/main/java/server/haengdong/presentation/request/MemberUpdateRequest.java deleted file mode 100644 index 41245775..00000000 --- a/server/src/main/java/server/haengdong/presentation/request/MemberUpdateRequest.java +++ /dev/null @@ -1,15 +0,0 @@ -package server.haengdong.presentation.request; - -import jakarta.validation.constraints.NotBlank; -import server.haengdong.application.request.MemberUpdateAppRequest; - -public record MemberUpdateRequest( - - @NotBlank(message = "멤버 이름은 공백일 수 없습니다.") - String name -) { - - public MemberUpdateAppRequest toAppRequest() { - return new MemberUpdateAppRequest(name); - } -} diff --git a/server/src/test/java/server/haengdong/application/EventServiceTest.java b/server/src/test/java/server/haengdong/application/EventServiceTest.java index f5694efa..407fa145 100644 --- a/server/src/test/java/server/haengdong/application/EventServiceTest.java +++ b/server/src/test/java/server/haengdong/application/EventServiceTest.java @@ -14,7 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.mock.mockito.MockBean; import server.haengdong.application.request.EventAppRequest; -import server.haengdong.application.request.MemberUpdateAppRequest; +import server.haengdong.application.request.MemberNameUpdateAppRequest; +import server.haengdong.application.request.MemberNamesUpdateAppRequest; import server.haengdong.application.response.ActionAppResponse; import server.haengdong.application.response.EventAppResponse; import server.haengdong.application.response.EventDetailAppResponse; @@ -119,7 +120,7 @@ void findAllMembersTest() { assertThat(membersAppResponse.memberNames()).containsExactlyInAnyOrder("토다리", "쿠키"); } - @DisplayName("행사 참여 인원의 이름을 변경한다.") + @DisplayName("행사 참여 인원들의 이름을 변경한다.") @Test void updateMember() { Event event = Fixture.EVENT1; @@ -134,13 +135,16 @@ void updateMember() { memberAction1, memberAction2, memberAction3, memberAction4, memberAction5, memberAction6 )); - eventService.updateMember(event.getToken(), "쿠키", new MemberUpdateAppRequest("쿡쿡")); + eventService.updateMember(event.getToken(), new MemberNamesUpdateAppRequest(List.of( + new MemberNameUpdateAppRequest("쿠키", "쿡쿡"), + new MemberNameUpdateAppRequest("토다리", "토쟁이") + ))); List foundMemberActions = memberActionRepository.findAllByEvent(event); assertThat(foundMemberActions) .extracting(MemberAction::getId, MemberAction::getMemberName) .contains( - tuple(memberAction1.getId(), "토다리"), + tuple(memberAction1.getId(), "토쟁이"), tuple(memberAction2.getId(), "쿡쿡"), tuple(memberAction3.getId(), "웨디"), tuple(memberAction4.getId(), "쿡쿡"), @@ -149,7 +153,7 @@ void updateMember() { ); } - @DisplayName("참여 인원 이름을 이미 존재하는 행사 참여 인원과 동일한 이름으로 변경할 수 없다.") + @DisplayName("이미 존재하는 인원의 이름으로 변경할 수 없다.") @Test void updateMember1() { Event event = Fixture.EVENT1; @@ -159,7 +163,69 @@ void updateMember1() { eventRepository.save(event); memberActionRepository.saveAll(List.of(memberAction1, memberAction2, memberAction3)); - assertThatThrownBy(() -> eventService.updateMember(event.getToken(), "쿠키", new MemberUpdateAppRequest("토다리"))) + MemberNamesUpdateAppRequest appRequest = new MemberNamesUpdateAppRequest(List.of( + new MemberNameUpdateAppRequest("쿠키", "쿡쿡"), + new MemberNameUpdateAppRequest("웨디", "토다리") + )); + + assertThatThrownBy(() -> eventService.updateMember(event.getToken(), appRequest)) + .isInstanceOf(HaengdongException.class); + } + + @DisplayName("존재하지 않는 인원은 변경할 수 없다.") + @Test + void updateMember2() { + Event event = Fixture.EVENT1; + MemberAction memberAction1 = new MemberAction(new Action(event, 1L), "토다리", IN, 1L); + MemberAction memberAction2 = new MemberAction(new Action(event, 2L), "쿠키", IN, 1L); + MemberAction memberAction3 = new MemberAction(new Action(event, 3L), "웨디", IN, 2L); + eventRepository.save(event); + memberActionRepository.saveAll(List.of(memberAction1, memberAction2, memberAction3)); + + MemberNamesUpdateAppRequest appRequest = new MemberNamesUpdateAppRequest(List.of( + new MemberNameUpdateAppRequest("쿡쿡", "토쟁이"), + new MemberNameUpdateAppRequest("웨디", "말복") + )); + + assertThatThrownBy(() -> eventService.updateMember(event.getToken(), appRequest)) + .isInstanceOf(HaengdongException.class); + } + + @DisplayName("변경 전 참여 인원 이름이 중복될 수 없다.") + @Test + void updateMember3() { + Event event = Fixture.EVENT1; + MemberAction memberAction1 = new MemberAction(new Action(event, 1L), "토다리", IN, 1L); + MemberAction memberAction2 = new MemberAction(new Action(event, 2L), "쿠키", IN, 1L); + MemberAction memberAction3 = new MemberAction(new Action(event, 3L), "웨디", IN, 2L); + eventRepository.save(event); + memberActionRepository.saveAll(List.of(memberAction1, memberAction2, memberAction3)); + + MemberNamesUpdateAppRequest appRequest = new MemberNamesUpdateAppRequest(List.of( + new MemberNameUpdateAppRequest("쿠키", "쿡쿡"), + new MemberNameUpdateAppRequest("쿠키", "토쟁이") + )); + + assertThatThrownBy(() -> eventService.updateMember(event.getToken(), appRequest)) + .isInstanceOf(HaengdongException.class); + } + + @DisplayName("변경 후 참여 인원 이름이 중복될 수 없다.") + @Test + void updateMember4() { + Event event = Fixture.EVENT1; + MemberAction memberAction1 = new MemberAction(new Action(event, 1L), "토다리", IN, 1L); + MemberAction memberAction2 = new MemberAction(new Action(event, 2L), "쿠키", IN, 1L); + MemberAction memberAction3 = new MemberAction(new Action(event, 3L), "웨디", IN, 2L); + eventRepository.save(event); + memberActionRepository.saveAll(List.of(memberAction1, memberAction2, memberAction3)); + + MemberNamesUpdateAppRequest appRequest = new MemberNamesUpdateAppRequest(List.of( + new MemberNameUpdateAppRequest("쿠키", "쿡쿡"), + new MemberNameUpdateAppRequest("토다리", "쿡쿡") + )); + + assertThatThrownBy(() -> eventService.updateMember(event.getToken(), appRequest)) .isInstanceOf(HaengdongException.class); } } diff --git a/server/src/test/java/server/haengdong/docs/EventControllerDocsTest.java b/server/src/test/java/server/haengdong/docs/EventControllerDocsTest.java index 68c20039..52dbd15b 100644 --- a/server/src/test/java/server/haengdong/docs/EventControllerDocsTest.java +++ b/server/src/test/java/server/haengdong/docs/EventControllerDocsTest.java @@ -44,7 +44,8 @@ import server.haengdong.presentation.EventController; import server.haengdong.presentation.request.EventLoginRequest; import server.haengdong.presentation.request.EventSaveRequest; -import server.haengdong.presentation.request.MemberUpdateRequest; +import server.haengdong.presentation.request.MemberNameUpdateRequest; +import server.haengdong.presentation.request.MemberNamesUpdateRequest; public class EventControllerDocsTest extends RestDocsSupport { @@ -152,10 +153,14 @@ void findAllMembersTest() throws Exception { @Test void updateMember() throws Exception { String token = "TOKEN"; - MemberUpdateRequest memberUpdateRequest = new MemberUpdateRequest("변경된 이름"); - String requestBody = objectMapper.writeValueAsString(memberUpdateRequest); + MemberNamesUpdateRequest memberNameUpdateRequest = new MemberNamesUpdateRequest(List.of( + new MemberNameUpdateRequest("토다링", "토쟁이"), + new MemberNameUpdateRequest("감자", "고구마") + )); - mockMvc.perform(put("/api/events/{eventId}/members/{memberName}", token, "변경 전 이름") + String requestBody = objectMapper.writeValueAsString(memberNameUpdateRequest); + + mockMvc.perform(put("/api/events/{eventId}/members/nameChange", token) .cookie(EVENT_COOKIE) .contentType(MediaType.APPLICATION_JSON) .content(requestBody)) @@ -166,14 +171,15 @@ void updateMember() throws Exception { preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters( - parameterWithName("eventId").description("행사 ID"), - parameterWithName("memberName").description("참여자 이름") + parameterWithName("eventId").description("행사 ID") ), requestCookies( cookieWithName("eventToken").description("행사 관리자 토큰") ), requestFields( - fieldWithPath("name").type(JsonFieldType.STRING).description("수정할 참여자 이름") + fieldWithPath("members").type(JsonFieldType.ARRAY).description("수정할 참여자 목록"), + fieldWithPath("members[].before").type(JsonFieldType.STRING).description("수정 전 참여자 이름"), + fieldWithPath("members[].after").type(JsonFieldType.STRING).description("수정 후 참여자 이름") ) ) ); diff --git a/server/src/test/java/server/haengdong/presentation/EventControllerTest.java b/server/src/test/java/server/haengdong/presentation/EventControllerTest.java index 4ba7bc4a..fcfe48d0 100644 --- a/server/src/test/java/server/haengdong/presentation/EventControllerTest.java +++ b/server/src/test/java/server/haengdong/presentation/EventControllerTest.java @@ -21,7 +21,8 @@ import server.haengdong.application.response.MembersAppResponse; import server.haengdong.presentation.request.EventLoginRequest; import server.haengdong.presentation.request.EventSaveRequest; -import server.haengdong.presentation.request.MemberUpdateRequest; +import server.haengdong.presentation.request.MemberNameUpdateRequest; +import server.haengdong.presentation.request.MemberNamesUpdateRequest; class EventControllerTest extends ControllerTestSupport { @@ -77,10 +78,14 @@ void findAllMembersTest() throws Exception { @Test void updateMember() throws Exception { String token = "TOKEN"; - MemberUpdateRequest memberUpdateRequest = new MemberUpdateRequest("변경된 이름"); - String requestBody = objectMapper.writeValueAsString(memberUpdateRequest); + MemberNamesUpdateRequest memberNameUpdateRequest = new MemberNamesUpdateRequest(List.of( + new MemberNameUpdateRequest("토다링", "토쟁이"), + new MemberNameUpdateRequest("감자", "고구마") + )); - mockMvc.perform(put("/api/events/{eventId}/members/{memberName}", token, "변경 전 이름") + String requestBody = objectMapper.writeValueAsString(memberNameUpdateRequest); + + mockMvc.perform(put("/api/events/{eventId}/members/nameChange", token) .contentType(MediaType.APPLICATION_JSON) .content(requestBody)) .andDo(print()) From 24363ade27c860c549fb1d48890c4b7405262eb7 Mon Sep 17 00:00:00 2001 From: Arachneee Date: Thu, 8 Aug 2024 20:55:25 +0900 Subject: [PATCH 2/2] =?UTF-8?q?style:=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../haengdong/application/EventService.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/server/src/main/java/server/haengdong/application/EventService.java b/server/src/main/java/server/haengdong/application/EventService.java index 5f031f97..57109a72 100644 --- a/server/src/main/java/server/haengdong/application/EventService.java +++ b/server/src/main/java/server/haengdong/application/EventService.java @@ -116,14 +116,19 @@ private void validateBeforeNames(List members, Event List beforeNames = members.stream() .map(MemberNameUpdateAppRequest::before) .toList(); - if (beforeNames.size() != Set.copyOf(beforeNames).size()) { throw new HaengdongException(HaengdongErrorCode.MEMBER_NAME_CHANGE_DUPLICATE); } - beforeNames.forEach(beforeName -> validateBeforeMemberNameExist(event, beforeName)); } + private void validateBeforeMemberNameExist(Event event, String beforeName) { + boolean isMemberNameExist = memberActionRepository.existsByAction_EventAndMemberName(event, beforeName); + if (!isMemberNameExist) { + throw new HaengdongException(HaengdongErrorCode.MEMBER_NOT_EXIST); + } + } + private void validateAfterNames(List members, Event event) { List afterNames = members.stream() .map(MemberNameUpdateAppRequest::after) @@ -134,13 +139,6 @@ private void validateAfterNames(List members, Event afterNames.forEach(afterName -> validateAfterMemberNameNotExist(event, afterName)); } - private void validateBeforeMemberNameExist(Event event, String beforeName) { - boolean isMemberNameExist = memberActionRepository.existsByAction_EventAndMemberName(event, beforeName); - if (!isMemberNameExist) { - throw new HaengdongException(HaengdongErrorCode.MEMBER_NOT_EXIST); - } - } - private void validateAfterMemberNameNotExist(Event event, String afterName) { boolean isMemberNameExist = memberActionRepository.existsByAction_EventAndMemberName(event, afterName); if (isMemberNameExist) {