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) {