diff --git a/src/main/java/life/mosu/mosuserver/application/refund/tx/RefundTxEventListener.java b/src/main/java/life/mosu/mosuserver/application/refund/tx/RefundTxEventListener.java index 54b2fb76..0779b23e 100644 --- a/src/main/java/life/mosu/mosuserver/application/refund/tx/RefundTxEventListener.java +++ b/src/main/java/life/mosu/mosuserver/application/refund/tx/RefundTxEventListener.java @@ -1,6 +1,7 @@ package life.mosu.mosuserver.application.refund.tx; import life.mosu.mosuserver.application.refund.support.RefundQuotaSyncService; +import life.mosu.mosuserver.domain.payment.repository.PaymentJpaRepository; import life.mosu.mosuserver.global.tx.TxFailureHandler; import life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationEvent; import life.mosu.mosuserver.infra.notify.dto.luna.LunaNotificationStatus; @@ -19,6 +20,7 @@ public class RefundTxEventListener { private final TxFailureHandler refundFailureHandler; private final NotifyEventPublisher notifier; private final RefundQuotaSyncService quotaSyncService; + private final PaymentJpaRepository paymentJpaRepository; @TransactionalEventListener(phase = TransactionPhase.AFTER_ROLLBACK) public void afterRollbackHandler(RefundTxEvent event) { @@ -33,7 +35,7 @@ public void afterCommitHandler(RefundTxEvent event) { RefundContext ctx = event.getContext(); quotaSyncService.sync(ctx.examId()); log.info("[AFTER_COMMIT] 환불 성공 후 알림톡 발송 시작: orderId={}", ctx.transactionKey()); - + paymentJpaRepository.deleteByExamApplicationId(ctx.examApplicationId()); sendNotification(ctx.userId(), ctx.examApplicationId()); } diff --git a/src/main/java/life/mosu/mosuserver/domain/payment/repository/PaymentJpaRepository.java b/src/main/java/life/mosu/mosuserver/domain/payment/repository/PaymentJpaRepository.java index 85dfb22f..32d1becd 100644 --- a/src/main/java/life/mosu/mosuserver/domain/payment/repository/PaymentJpaRepository.java +++ b/src/main/java/life/mosu/mosuserver/domain/payment/repository/PaymentJpaRepository.java @@ -2,8 +2,8 @@ import java.time.LocalDateTime; import java.util.List; -import life.mosu.mosuserver.domain.payment.projection.PaymentWithLunchProjection; import life.mosu.mosuserver.domain.payment.entity.PaymentJpaEntity; +import life.mosu.mosuserver.domain.payment.projection.PaymentWithLunchProjection; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -11,6 +11,8 @@ public interface PaymentJpaRepository extends JpaRepository, PaymentJpaRepositoryCustom { + void deleteByExamApplicationId(Long examApplicationId); + // TODO:인덱스 처리 필요(풀스캔 위험) boolean existsByOrderId(String orderId);