From dce1abaeff9839c7d2a818d37431c056cf51e87c Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 10 Feb 2025 02:39:56 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=ED=99=88=20-=20=EC=B1=84=EB=84=90=EB=B3=84=20?= =?UTF-8?q?=EC=9D=B8=EA=B8=B0=20=EC=BD=98=ED=85=90=EC=B8=A0=20API=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tab/GetPopularContentByCreatorResponse.kt | 8 ++++++++ .../home/AudioContentMainTabHomeController.kt | 16 ++++++++++++++++ .../tab/home/AudioContentMainTabHomeService.kt | 18 ++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/GetPopularContentByCreatorResponse.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/GetPopularContentByCreatorResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/GetPopularContentByCreatorResponse.kt new file mode 100644 index 0000000..6f8cdc8 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/GetPopularContentByCreatorResponse.kt @@ -0,0 +1,8 @@ +package kr.co.vividnext.sodalive.content.main.tab + +import kr.co.vividnext.sodalive.content.main.GetAudioContentRankingItem + +data class GetPopularContentByCreatorResponse( + val salesRankContentList: List, + val salesCountRankContentList: List +) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/home/AudioContentMainTabHomeController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/home/AudioContentMainTabHomeController.kt index 601f82d..20d0bea 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/home/AudioContentMainTabHomeController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/home/AudioContentMainTabHomeController.kt @@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.member.Member 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 @@ -19,4 +20,19 @@ class AudioContentMainTabHomeController(private val service: AudioContentMainTab ApiResponse.ok(service.fetchData(member)) } + + @GetMapping("/popular-content-by-creator") + fun getPopularContentByCreator( + @RequestParam creatorId: Long, + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok( + service.getPopularContentByCreator( + creatorId = creatorId, + isAdult = member.auth != null + ) + ) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/home/AudioContentMainTabHomeService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/home/AudioContentMainTabHomeService.kt index 8532a33..1a1a0ec 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/home/AudioContentMainTabHomeService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/home/AudioContentMainTabHomeService.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.content.main.tab.home import kr.co.vividnext.sodalive.content.main.banner.AudioContentBannerService +import kr.co.vividnext.sodalive.content.main.tab.GetPopularContentByCreatorResponse import kr.co.vividnext.sodalive.event.EventService import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.notice.ServiceNoticeService @@ -114,4 +115,21 @@ class AudioContentMainTabHomeService( salesCountRankContentList = salesCountRankContentList ) } + + fun getPopularContentByCreator(creatorId: Long, isAdult: Boolean): GetPopularContentByCreatorResponse { + val salesRankContentList = rankingService.fetchCreatorContentBySalesTop2( + creatorId = creatorId, + isAdult = isAdult + ) + + val salesCountRankContentList = rankingService.fetchCreatorContentBySalesCountTop2( + creatorId = creatorId, + isAdult = isAdult + ) + + return GetPopularContentByCreatorResponse( + salesRankContentList = salesRankContentList, + salesCountRankContentList = salesCountRankContentList + ) + } }