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.exception.PaymentException
|
||||||
import roomescape.payment.infrastructure.client.v2.*
|
import roomescape.payment.infrastructure.client.v2.*
|
||||||
import roomescape.payment.infrastructure.common.PaymentMethod
|
import roomescape.payment.infrastructure.common.PaymentMethod
|
||||||
import roomescape.payment.infrastructure.persistence.v2.CanceledPaymentRepositoryV2
|
import roomescape.payment.infrastructure.persistence.v2.*
|
||||||
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.reservation.web.ReservationCancelRequest
|
import roomescape.reservation.web.ReservationCancelRequest
|
||||||
import roomescape.reservation.web.ReservationPaymentRequest
|
import roomescape.reservation.web.ReservationPaymentRequest
|
||||||
import roomescape.reservation.web.toPaymentConfirmRequest
|
import roomescape.reservation.web.toPaymentConfirmRequest
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
private val log: KLogger = KotlinLogging.logger {}
|
private val log: KLogger = KotlinLogging.logger {}
|
||||||
|
|
||||||
@ -100,9 +96,10 @@ class PaymentWriterV2(
|
|||||||
memberId: Long,
|
memberId: Long,
|
||||||
reservationId: Long,
|
reservationId: Long,
|
||||||
request: ReservationCancelRequest,
|
request: ReservationCancelRequest,
|
||||||
paymentCancelResponse: PaymentCancelResponseV2
|
paymentCancelResponse: PaymentCancelResponseV2,
|
||||||
|
requestedAt: LocalDateTime
|
||||||
) {
|
) {
|
||||||
val payment: PaymentEntityV2= paymentRepository.findByReservationId(reservationId)
|
val payment: PaymentEntityV2 = paymentRepository.findByReservationId(reservationId)
|
||||||
?.also { it.cancel() }
|
?.also { it.cancel() }
|
||||||
?: throw PaymentException(PaymentErrorCode.PAYMENT_NOT_FOUND)
|
?: throw PaymentException(PaymentErrorCode.PAYMENT_NOT_FOUND)
|
||||||
|
|
||||||
@ -111,9 +108,14 @@ class PaymentWriterV2(
|
|||||||
CanceledPaymentEntityV2(
|
CanceledPaymentEntityV2(
|
||||||
id = tsidFactory.next(),
|
id = tsidFactory.next(),
|
||||||
canceledAt = cancelDetail.canceledAt,
|
canceledAt = cancelDetail.canceledAt,
|
||||||
|
requestedAt = requestedAt,
|
||||||
paymentId = payment.id,
|
paymentId = payment.id,
|
||||||
canceledBy = memberId,
|
canceledBy = memberId,
|
||||||
cancelReason = request.cancelReason
|
cancelReason = request.cancelReason,
|
||||||
|
cancelAmount = cancelDetail.cancelAmount,
|
||||||
|
cardDiscountAmount = cancelDetail.cardDiscountAmount,
|
||||||
|
transferDiscountAmount = cancelDetail.transferDiscountAmount,
|
||||||
|
easypayDiscountAmount = cancelDetail.easyPayDiscountAmount,
|
||||||
).also { canceledPaymentRepository.save(it) }
|
).also { canceledPaymentRepository.save(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package roomescape.payment.infrastructure.persistence.v2
|
|||||||
import jakarta.persistence.Entity
|
import jakarta.persistence.Entity
|
||||||
import jakarta.persistence.Table
|
import jakarta.persistence.Table
|
||||||
import roomescape.common.entity.PersistableBaseEntity
|
import roomescape.common.entity.PersistableBaseEntity
|
||||||
|
import java.time.LocalDateTime
|
||||||
import java.time.OffsetDateTime
|
import java.time.OffsetDateTime
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@ -11,6 +12,7 @@ class CanceledPaymentEntityV2(
|
|||||||
id: Long,
|
id: Long,
|
||||||
|
|
||||||
val paymentId: Long,
|
val paymentId: Long,
|
||||||
|
val requestedAt: LocalDateTime,
|
||||||
val canceledAt: OffsetDateTime,
|
val canceledAt: OffsetDateTime,
|
||||||
val canceledBy: Long,
|
val canceledBy: Long,
|
||||||
val cancelReason: String?,
|
val cancelReason: String?,
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import roomescape.reservation.implement.ReservationWriter
|
|||||||
import roomescape.reservation.infrastructure.persistence.ReservationEntity
|
import roomescape.reservation.infrastructure.persistence.ReservationEntity
|
||||||
import roomescape.reservation.infrastructure.persistence.ReservationStatus
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus
|
||||||
import roomescape.reservation.web.*
|
import roomescape.reservation.web.*
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
private val log: KLogger = KotlinLogging.logger {}
|
private val log: KLogger = KotlinLogging.logger {}
|
||||||
|
|
||||||
@ -88,6 +89,7 @@ class ReservationWithPaymentServiceV2(
|
|||||||
reservationId: Long,
|
reservationId: Long,
|
||||||
request: ReservationCancelRequest
|
request: ReservationCancelRequest
|
||||||
) {
|
) {
|
||||||
|
val requestedAt: LocalDateTime = LocalDateTime.now()
|
||||||
log.info {
|
log.info {
|
||||||
"[ReservationWithPaymentServiceV2.cancelReservation] " +
|
"[ReservationWithPaymentServiceV2.cancelReservation] " +
|
||||||
"예약 취소 시작: memberId=$memberId, reservationId=$reservationId, request=$request"
|
"예약 취소 시작: memberId=$memberId, reservationId=$reservationId, request=$request"
|
||||||
@ -96,7 +98,7 @@ class ReservationWithPaymentServiceV2(
|
|||||||
val paymentCancelResponse = paymentWriter.requestCancelPayment(reservationId, request)
|
val paymentCancelResponse = paymentWriter.requestCancelPayment(reservationId, request)
|
||||||
|
|
||||||
transactionExecutionUtil.withNewTransaction(isReadOnly = false) {
|
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) }
|
reservationFinder.findById(reservationId).also { reservationWriter.cancelByUser(it, memberId) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user