1111import inha .gdgoc .domain .recruit .core .enums .RecruitCoreResultStatus ;
1212import inha .gdgoc .domain .recruit .core .exception .RecruitCoreAlreadyAppliedException ;
1313import inha .gdgoc .domain .recruit .core .exception .RecruitCoreApplicationNotFoundException ;
14+ import inha .gdgoc .domain .recruit .core .exception .RecruitCoreClosedException ;
1415import inha .gdgoc .domain .recruit .core .repository .RecruitCoreApplicationRepository ;
1516import inha .gdgoc .domain .user .entity .User ;
1617import inha .gdgoc .domain .user .enums .UserRole ;
1718import inha .gdgoc .domain .user .repository .UserRepository ;
1819import inha .gdgoc .global .exception .BusinessException ;
1920import inha .gdgoc .global .exception .GlobalErrorCode ;
21+ import java .time .Instant ;
2022import java .util .List ;
2123import lombok .RequiredArgsConstructor ;
2224import org .springframework .stereotype .Service ;
2628@ RequiredArgsConstructor
2729public class RecruitCoreApplicationService {
2830
31+ private static final Instant RECRUITMENT_DEADLINE = Instant .parse ("2026-03-14T14:59:59Z" );
32+
2933 private final RecruitCoreApplicationRepository repository ;
3034 private final UserRepository userRepository ;
3135 private final RecruitCoreSessionResolver recruitCoreSessionResolver ;
@@ -38,6 +42,7 @@ public RecruitCoreApplicantDetailResponse getApplicantDetail(Long id) {
3842
3943 @ Transactional (readOnly = true )
4044 public RecruitCoreEligibilityResponse checkEligibility (Long userId ) {
45+ validateRecruitmentOpen ();
4146 String session = recruitCoreSessionResolver .currentSession ();
4247 return repository .findByUserIdAndSession (userId , session )
4348 .map (app -> RecruitCoreEligibilityResponse .ineligible (session , "ALREADY_APPLIED" , app .getId ()))
@@ -46,6 +51,7 @@ public RecruitCoreEligibilityResponse checkEligibility(Long userId) {
4651
4752 @ Transactional (readOnly = true )
4853 public RecruitCorePrefillResponse prefill (Long userId ) {
54+ validateRecruitmentOpen ();
4955 String session = recruitCoreSessionResolver .currentSession ();
5056 repository .findByUserIdAndSession (userId , session )
5157 .ifPresent (existing -> {
@@ -58,6 +64,7 @@ public RecruitCorePrefillResponse prefill(Long userId) {
5864
5965 @ Transactional
6066 public RecruitCoreApplicationCreateResponse submit (Long userId , RecruitCoreApplicationCreateRequest request ) {
67+ validateRecruitmentOpen ();
6168 String session = recruitCoreSessionResolver .currentSession ();
6269 repository .findByUserIdAndSession (userId , session )
6370 .ifPresent (existing -> {
@@ -123,4 +130,10 @@ private User getUser(Long userId) {
123130 .orElseThrow (() -> new BusinessException (GlobalErrorCode .RESOURCE_NOT_FOUND ));
124131 }
125132
133+ private void validateRecruitmentOpen () {
134+ if (Instant .now ().isAfter (RECRUITMENT_DEADLINE )) {
135+ throw new RecruitCoreClosedException (RECRUITMENT_DEADLINE );
136+ }
137+ }
138+
126139}
0 commit comments