From e4b57e71f9d5b8e9f01b2b3b774a893e5ed9d894 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 12:43:17 +0900 Subject: [PATCH 1/2] feat: add query to fetch exam and virtual account details by exam application ID --- .../notify/NotifyVariableFactory.java | 2 +- .../ExamApplicationJpaRepository.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/life/mosu/mosuserver/application/notify/NotifyVariableFactory.java b/src/main/java/life/mosu/mosuserver/application/notify/NotifyVariableFactory.java index 18ab6beb..1101ab5a 100644 --- a/src/main/java/life/mosu/mosuserver/application/notify/NotifyVariableFactory.java +++ b/src/main/java/life/mosu/mosuserver/application/notify/NotifyVariableFactory.java @@ -85,7 +85,7 @@ private LunaNotificationVariable createApplicationVariable(Long targetId) { } private LunaNotificationVariable createApplicationGuestVariable(Long targetId) { - ExamApplicationNotifyProjection projection = examApplicationRepository.findExamAndPaymentByExamApplicationId( + ExamApplicationNotifyProjection projection = examApplicationRepository.findExamAndVirtualAccountByExamApplicationId( targetId) .orElseThrow( () -> new CustomRuntimeException(ErrorCode.EXAM_APPLICATION_NOT_FOUND)); 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 2c4119de..cd05a4a5 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 @@ -115,6 +115,25 @@ Optional findExamAndPaymentByExamApplicationId( @Param("targetId") Long targetId); + @Query(""" + SELECT new life.mosu.mosuserver.domain.examapplication.projection.ExamApplicationNotifyProjection( + va.orderId, + e.examDate, + e.schoolName, + ea.isLunchChecked, + e.lunchName + ) + FROM ExamApplicationJpaEntity ea + JOIN ExamJpaEntity e ON ea.examId = e.id + JOIN ApplicationJpaEntity a ON ea.applicationId = a.id + JOIN VirtualAccountLogJpaEntity va ON va.applicationId = ea.id + WHERE ea.id = :examApplicationId + AND va.depositStatus = 'DONE' + """) + Optional findExamAndVirtualAccountByExamApplicationId( + @Param("examApplicationId") Long examApplicationId); + + @Query(""" SELECT new life.mosu.mosuserver.domain.examapplication.projection.ExamInfoProjection( e.examDate, From c949ba0181689b77fb1092c82ed7574477f89db1 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Tue, 12 Aug 2025 12:48:08 +0900 Subject: [PATCH 2/2] feat: fix join condition in query for virtual account logs in ExamApplicationJpaRepository --- .../repository/ExamApplicationJpaRepository.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 cd05a4a5..24f394f2 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 @@ -125,8 +125,7 @@ Optional findExamAndPaymentByExamApplicationId( ) FROM ExamApplicationJpaEntity ea JOIN ExamJpaEntity e ON ea.examId = e.id - JOIN ApplicationJpaEntity a ON ea.applicationId = a.id - JOIN VirtualAccountLogJpaEntity va ON va.applicationId = ea.id + JOIN VirtualAccountLogJpaEntity va ON va.applicationId = ea.applicationId WHERE ea.id = :examApplicationId AND va.depositStatus = 'DONE' """)