From 257fcb517de4ce7675d8f2d3861d1aa972fc5198 Mon Sep 17 00:00:00 2001 From: pricelees Date: Thu, 16 Oct 2025 10:26:18 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20PaymentDetail=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EA=B0=9D=EC=B2=B4=20=EB=B0=8F=20=EB=A7=A4=ED=95=91?= =?UTF-8?q?=20=ED=99=95=EC=9E=A5=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment/business/domain/PaymentDetail.kt | 38 ++++++++ .../mapper/PaymentDetailMappingExtensions.kt | 91 +++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 service/src/main/kotlin/com/sangdol/roomescape/payment/business/domain/PaymentDetail.kt create mode 100644 service/src/main/kotlin/com/sangdol/roomescape/payment/mapper/PaymentDetailMappingExtensions.kt diff --git a/service/src/main/kotlin/com/sangdol/roomescape/payment/business/domain/PaymentDetail.kt b/service/src/main/kotlin/com/sangdol/roomescape/payment/business/domain/PaymentDetail.kt new file mode 100644 index 00000000..65193b04 --- /dev/null +++ b/service/src/main/kotlin/com/sangdol/roomescape/payment/business/domain/PaymentDetail.kt @@ -0,0 +1,38 @@ +package com.sangdol.roomescape.payment.business.domain + +abstract class PaymentDetail + +class BankTransferPaymentDetail( + val bankCode: BankCode, + val settlementStatus: String, +): PaymentDetail() + +class CardPaymentDetail( + val issuerCode: CardIssuerCode, + val number: String, + val amount: Int, + val cardType: CardType, + val ownerType: CardOwnerType, + val isInterestFree: Boolean, + val approveNo: String, + val installmentPlanMonths: Int +): PaymentDetail() + +class EasypayCardPaymentDetail( + val issuerCode: CardIssuerCode, + val number: String, + val amount: Int, + val cardType: CardType, + val ownerType: CardOwnerType, + val isInterestFree: Boolean, + val approveNo: String, + val installmentPlanMonths: Int, + val easypayProvider: EasyPayCompanyCode, + val easypayDiscountAmount: Int, +): PaymentDetail() + +class EasypayPrepaidPaymentDetail( + val provider: EasyPayCompanyCode, + val amount: Int, + val discountAmount: Int, +): PaymentDetail() diff --git a/service/src/main/kotlin/com/sangdol/roomescape/payment/mapper/PaymentDetailMappingExtensions.kt b/service/src/main/kotlin/com/sangdol/roomescape/payment/mapper/PaymentDetailMappingExtensions.kt new file mode 100644 index 00000000..a8ae3571 --- /dev/null +++ b/service/src/main/kotlin/com/sangdol/roomescape/payment/mapper/PaymentDetailMappingExtensions.kt @@ -0,0 +1,91 @@ +package com.sangdol.roomescape.payment.mapper + +import com.sangdol.roomescape.payment.business.domain.BankTransferPaymentDetail +import com.sangdol.roomescape.payment.business.domain.CardPaymentDetail +import com.sangdol.roomescape.payment.business.domain.EasypayCardPaymentDetail +import com.sangdol.roomescape.payment.business.domain.EasypayPrepaidPaymentDetail +import com.sangdol.roomescape.payment.infrastructure.persistence.PaymentBankTransferDetailEntity +import com.sangdol.roomescape.payment.infrastructure.persistence.PaymentCardDetailEntity +import com.sangdol.roomescape.payment.infrastructure.persistence.PaymentDetailEntity +import com.sangdol.roomescape.payment.infrastructure.persistence.PaymentEasypayPrepaidDetailEntity + +fun BankTransferPaymentDetail.toEntity( + id: Long, + paymentId: Long, + suppliedAmount: Int, + vat: Int +): PaymentDetailEntity { + return PaymentBankTransferDetailEntity( + id = id, + paymentId = paymentId, + suppliedAmount = suppliedAmount, + vat = vat, + bankCode = this.bankCode, + settlementStatus = this.settlementStatus + ) +} + +fun CardPaymentDetail.toEntity( + id: Long, + paymentId: Long, + suppliedAmount: Int, + vat: Int +): PaymentDetailEntity { + return PaymentCardDetailEntity( + id = id, + paymentId = paymentId, + suppliedAmount = suppliedAmount, + vat = vat, + issuerCode = issuerCode, + cardType = cardType, + ownerType = ownerType, + amount = amount, + cardNumber = this.number, + approvalNumber = this.approveNo, + installmentPlanMonths = installmentPlanMonths, + isInterestFree = isInterestFree, + easypayProviderCode = null, + easypayDiscountAmount = null + ) +} + +fun EasypayCardPaymentDetail.toEntity( + id: Long, + paymentId: Long, + suppliedAmount: Int, + vat: Int +): PaymentDetailEntity { + return PaymentCardDetailEntity( + id = id, + paymentId = paymentId, + suppliedAmount = suppliedAmount, + vat = vat, + issuerCode = issuerCode, + cardType = cardType, + ownerType = ownerType, + amount = amount, + cardNumber = this.number, + approvalNumber = this.approveNo, + installmentPlanMonths = installmentPlanMonths, + isInterestFree = isInterestFree, + easypayProviderCode = this.easypayProvider, + easypayDiscountAmount = this.easypayDiscountAmount + ) +} + +fun EasypayPrepaidPaymentDetail.toEntity( + id: Long, + paymentId: Long, + suppliedAmount: Int, + vat: Int +): PaymentDetailEntity { + return PaymentEasypayPrepaidDetailEntity( + id = id, + paymentId = paymentId, + suppliedAmount = suppliedAmount, + vat = vat, + easypayProviderCode = this.provider, + amount = this.amount, + discountAmount = this.discountAmount + ) +}