[#35] 결제 스키마 재정의 & 예약 조회 페이지 개선 #36

Merged
pricelees merged 37 commits from refactor/#35 into main 2025-08-22 06:43:16 +00:00
3 changed files with 16 additions and 10 deletions
Showing only changes of commit 1f3f57ba1c - Show all commits

View File

@ -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,7 +96,8 @@ class PaymentWriterV2(
memberId: Long,
reservationId: Long,
request: ReservationCancelRequest,
paymentCancelResponse: PaymentCancelResponseV2
paymentCancelResponse: PaymentCancelResponseV2,
requestedAt: LocalDateTime
) {
val payment: PaymentEntityV2 = paymentRepository.findByReservationId(reservationId)
?.also { it.cancel() }
@ -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) }
}
}

View File

@ -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?,

View File

@ -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) }
}
}