From cb36977e1ca57f4f19562a6f0be2f2758ce7bf7a Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Sun, 11 Jan 2026 00:32:37 -0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EB=8F=99=EC=95=84=EB=A6=AC=20?= =?UTF-8?q?=EC=A7=80=EC=9B=90=EC=9E=90=20=EC=96=91=EC=8B=9D=20=EB=B3=B5?= =?UTF-8?q?=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ClubApplyAdminController.java | 10 ++++++++++ .../club/service/ClubApplyAdminService.java | 20 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java b/backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java index d3784936d..7d9bb8930 100644 --- a/backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java +++ b/backend/src/main/java/moadong/club/controller/ClubApplyAdminController.java @@ -80,6 +80,16 @@ public ResponseEntity deleteClubApplicationForm(@PathVariable String applicat return Response.ok("success delete application"); } + @PostMapping("/application/{applicationFormId}/duplicate") + @Operation(summary = "클럽 지원서 양식 복제", description = "클럽의 지원서 양식을 복제합니다") + @PreAuthorize("isAuthenticated()") + @SecurityRequirement(name = "BearerAuth") + public ResponseEntity duplicateClubApplicationForm(@PathVariable String applicationFormId, + @CurrentUser CustomUserDetails user) { + clubApplyAdminService.duplicateClubApplicationForm(applicationFormId, user); + return Response.ok("success duplicate application"); + } + @GetMapping("/apply/info/{applicationFormId}") @Operation(summary = "클럽 지원자 현황", description = "클럽 지원자 현황을 불러옵니다") @PreAuthorize("isAuthenticated()") diff --git a/backend/src/main/java/moadong/club/service/ClubApplyAdminService.java b/backend/src/main/java/moadong/club/service/ClubApplyAdminService.java index b4e485562..3fbaff95f 100644 --- a/backend/src/main/java/moadong/club/service/ClubApplyAdminService.java +++ b/backend/src/main/java/moadong/club/service/ClubApplyAdminService.java @@ -4,7 +4,8 @@ import lombok.extern.slf4j.Slf4j; import moadong.club.entity.*; import moadong.club.enums.SemesterTerm; -import moadong.club.payload.dto.*; +import moadong.club.payload.dto.ApplicantStatusEvent; +import moadong.club.payload.dto.ClubApplicantsResult; import moadong.club.payload.request.*; import moadong.club.payload.response.ClubApplicationFormsResponse; import moadong.club.payload.response.ClubApplyInfoResponse; @@ -128,6 +129,23 @@ public void deleteClubApplicationForm(String applicationFormId, CustomUserDetail clubApplicationFormsRepository.delete(applicationForm); } + @Transactional + public void duplicateClubApplicationForm(String applicationFormId, CustomUserDetails user) { + ClubApplicationForm oldApplicationForm = clubApplicationFormsRepository.findByClubIdAndId(user.getClubId(), applicationFormId) + .orElseThrow(() -> new RestApiException(ErrorCode.APPLICATION_NOT_FOUND)); + + ClubApplicationForm newApplicationForm = ClubApplicationForm.builder() + .title("무제") + .clubId(oldApplicationForm.getClubId()) + .description(oldApplicationForm.getDescription()) + .formMode(oldApplicationForm.getFormMode()) + .questions(oldApplicationForm.getQuestions()) + .externalApplicationUrl(oldApplicationForm.getExternalApplicationUrl()) + .build(); + + clubApplicationFormsRepository.save(newApplicationForm); + } + public ClubApplyInfoResponse getClubApplyInfo(String applicationFormId, CustomUserDetails user) { ClubApplicationForm applicationForm = clubApplicationFormsRepository.findByClubIdAndId(user.getClubId(), applicationFormId) .orElseThrow(() -> new RestApiException(ErrorCode.APPLICATION_NOT_FOUND)); From 37c2367fc63dd4d99c3179a3ebe03cfaf2cbafe9 Mon Sep 17 00:00:00 2001 From: lepitaaar Date: Wed, 14 Jan 2026 16:56:13 -0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=ED=97=88=EC=9A=A9=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=EC=97=90=20=EC=97=90=EB=B8=8C=EB=A6=AC=ED=83=80?= =?UTF-8?q?=EC=9E=84=20=EC=A3=BC=EC=86=8C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/moadong/club/entity/ClubApplicationForm.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/moadong/club/entity/ClubApplicationForm.java b/backend/src/main/java/moadong/club/entity/ClubApplicationForm.java index 0b81a5edc..06f912b37 100644 --- a/backend/src/main/java/moadong/club/entity/ClubApplicationForm.java +++ b/backend/src/main/java/moadong/club/entity/ClubApplicationForm.java @@ -27,7 +27,7 @@ @Getter @Builder(toBuilder = true) public class ClubApplicationForm implements Persistable { - private static final String[] externalApplicationUrlAllowed = {"https://forms.gle", "https://docs.google.com/forms", "https://form.naver.com", "https://naver.me"}; + private static final String[] externalApplicationUrlAllowed = {"https://forms.gle", "https://docs.google.com/forms", "https://form.naver.com", "https://naver.me", "https://everytime.kr"}; @Id private String id;