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() 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() 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