리워드코인 잘못 써지는 버그 수정

This commit is contained in:
Klaus 2023-09-03 00:42:26 +09:00
parent d2ae958847
commit 7ca71f90db
1 changed files with 15 additions and 14 deletions

View File

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