diff --git a/src/main/java/life/mosu/mosuserver/application/profile/RecommenderService.java b/src/main/java/life/mosu/mosuserver/application/profile/RecommenderService.java index 7f0b7b5f..5133f5e8 100644 --- a/src/main/java/life/mosu/mosuserver/application/profile/RecommenderService.java +++ b/src/main/java/life/mosu/mosuserver/application/profile/RecommenderService.java @@ -1,5 +1,6 @@ package life.mosu.mosuserver.application.profile; +import life.mosu.mosuserver.domain.examapplication.repository.ExamApplicationJpaRepository; import life.mosu.mosuserver.domain.profile.entity.ProfileJpaEntity; import life.mosu.mosuserver.domain.profile.repository.ProfileJpaRepository; import life.mosu.mosuserver.global.exception.CustomRuntimeException; @@ -17,15 +18,12 @@ public class RecommenderService { private final ProfileJpaRepository profileJpaRepository; + private final ExamApplicationJpaRepository examApplicationJpaRepository; @Transactional public void registerRecommender(Long userId, RecommenderRegistrationRequest request) { ProfileJpaEntity profile = profileJpaRepository.findByUserId(userId) .orElseThrow(() -> new CustomRuntimeException(ErrorCode.PROFILE_NOT_FOUND)); - if (profile.getRecommenderPhoneNumber() != null) { - throw new CustomRuntimeException(ErrorCode.ALREADY_REGISTERED_RECOMMENDER); - } - profile.registerRecommenderPhoneNumber(request.phoneNumber()); } @@ -33,7 +31,11 @@ public void registerRecommender(Long userId, RecommenderRegistrationRequest requ public Boolean verifyRecommender(Long userId) { ProfileJpaEntity profile = profileJpaRepository.findByUserId(userId) .orElseThrow(() -> new CustomRuntimeException(ErrorCode.PROFILE_NOT_FOUND)); - return profile.getRecommenderPhoneNumber() != null; + if (profile.getRecommenderPhoneNumber() == null) { + return false; + } + + return examApplicationJpaRepository.existsPaymentDoneByUserId(userId); } } diff --git a/src/main/java/life/mosu/mosuserver/domain/examapplication/repository/ExamApplicationJpaRepository.java b/src/main/java/life/mosu/mosuserver/domain/examapplication/repository/ExamApplicationJpaRepository.java index 363d9ea6..2c4119de 100644 --- a/src/main/java/life/mosu/mosuserver/domain/examapplication/repository/ExamApplicationJpaRepository.java +++ b/src/main/java/life/mosu/mosuserver/domain/examapplication/repository/ExamApplicationJpaRepository.java @@ -143,7 +143,6 @@ Optional findExamAndPaymentByExamApplicationId( JOIN PaymentJpaEntity p ON p.examApplicationId = ea.id WHERE ea.id = :examApplicationId AND p.paymentStatus = 'DONE' - AND p.deleted = false """) Optional findExamInfoWithExamNumber( @Param("examApplicationId") Long examApplicationId); @@ -194,4 +193,17 @@ SELECT COUNT(ea) AND p.deleted = false """) long countAll(); + + @Query(""" + select exists ( + select 1 + from ExamApplicationJpaEntity ea + join PaymentJpaEntity p on p.examApplicationId = ea.id + where ea.userId = :userId + and p.paymentStatus = 'DONE' + and p.deleted = false + and ea.deleted = false + ) + """) + boolean existsPaymentDoneByUserId(@Param("userId") Long userId); } \ No newline at end of file