From bcd094c5dd412bb4ba1fb8bfc565eb25cf773c8f Mon Sep 17 00:00:00 2001 From: Klaus <klaus@vividnext.co.kr> Date: Fri, 23 Feb 2024 16:47:49 +0900 Subject: [PATCH] =?UTF-8?q?=ED=99=9C=EC=84=B1=ED=99=94=EB=90=9C=20?= =?UTF-8?q?=EB=A3=B0=EB=A0=9B=20=EC=A1=B0=ED=9A=8C=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/roulette/NewRoulette.kt | 1 - .../live/roulette/NewRouletteRepository.kt | 1 - .../live/roulette/NewRouletteService.kt | 47 +++++++++++++++---- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRoulette.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRoulette.kt index 90dd115..262bf40 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRoulette.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRoulette.kt @@ -11,7 +11,6 @@ data class NewRoulette( @Indexed val creatorId: Long, var can: Int, - @Indexed var isActive: Boolean, var items: List<RouletteItem> = mutableListOf() ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteRepository.kt index fca5623..f2043be 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteRepository.kt @@ -4,5 +4,4 @@ import org.springframework.data.repository.CrudRepository interface NewRouletteRepository : CrudRepository<NewRoulette, Long> { fun findByCreatorId(creatorId: Long): List<NewRoulette> - fun findByCreatorIdAndActive(creatorId: Long, isActive: Boolean): List<NewRoulette> } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteService.kt index 8f88cb0..e457872 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteService.kt @@ -122,16 +122,28 @@ class NewRouletteService( } fun getRoulette(creatorId: Long, memberId: Long): GetRouletteResponse { - val roulette = repository.findByCreatorIdAndActive(creatorId = creatorId, isActive = true) + val rouletteList = repository.findByCreatorId(creatorId = creatorId) - if (roulette.isEmpty() || !roulette[0].isActive || roulette[0].items.isEmpty()) { + if (rouletteList.isEmpty()) { + throw SodaException("룰렛을 사용할 수 없습니다.") + } + + var activeRoulette: NewRoulette? = null + for (roulette in rouletteList) { + if (roulette.isActive) { + activeRoulette = roulette + break + } + } + + if (activeRoulette == null || activeRoulette.items.isEmpty()) { throw SodaException("룰렛을 사용할 수 없습니다.") } return GetRouletteResponse( - can = roulette[0].can, - isActive = roulette[0].isActive, - items = roulette[0].items + can = activeRoulette.can, + isActive = activeRoulette.isActive, + items = activeRoulette.items ) } @@ -148,23 +160,38 @@ class NewRouletteService( } // STEP 2 - 룰렛 데이터 가져오기 - val rouletteList = repository.findByCreatorIdAndActive(creatorId = host.id!!, isActive = true) + val rouletteList = repository.findByCreatorId(creatorId = host.id!!) - if (rouletteList.isEmpty() || !rouletteList[0].isActive || rouletteList[0].items.isEmpty()) { + if (rouletteList.isEmpty()) { + throw SodaException("룰렛을 사용할 수 없습니다.") + } + + var activeRoulette: NewRoulette? = null + for (roulette in rouletteList) { + if (roulette.isActive) { + activeRoulette = roulette + break + } + } + + if (activeRoulette == null || activeRoulette.items.isEmpty()) { throw SodaException("룰렛을 사용할 수 없습니다.") } // STEP 3 - 캔 사용 - val roulette = rouletteList[0] canPaymentService.spendCan( memberId = memberId, - needCan = roulette.can, + needCan = activeRoulette.can, canUsage = CanUsage.SPIN_ROULETTE, liveRoom = room, container = request.container ) - return GetRouletteResponse(can = roulette.can, isActive = roulette.isActive, items = roulette.items) + return GetRouletteResponse( + can = activeRoulette.can, + isActive = activeRoulette.isActive, + items = activeRoulette.items + ) } @Transactional