From 4f778184065586645c0a2283214a97cdc53660ef Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 8 May 2024 22:25:16 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A3=B0=EB=A0=9B=20=EC=A0=84=EC=B2=B4=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20RouletteItem=20=EC=97=90=20percentage(?= =?UTF-8?q?=ED=99=95=EB=A5=A0)=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/roulette/NewRoulette.kt | 6 +++++ .../sodalive/live/roulette/Roulette.kt | 18 --------------- .../live/roulette/v2/RouletteController.kt | 22 +++++++++++++++++-- .../live/roulette/v2/RouletteRepository.kt | 4 +++- .../live/roulette/v2/RouletteService.kt | 22 ++++++++++++++++++- 5 files changed, 50 insertions(+), 22 deletions(-) delete mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/Roulette.kt 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 262bf40..d99afa2 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 @@ -14,3 +14,9 @@ data class NewRoulette( var isActive: Boolean, var items: List = mutableListOf() ) + +data class RouletteItem( + val title: String, + val weight: Int, + val percentage: Float = 0.0F +) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/Roulette.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/Roulette.kt deleted file mode 100644 index 560e44c..0000000 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/Roulette.kt +++ /dev/null @@ -1,18 +0,0 @@ -package kr.co.vividnext.sodalive.live.roulette - -import org.springframework.data.annotation.Id -import org.springframework.data.redis.core.RedisHash - -@RedisHash("roulette") -data class Roulette( - @Id - val creatorId: Long, - var can: Int, - var isActive: Boolean, - var items: List = mutableListOf() -) - -data class RouletteItem( - val title: String, - val weight: Int -) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteController.kt index d26521f..9daecf1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteController.kt @@ -1,8 +1,26 @@ package kr.co.vividnext.sodalive.live.roulette.v2 +import kr.co.vividnext.sodalive.common.ApiResponse +import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.member.Member +import org.springframework.security.access.prepost.PreAuthorize +import org.springframework.security.core.annotation.AuthenticationPrincipal +import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController @RestController -@RequestMapping("/roulette") -class RouletteController(private val service: RouletteService) +@RequestMapping("/v2/roulette") +class RouletteController(private val service: RouletteService) { + @GetMapping("/creator") + @PreAuthorize("hasRole('CREATOR')") + fun getAllRoulette( + @RequestParam creatorId: Long, + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getAllRoulette(creatorId = creatorId, memberId = member.id!!)) + } +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteRepository.kt index 202b47c..8755bdf 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteRepository.kt @@ -5,4 +5,6 @@ import org.springframework.data.repository.CrudRepository import org.springframework.stereotype.Repository @Repository -interface RouletteRepository : CrudRepository +interface RouletteRepository : CrudRepository { + fun findByCreatorId(creatorId: Long): List +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteService.kt index 3f28978..8f60bac 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/v2/RouletteService.kt @@ -1,6 +1,26 @@ package kr.co.vividnext.sodalive.live.roulette.v2 +import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.live.roulette.GetNewRouletteResponse import org.springframework.stereotype.Service @Service -class RouletteService +class RouletteService( + private val repository: RouletteRepository +) { + fun getAllRoulette(creatorId: Long, memberId: Long): List { + if (creatorId != memberId) throw SodaException("잘못된 요청입니다.") + + val rouletteList = repository.findByCreatorId(creatorId) + + return rouletteList.sortedBy { it.id } + .map { + GetNewRouletteResponse( + it.id, + it.can, + it.isActive, + it.items + ) + } + } +}