generated from pricelees/issue-pr-template
refactor: 결제 취소 시 취소시간을 애플리케이션에서 지정하도록 수정
This commit is contained in:
parent
b38a5242ce
commit
1f3f57ba1c
@ -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) }
|
||||
}
|
||||
}
|
||||
|
||||
@ -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?,
|
||||
|
||||
@ -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) }
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user