From 5a6bee19275671388a10f908b49fe2459b7a5be7 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Sun, 24 Aug 2025 17:43:43 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=A7=80=EC=9B=90=EC=9E=90?= =?UTF-8?q?=EB=A5=BC=20=EC=97=AC=EB=9F=AC=EA=B0=9C=20=EC=82=AD=EC=A0=9C=20?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=87=EC=8A=B5=EB=8B=88=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../club/controller/ClubApplyController.java | 18 +++++++----------- .../request/ClubApplicantDeleteRequest.java | 11 +++++++++++ .../repository/ClubApplicationRepository.java | 2 ++ .../moadong/club/service/ClubApplyService.java | 16 ++++++++-------- 4 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 backend/src/main/java/moadong/club/payload/request/ClubApplicantDeleteRequest.java diff --git a/backend/src/main/java/moadong/club/controller/ClubApplyController.java b/backend/src/main/java/moadong/club/controller/ClubApplyController.java index 2158a430f..0a7e2c25a 100644 --- a/backend/src/main/java/moadong/club/controller/ClubApplyController.java +++ b/backend/src/main/java/moadong/club/controller/ClubApplyController.java @@ -4,10 +4,7 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; -import moadong.club.payload.request.ClubApplicantEditRequest; -import moadong.club.payload.request.ClubApplicationCreateRequest; -import moadong.club.payload.request.ClubApplicationEditRequest; -import moadong.club.payload.request.ClubApplyRequest; +import moadong.club.payload.request.*; import moadong.club.service.ClubApplyService; import moadong.global.payload.Response; import moadong.user.annotation.CurrentUser; @@ -71,7 +68,7 @@ public ResponseEntity getApplyInfo(@PathVariable String clubId, } @PutMapping("/apply/{appId}") - @Operation(summary = "지원서 변경", + @Operation(summary = "지원자의 지원서 정보 변경", description = "클럽 지원자의 지원서 정보를 수정합니다.
" + "appId - 지원서 아이디" ) @@ -85,17 +82,16 @@ public ResponseEntity editApplicantDetail(@PathVariable String clubId, return Response.ok("success edit applicant"); } - @DeleteMapping("/apply/{appId}") - @Operation(summary = "지원서 삭제", - description = "클럽 지원자의 지원서를 삭제합니다.
" - + "appId - 지원서 아이디" + @DeleteMapping("/applicant") + @Operation(summary = "지원자 삭제", + description = "클럽 지원자의 지원서를 삭제합니다" ) @PreAuthorize("isAuthenticated()") @SecurityRequirement(name = "BearerAuth") public ResponseEntity removeApplicant(@PathVariable String clubId, - @PathVariable String appId, + @RequestBody @Validated ClubApplicantDeleteRequest request, @CurrentUser CustomUserDetails user) { - clubApplyService.deleteApplicant(clubId, appId, user); + clubApplyService.deleteApplicant(clubId, request, user); return Response.ok("success delete applicant"); } diff --git a/backend/src/main/java/moadong/club/payload/request/ClubApplicantDeleteRequest.java b/backend/src/main/java/moadong/club/payload/request/ClubApplicantDeleteRequest.java new file mode 100644 index 000000000..9227a6819 --- /dev/null +++ b/backend/src/main/java/moadong/club/payload/request/ClubApplicantDeleteRequest.java @@ -0,0 +1,11 @@ +package moadong.club.payload.request; + +import jakarta.validation.constraints.NotEmpty; + +import java.util.List; + +public record ClubApplicantDeleteRequest( + @NotEmpty + List applicantIds +) { +} diff --git a/backend/src/main/java/moadong/club/repository/ClubApplicationRepository.java b/backend/src/main/java/moadong/club/repository/ClubApplicationRepository.java index 52ba38527..324d86c4d 100644 --- a/backend/src/main/java/moadong/club/repository/ClubApplicationRepository.java +++ b/backend/src/main/java/moadong/club/repository/ClubApplicationRepository.java @@ -12,4 +12,6 @@ public interface ClubApplicationRepository extends MongoRepository findAllByQuestionId(String questionId); Optional findByIdAndQuestionId(String id, String questionId); + + List findAllByIdInAndQuestionId(List ids, String clubId); } \ No newline at end of file diff --git a/backend/src/main/java/moadong/club/service/ClubApplyService.java b/backend/src/main/java/moadong/club/service/ClubApplyService.java index bebffb776..f87139fec 100644 --- a/backend/src/main/java/moadong/club/service/ClubApplyService.java +++ b/backend/src/main/java/moadong/club/service/ClubApplyService.java @@ -6,10 +6,7 @@ import moadong.club.entity.*; import moadong.club.enums.ClubApplicationQuestionType; import moadong.club.payload.dto.ClubApplicantsResult; -import moadong.club.payload.request.ClubApplicantEditRequest; -import moadong.club.payload.request.ClubApplicationCreateRequest; -import moadong.club.payload.request.ClubApplicationEditRequest; -import moadong.club.payload.request.ClubApplyRequest; +import moadong.club.payload.request.*; import moadong.club.payload.response.ClubApplicationResponse; import moadong.club.payload.response.ClubApplyInfoResponse; import moadong.club.repository.ClubApplicationRepository; @@ -160,7 +157,7 @@ public void editApplicantDetail(String clubId, String appId, ClubApplicantEditRe } @Transactional - public void deleteApplicant(String clubId, String appId, CustomUserDetails user) { + public void deleteApplicant(String clubId, ClubApplicantDeleteRequest request, CustomUserDetails user) { Club club = clubRepository.findById(clubId) .orElseThrow(() -> new RestApiException(ErrorCode.CLUB_NOT_FOUND)); @@ -168,10 +165,13 @@ public void deleteApplicant(String clubId, String appId, CustomUserDetails user) throw new RestApiException(ErrorCode.USER_UNAUTHORIZED); } - ClubApplication application = clubApplicationRepository.findByIdAndQuestionId(appId, clubId) - .orElseThrow(() -> new RestApiException(ErrorCode.APPLICANT_NOT_FOUND)); + List applicants = clubApplicationRepository.findAllByIdInAndQuestionId(request.applicantIds(), clubId); + + if (applicants.size() != request.applicantIds().size()) { + throw new RestApiException(ErrorCode.APPLICANT_NOT_FOUND); + } - clubApplicationRepository.delete(application); + clubApplicationRepository.deleteAll(applicants); } private void validateAnswers(List answers, ClubQuestion clubQuestion) {