From 1f3f57ba1c20c8d8ca7a5f35971c3a7c8a508aa3 Mon Sep 17 00:00:00 2001 From: pricelees Date: Mon, 18 Aug 2025 15:54:23 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EA=B2=B0=EC=A0=9C=20=EC=B7=A8?= =?UTF-8?q?=EC=86=8C=20=EC=8B=9C=20=EC=B7=A8=EC=86=8C=EC=8B=9C=EA=B0=84?= =?UTF-8?q?=EC=9D=84=20=EC=95=A0=ED=94=8C=EB=A6=AC=EC=BC=80=EC=9D=B4?= =?UTF-8?q?=EC=85=98=EC=97=90=EC=84=9C=20=EC=A7=80=EC=A0=95=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment/implement/PaymentWriterV2.kt | 20 ++++++++++--------- .../persistence/v2/CanceledPaymentEntityV2.kt | 2 ++ .../ReservationWithPaymentServiceV2.kt | 4 +++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/roomescape/payment/implement/PaymentWriterV2.kt b/src/main/kotlin/roomescape/payment/implement/PaymentWriterV2.kt index c1ba870d..b3aff378 100644 --- a/src/main/kotlin/roomescape/payment/implement/PaymentWriterV2.kt +++ b/src/main/kotlin/roomescape/payment/implement/PaymentWriterV2.kt @@ -9,15 +9,11 @@ import roomescape.payment.exception.PaymentErrorCode import roomescape.payment.exception.PaymentException import roomescape.payment.infrastructure.client.v2.* import roomescape.payment.infrastructure.common.PaymentMethod -import roomescape.payment.infrastructure.persistence.v2.CanceledPaymentRepositoryV2 -import roomescape.payment.infrastructure.persistence.v2.CanceledPaymentEntityV2 -import roomescape.payment.infrastructure.persistence.v2.PaymentDetailEntity -import roomescape.payment.infrastructure.persistence.v2.PaymentDetailRepository -import roomescape.payment.infrastructure.persistence.v2.PaymentEntityV2 -import roomescape.payment.infrastructure.persistence.v2.PaymentRepositoryV2 +import roomescape.payment.infrastructure.persistence.v2.* import roomescape.reservation.web.ReservationCancelRequest import roomescape.reservation.web.ReservationPaymentRequest import roomescape.reservation.web.toPaymentConfirmRequest +import java.time.LocalDateTime private val log: KLogger = KotlinLogging.logger {} @@ -100,9 +96,10 @@ class PaymentWriterV2( memberId: Long, reservationId: Long, request: ReservationCancelRequest, - paymentCancelResponse: PaymentCancelResponseV2 + paymentCancelResponse: PaymentCancelResponseV2, + requestedAt: LocalDateTime ) { - val payment: PaymentEntityV2= paymentRepository.findByReservationId(reservationId) + val payment: PaymentEntityV2 = paymentRepository.findByReservationId(reservationId) ?.also { it.cancel() } ?: throw PaymentException(PaymentErrorCode.PAYMENT_NOT_FOUND) @@ -111,9 +108,14 @@ class PaymentWriterV2( CanceledPaymentEntityV2( id = tsidFactory.next(), canceledAt = cancelDetail.canceledAt, + requestedAt = requestedAt, paymentId = payment.id, canceledBy = memberId, - cancelReason = request.cancelReason + cancelReason = request.cancelReason, + cancelAmount = cancelDetail.cancelAmount, + cardDiscountAmount = cancelDetail.cardDiscountAmount, + transferDiscountAmount = cancelDetail.transferDiscountAmount, + easypayDiscountAmount = cancelDetail.easyPayDiscountAmount, ).also { canceledPaymentRepository.save(it) } } } diff --git a/src/main/kotlin/roomescape/payment/infrastructure/persistence/v2/CanceledPaymentEntityV2.kt b/src/main/kotlin/roomescape/payment/infrastructure/persistence/v2/CanceledPaymentEntityV2.kt index b4c99aa5..da07d9bf 100644 --- a/src/main/kotlin/roomescape/payment/infrastructure/persistence/v2/CanceledPaymentEntityV2.kt +++ b/src/main/kotlin/roomescape/payment/infrastructure/persistence/v2/CanceledPaymentEntityV2.kt @@ -3,6 +3,7 @@ package roomescape.payment.infrastructure.persistence.v2 import jakarta.persistence.Entity import jakarta.persistence.Table import roomescape.common.entity.PersistableBaseEntity +import java.time.LocalDateTime import java.time.OffsetDateTime @Entity @@ -11,6 +12,7 @@ class CanceledPaymentEntityV2( id: Long, val paymentId: Long, + val requestedAt: LocalDateTime, val canceledAt: OffsetDateTime, val canceledBy: Long, val cancelReason: String?, diff --git a/src/main/kotlin/roomescape/reservation/business/ReservationWithPaymentServiceV2.kt b/src/main/kotlin/roomescape/reservation/business/ReservationWithPaymentServiceV2.kt index 56a7aff8..8bdc544d 100644 --- a/src/main/kotlin/roomescape/reservation/business/ReservationWithPaymentServiceV2.kt +++ b/src/main/kotlin/roomescape/reservation/business/ReservationWithPaymentServiceV2.kt @@ -13,6 +13,7 @@ import roomescape.reservation.implement.ReservationWriter import roomescape.reservation.infrastructure.persistence.ReservationEntity import roomescape.reservation.infrastructure.persistence.ReservationStatus import roomescape.reservation.web.* +import java.time.LocalDateTime private val log: KLogger = KotlinLogging.logger {} @@ -88,6 +89,7 @@ class ReservationWithPaymentServiceV2( reservationId: Long, request: ReservationCancelRequest ) { + val requestedAt: LocalDateTime = LocalDateTime.now() log.info { "[ReservationWithPaymentServiceV2.cancelReservation] " + "예약 취소 시작: memberId=$memberId, reservationId=$reservationId, request=$request" @@ -96,7 +98,7 @@ class ReservationWithPaymentServiceV2( val paymentCancelResponse = paymentWriter.requestCancelPayment(reservationId, request) transactionExecutionUtil.withNewTransaction(isReadOnly = false) { - paymentWriter.createCanceledPayment(memberId, reservationId, request, paymentCancelResponse) + paymentWriter.createCanceledPayment(memberId, reservationId, request, paymentCancelResponse, requestedAt) reservationFinder.findById(reservationId).also { reservationWriter.cancelByUser(it, memberId) } } }