리워드코인 잘못 써지는 버그 수정
This commit is contained in:
		| @@ -16,6 +16,7 @@ import kr.co.vividnext.sodalive.common.SodaException | |||||||
| import kr.co.vividnext.sodalive.content.AudioContent | import kr.co.vividnext.sodalive.content.AudioContent | ||||||
| import kr.co.vividnext.sodalive.content.order.Order | import kr.co.vividnext.sodalive.content.order.Order | ||||||
| import kr.co.vividnext.sodalive.live.room.LiveRoom | import kr.co.vividnext.sodalive.live.room.LiveRoom | ||||||
|  | import kr.co.vividnext.sodalive.member.Member | ||||||
| import kr.co.vividnext.sodalive.member.MemberRepository | import kr.co.vividnext.sodalive.member.MemberRepository | ||||||
| import org.springframework.data.repository.findByIdOrNull | import org.springframework.data.repository.findByIdOrNull | ||||||
| import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||||
| @@ -41,9 +42,9 @@ class CanPaymentService( | |||||||
|     ) { |     ) { | ||||||
|         val member = memberRepository.findByIdOrNull(id = memberId) |         val member = memberRepository.findByIdOrNull(id = memberId) | ||||||
|             ?: throw SodaException("잘못된 요청입니다.\n다시 시도해 주세요.") |             ?: throw SodaException("잘못된 요청입니다.\n다시 시도해 주세요.") | ||||||
|         val useRewardCan = spendRewardCan(memberId, needCan, container) |         val useRewardCan = spendRewardCan(member, needCan, container) | ||||||
|         val useChargeCan = if (needCan - useRewardCan.total > 0) { |         val useChargeCan = if (needCan - useRewardCan.total > 0) { | ||||||
|             spendChargeCan(memberId, needCan = needCan - useRewardCan.total, container = container) |             spendChargeCan(member, needCan = needCan - useRewardCan.total, container = container) | ||||||
|         } else { |         } else { | ||||||
|             null |             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) { |         return if (needCan > 0) { | ||||||
|             val member = memberRepository.findByIdOrNull(id = memberId) |  | ||||||
|                 ?: throw SodaException("잘못된 요청입니다.\n다시 시도해 주세요.") |  | ||||||
|  |  | ||||||
|             val spentCans = mutableListOf<SpentCan>() |             val spentCans = mutableListOf<SpentCan>() | ||||||
|             var chargeId = 0L |             var chargeId = 0L | ||||||
|             var total = 0 |             var total = 0 | ||||||
|  |  | ||||||
|             while (needCan - total > 0) { |             while (needCan - total > 0) { | ||||||
|                 val remainingNeedCan = needCan - total |                 val remainingNeedCan = needCan - total | ||||||
|                 val charge = chargeRepository.getOldestChargeWhereRewardCanGreaterThan0(chargeId, memberId, container) |                 val charge = chargeRepository.getOldestChargeWhereRewardCanGreaterThan0( | ||||||
|                     ?: break |                     chargeId, | ||||||
|  |                     member.id!!, | ||||||
|  |                     container | ||||||
|  |                 ) ?: break | ||||||
|  |  | ||||||
|                 if (charge.rewardCan >= remainingNeedCan) { |                 if (charge.rewardCan >= remainingNeedCan) { | ||||||
|                     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) { |         return if (needCan > 0) { | ||||||
|             val member = memberRepository.findByIdOrNull(id = memberId) |  | ||||||
|                 ?: throw SodaException("잘못된 요청입니다.\n다시 시도해 주세요.") |  | ||||||
|  |  | ||||||
|             val spentCans = mutableListOf<SpentCan>() |             val spentCans = mutableListOf<SpentCan>() | ||||||
|             var chargeId = 0L |             var chargeId = 0L | ||||||
|             var total = 0 |             var total = 0 | ||||||
|  |  | ||||||
|             while (needCan - total > 0) { |             while (needCan - total > 0) { | ||||||
|                 val remainingNeedCan = needCan - total |                 val remainingNeedCan = needCan - total | ||||||
|                 val charge = chargeRepository.getOldestChargeWhereChargeCanGreaterThan0(chargeId, memberId, container) |                 val charge = chargeRepository.getOldestChargeWhereChargeCanGreaterThan0( | ||||||
|                     ?: break |                     chargeId, | ||||||
|  |                     member.id!!, | ||||||
|  |                     container | ||||||
|  |                 ) ?: break | ||||||
|  |  | ||||||
|                 if (charge.chargeCan >= remainingNeedCan) { |                 if (charge.chargeCan >= remainingNeedCan) { | ||||||
|                     charge.chargeCan -= remainingNeedCan |                     charge.chargeCan -= remainingNeedCan | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user