From 7ca71f90dba94a36a33a5fdb71de74983043f917 Mon Sep 17 00:00:00 2001
From: Klaus <klaus@vividnext.co.kr>
Date: Sun, 3 Sep 2023 00:42:26 +0900
Subject: [PATCH] =?UTF-8?q?=EB=A6=AC=EC=9B=8C=EB=93=9C=EC=BD=94=EC=9D=B8?=
 =?UTF-8?q?=20=EC=9E=98=EB=AA=BB=20=EC=8D=A8=EC=A7=80=EB=8A=94=20=EB=B2=84?=
 =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../sodalive/can/payment/CanPaymentService.kt | 29 ++++++++++---------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/payment/CanPaymentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/payment/CanPaymentService.kt
index fd3a937..3d0c283 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/can/payment/CanPaymentService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/payment/CanPaymentService.kt
@@ -16,6 +16,7 @@ import kr.co.vividnext.sodalive.common.SodaException
 import kr.co.vividnext.sodalive.content.AudioContent
 import kr.co.vividnext.sodalive.content.order.Order
 import kr.co.vividnext.sodalive.live.room.LiveRoom
+import kr.co.vividnext.sodalive.member.Member
 import kr.co.vividnext.sodalive.member.MemberRepository
 import org.springframework.data.repository.findByIdOrNull
 import org.springframework.stereotype.Service
@@ -41,9 +42,9 @@ class CanPaymentService(
     ) {
         val member = memberRepository.findByIdOrNull(id = memberId)
             ?: throw SodaException("잘못된 요청입니다.\n다시 시도해 주세요.")
-        val useRewardCan = spendRewardCan(memberId, needCan, container)
+        val useRewardCan = spendRewardCan(member, needCan, container)
         val useChargeCan = if (needCan - useRewardCan.total > 0) {
-            spendChargeCan(memberId, needCan = needCan - useRewardCan.total, container = container)
+            spendChargeCan(member, needCan = needCan - useRewardCan.total, container = container)
         } else {
             null
         }
@@ -143,19 +144,19 @@ class CanPaymentService(
         }
     }
 
-    private fun spendRewardCan(memberId: Long, needCan: Int, container: String): TotalSpentCan {
+    private fun spendRewardCan(member: Member, needCan: Int, container: String): TotalSpentCan {
         return if (needCan > 0) {
-            val member = memberRepository.findByIdOrNull(id = memberId)
-                ?: throw SodaException("잘못된 요청입니다.\n다시 시도해 주세요.")
-
             val spentCans = mutableListOf<SpentCan>()
             var chargeId = 0L
             var total = 0
 
             while (needCan - total > 0) {
                 val remainingNeedCan = needCan - total
-                val charge = chargeRepository.getOldestChargeWhereRewardCanGreaterThan0(chargeId, memberId, container)
-                    ?: break
+                val charge = chargeRepository.getOldestChargeWhereRewardCanGreaterThan0(
+                    chargeId,
+                    member.id!!,
+                    container
+                ) ?: break
 
                 if (charge.rewardCan >= remainingNeedCan) {
                     charge.rewardCan -= remainingNeedCan
@@ -201,19 +202,19 @@ class CanPaymentService(
         }
     }
 
-    private fun spendChargeCan(memberId: Long, needCan: Int, container: String): TotalSpentCan {
+    private fun spendChargeCan(member: Member, needCan: Int, container: String): TotalSpentCan {
         return if (needCan > 0) {
-            val member = memberRepository.findByIdOrNull(id = memberId)
-                ?: throw SodaException("잘못된 요청입니다.\n다시 시도해 주세요.")
-
             val spentCans = mutableListOf<SpentCan>()
             var chargeId = 0L
             var total = 0
 
             while (needCan - total > 0) {
                 val remainingNeedCan = needCan - total
-                val charge = chargeRepository.getOldestChargeWhereChargeCanGreaterThan0(chargeId, memberId, container)
-                    ?: break
+                val charge = chargeRepository.getOldestChargeWhereChargeCanGreaterThan0(
+                    chargeId,
+                    member.id!!,
+                    container
+                ) ?: break
 
                 if (charge.chargeCan >= remainingNeedCan) {
                     charge.chargeCan -= remainingNeedCan