From da2720518effb9cf13387f5694cf221ffde668a9 Mon Sep 17 00:00:00 2001 From: jbh010204 Date: Tue, 12 Aug 2025 00:31:48 +0900 Subject: [PATCH 1/2] =?UTF-8?q?MOSU-292=20refactor:=20=EC=B6=94=EC=B2=9C?= =?UTF-8?q?=EC=9D=B8=20=EA=B2=80=EC=A6=9D=20=EC=8B=9C=20=EA=B2=B0=EC=A0=9C?= =?UTF-8?q?=20=EC=99=84=EB=A3=8C=20=EA=B2=80=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/profile/RecommenderService.java | 12 +++++++----- .../repository/ExamApplicationJpaRepository.java | 12 +++++++++++- 2 files changed, 18 insertions(+), 6 deletions(-) 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..e35d0c27 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,15 @@ 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' + ) + """) + boolean existsPaymentDoneByUserId(@Param("userId") Long userId); } \ No newline at end of file From c808f8a53b6516c8e5d616084f90d7eefc10b603 Mon Sep 17 00:00:00 2001 From: jbh010204 Date: Tue, 12 Aug 2025 00:38:48 +0900 Subject: [PATCH 2/2] =?UTF-8?q?MOSU-292=20refactor:=20delete=20=EA=B3=A0?= =?UTF-8?q?=EB=A0=A4=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/ExamApplicationJpaRepository.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 e35d0c27..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 @@ -200,7 +200,9 @@ select exists ( from ExamApplicationJpaEntity ea join PaymentJpaEntity p on p.examApplicationId = ea.id where ea.userId = :userId - and p.paymentStatus = 'DONE' + and p.paymentStatus = 'DONE' + and p.deleted = false + and ea.deleted = false ) """) boolean existsPaymentDoneByUserId(@Param("userId") Long userId);