From 239516b98b5e2c935321c8cd9d2729037937c6d5 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 17 Feb 2025 11:54:08 +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-=20=ED=99=88,=20=EB=8B=A8=ED=8E=B8=20-=20=EC=B1=84?= =?UTF-8?q?=EB=84=90=EB=B3=84=20=EC=9D=B8=EA=B8=B0=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20-=20=EB=B3=B4=EC=9D=B4=EB=8A=94=20=EC=B1=84?= =?UTF-8?q?=EB=84=90=20=EC=A1=B0=EA=B1=B4=20=EC=95=84=EB=9E=98=EC=99=80=20?= =?UTF-8?q?=EA=B0=99=EC=9D=B4=20=EB=B3=80=EA=B2=BD=20-=20=EC=9C=A0?= =?UTF-8?q?=EB=A3=8C=20=EC=BD=98=ED=85=90=EC=B8=A0=204=EA=B0=9C=20?= =?UTF-8?q?=EC=9D=B4=EC=83=81=20=EB=93=B1=EB=A1=9D=ED=95=9C=20=EC=B1=84?= =?UTF-8?q?=EB=84=90=EC=9D=98=20=EC=A3=BC=EA=B0=84=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20=ED=8C=90=EB=A7=A4=20=EA=B0=9C=EC=88=98=20Top=2020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AudioContentMainTabContentService.kt | 2 +- .../tab/home/AudioContentMainTabHomeService.kt | 7 +++---- .../sodalive/rank/RankingRepository.kt | 18 +++++++++--------- .../vividnext/sodalive/rank/RankingService.kt | 4 ++-- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/content/AudioContentMainTabContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/content/AudioContentMainTabContentService.kt index 205951e..d14f065 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/content/AudioContentMainTabContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/content/AudioContentMainTabContentService.kt @@ -69,7 +69,7 @@ class AudioContentMainTabContentService( // 이벤트 배너 val eventBannerList = eventService.getEventList(isAdult = isAdult) - val contentRankCreatorList = rankingService.fetchCreatorByContentRevenueRankTop20( + val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20( memberId = member.id!!, startDate = dailyRankingStartDate.minusDays(1), endDate = dailyRankingEndDate 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 1a1a0ec..8aed26d 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 @@ -74,11 +74,10 @@ class AudioContentMainTabHomeService( /* 채널별 인기 콘텐츠 * - 콘텐츠를 4개 이상 등록한 채널 - * - 주간 콘텐츠 매출 Top 20 채널 - * - 해당 채널의 누적 매출 Top 2 - * - 해당 채널의 누적 판매 개수 Top 2 + * - 주간 콘텐츠 판매 개수 Top 20 채널 + * - 해당 채널의 누적 판매 개수 Top 4 */ - val contentRankCreatorList = rankingService.fetchCreatorByContentRevenueRankTop20( + val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20( memberId = member.id!!, startDate = startDate.minusDays(1), endDate = endDate diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt index c0e9c65..5d6a605 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt @@ -336,7 +336,7 @@ class RankingRepository( .fetch() } - fun fetchCreatorByContentRevenueRankTop20( + fun fetchCreatorBySellContentCountRankTop20( memberId: Long, startDate: LocalDateTime, endDate: LocalDateTime @@ -350,9 +350,12 @@ class RankingRepository( .and(order.createdAt.goe(startDate)) .and(order.createdAt.lt(startDate)) - val where = member.isActive.isTrue + val memberCondition = member.isActive.isTrue .and(member.role.eq(MemberRole.CREATOR)) - .and(audioContent.isActive.isTrue) + .and(member.id.eq(audioContent.member.id)) + + val where = audioContent.isActive.isTrue + .and(audioContent.price.gt(0)) .and(audioContent.duration.isNotNull) .and(audioContent.limited.isNull) .and(blockMember.id.isNull) @@ -365,17 +368,14 @@ class RankingRepository( member.profileImage.prepend("/").prepend(imageHost) ) ) - .from(member) - .innerJoin(audioContent).on(member.id.eq(audioContent.member.id)) + .from(audioContent) + .innerJoin(member).on(memberCondition) .leftJoin(order).on(ordersCondition) .leftJoin(blockMember).on(blockMemberCondition) .where(where) .groupBy(member.id) .having(audioContent.id.count().goe(4)) - .orderBy( - order.can.sum().desc(), - Expressions.numberTemplate(Double::class.java, "function('rand')").asc() - ) + .orderBy(order.id.count().desc(), member.id.desc()) .offset(0) .limit(20) .fetch() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt index 5f657d0..37db5fe 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt @@ -181,12 +181,12 @@ class RankingService( } } - fun fetchCreatorByContentRevenueRankTop20( + fun fetchCreatorBySellContentCountRankTop20( memberId: Long, startDate: LocalDateTime, endDate: LocalDateTime ): List { - return repository.fetchCreatorByContentRevenueRankTop20(memberId, startDate, endDate) + return repository.fetchCreatorBySellContentCountRankTop20(memberId, startDate, endDate) } fun fetchCreatorContentBySalesTop2(