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