From e488f3419e6ae41a923d271b79858b6980cb4e55 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 19 Mar 2025 12:23:54 +0900 Subject: [PATCH 1/6] =?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=20=EC=B1=84?= =?UTF-8?q?=EB=84=90=20-=2019=EA=B8=88=20=EC=BD=98=ED=85=90=EC=B8=A0=20?= =?UTF-8?q?=EC=95=88=EB=B3=B4=EA=B8=B0=20=EC=84=A4=EC=A0=95=EC=8B=9C=20?= =?UTF-8?q?=EC=9D=BC=EB=B0=98=20=EC=BD=98=ED=85=90=EC=B8=A0=20=ED=8C=90?= =?UTF-8?q?=EB=A7=A4=EB=9F=89=EC=9C=BC=EB=A1=9C=20=EC=B1=84=EB=84=90=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/AudioContentMainTabHomeService.kt | 1 + .../sodalive/rank/RankingRepository.kt | 27 +++++++++++-------- .../vividnext/sodalive/rank/RankingService.kt | 3 ++- 3 files changed, 19 insertions(+), 12 deletions(-) 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 a748425..7179cd3 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 @@ -83,6 +83,7 @@ class AudioContentMainTabHomeService( val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20( memberId = member.id!!, + isAdult = isAdult, contentType = contentType, 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 611f595..b0639c1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingRepository.kt @@ -409,6 +409,7 @@ class RankingRepository( fun fetchCreatorBySellContentCountRankTop20( memberId: Long, + isAdult: Boolean, contentType: ContentType, startDate: LocalDateTime, endDate: LocalDateTime @@ -422,7 +423,7 @@ class RankingRepository( .and(order.createdAt.goe(startDate)) .and(order.createdAt.lt(endDate)) - var memberCondition = member.isActive.isTrue + val memberCondition = member.isActive.isTrue .and(member.role.eq(MemberRole.CREATOR)) .and(member.id.eq(audioContent.member.id)) @@ -432,18 +433,22 @@ class RankingRepository( .and(audioContent.limited.isNull) .and(blockMember.id.isNull) - if (contentType != ContentType.ALL) { - where = where.and( - audioContent.member.auth.isNull.or( - audioContent.member.auth.gender.eq( - if (contentType == ContentType.MALE) { - 0 - } else { - 1 - } + if (!isAdult) { + where = where.and(audioContent.isAdult.isFalse) + } else { + if (contentType != ContentType.ALL) { + where = where.and( + audioContent.member.auth.isNull.or( + audioContent.member.auth.gender.eq( + if (contentType == ContentType.MALE) { + 0 + } else { + 1 + } + ) ) ) - ) + } } return queryFactory 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 e921c34..088fc7d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt @@ -189,11 +189,12 @@ class RankingService( fun fetchCreatorBySellContentCountRankTop20( memberId: Long, + isAdult: Boolean, contentType: ContentType, startDate: LocalDateTime, endDate: LocalDateTime ): List { - return repository.fetchCreatorBySellContentCountRankTop20(memberId, contentType, startDate, endDate) + return repository.fetchCreatorBySellContentCountRankTop20(memberId, isAdult, contentType, startDate, endDate) } fun fetchCreatorContentBySalesCountTop4( -- 2.40.1 From 13a1fa674bbaa8bfbb3f42e3dccfe85d0f7d4c6e Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 19 Mar 2025 14:26:03 +0900 Subject: [PATCH 2/6] =?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=9D=B8=EA=B8=B0=20=EB=8B=A8?= =?UTF-8?q?=ED=8E=B8=20-=2019=EA=B8=88=20=EC=BD=98=ED=85=90=EC=B8=A0=20?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EC=84=A4=EC=A0=95=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/content/AudioContentController.kt | 5 ++++- .../sodalive/content/AudioContentRepository.kt | 16 ++++++++++++++++ .../sodalive/content/AudioContentService.kt | 2 ++ .../content/AudioContentMainTabContentService.kt | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt index fafccf7..268e0d7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt @@ -175,6 +175,8 @@ class AudioContentController(private val service: AudioContentService) { @GetMapping("/ranking") fun getAudioContentRanking( @RequestParam("sort-type", required = false) sortType: String? = "매출", + @RequestParam("isAdultContentVisible", required = false) isAdultContentVisible: Boolean? = null, + @RequestParam("contentType", required = false) contentType: ContentType? = null, @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, pageable: Pageable ) = run { @@ -192,7 +194,8 @@ class AudioContentController(private val service: AudioContentService) { ApiResponse.ok( service.getAudioContentRanking( - isAdult = member.auth != null, + isAdult = member.auth != null && (isAdultContentVisible ?: true), + contentType = contentType ?: ContentType.ALL, startDate = startDate, endDate = endDate, offset = pageable.offset, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt index 1e785f2..35d858a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -140,6 +140,7 @@ interface AudioContentQueryRepository { fun getAudioContentRanking( cloudfrontHost: String, isAdult: Boolean, + contentType: ContentType, startDate: LocalDateTime, endDate: LocalDateTime, offset: Long = 0, @@ -922,6 +923,7 @@ class AudioContentQueryRepositoryImpl( override fun getAudioContentRanking( cloudfrontHost: String, isAdult: Boolean, + contentType: ContentType, startDate: LocalDateTime, endDate: LocalDateTime, offset: Long, @@ -938,6 +940,20 @@ class AudioContentQueryRepositoryImpl( if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) + } else { + if (contentType != ContentType.ALL) { + where = where.and( + audioContent.member.isNull.or( + audioContent.member.auth.gender.eq( + if (contentType == ContentType.MALE) { + 0 + } else { + 1 + } + ) + ) + ) + } } var select = queryFactory diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index db7db4c..cc458ba 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -759,6 +759,7 @@ class AudioContentService( ) fun getAudioContentRanking( isAdult: Boolean, + contentType: ContentType, startDate: LocalDateTime, endDate: LocalDateTime, offset: Long, @@ -774,6 +775,7 @@ class AudioContentService( startDate = startDate.minusDays(1), endDate = endDate.minusDays(1), isAdult = isAdult, + contentType = contentType, offset = offset, limit = limit, sortType = sortType 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 9d8fd17..09ce755 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 @@ -88,6 +88,7 @@ class AudioContentMainTabContentService( val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20( memberId = member.id!!, + isAdult = isAdult, contentType = contentType, startDate = dailyRankingStartDate, endDate = dailyRankingEndDate -- 2.40.1 From 1998a95c3564400be745f58fd253e988ad5b357a Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 19 Mar 2025 16:15:27 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EB=8B=A8=ED=8E=B8=20-=20=EC=9D=BC=EA=B0=84?= =?UTF-8?q?=EB=9E=AD=ED=82=B9=20-=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EA=B0=80?= =?UTF-8?q?=205=EA=B0=9C=20=EB=AF=B8=EB=A7=8C=EC=9D=B4=EB=A9=B4=205?= =?UTF-8?q?=EA=B0=9C=20=EC=9D=B4=EC=83=81=EC=9D=B4=20=EB=90=A0=20=EB=95=8C?= =?UTF-8?q?=EA=B9=8C=EC=A7=80=20=EB=9E=AD=ED=82=B9=20=EA=B3=84=EC=82=B0=20?= =?UTF-8?q?=EC=8B=9C=EC=9E=91=20=EB=82=A0=EC=A7=9C=EB=A5=BC=205=EC=9D=BC?= =?UTF-8?q?=EC=94=A9=20=EC=9D=B4=EC=A0=84=EC=9C=BC=EB=A1=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AudioContentMainTabContentService.kt | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 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 09ce755..3b8b03f 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 @@ -165,14 +165,24 @@ class AudioContentMainTabContentService( val dailyRankingEndDate = dailyRankingStartDate .plusDays(1) - return rankingService.getContentRanking( - memberId = memberId, - isAdult = isAdult, - contentType = contentType, - startDate = dailyRankingStartDate, - endDate = dailyRankingEndDate, - sortType = sortType - ) + var loopCount = 0 + var contentCount: Int + var contentList: List + + do { + contentList = rankingService.getContentRanking( + memberId = memberId, + isAdult = isAdult, + contentType = contentType, + startDate = dailyRankingStartDate.minusDays(loopCount * 5L), + endDate = dailyRankingEndDate, + sortType = sortType + ) + contentCount = contentList.size + loopCount++ + } while (contentCount < 5) + + return contentList } fun getNewContentByTheme( -- 2.40.1 From 46321dd3c100725cb51646f2919535da98f1bafd Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 19 Mar 2025 16:23:44 +0900 Subject: [PATCH 4/6] =?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=9D=B8=EA=B8=B0=20=EB=8B=A8?= =?UTF-8?q?=ED=8E=B8=20-=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EA=B0=80=205?= =?UTF-8?q?=EA=B0=9C=20=EB=AF=B8=EB=A7=8C=EC=9D=B4=EB=A9=B4=205=EA=B0=9C?= =?UTF-8?q?=20=EC=9D=B4=EC=83=81=EC=9D=B4=20=EB=90=A0=20=EB=95=8C=EA=B9=8C?= =?UTF-8?q?=EC=A7=80=20=EB=9E=AD=ED=82=B9=20=EA=B3=84=EC=82=B0=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91=20=EB=82=A0=EC=A7=9C=EB=A5=BC=201=EC=A3=BC=EC=9D=BC?= =?UTF-8?q?=20=EC=94=A9=20=EC=9D=B4=EC=A0=84=EC=9C=BC=EB=A1=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AudioContentMainTabContentService.kt | 4 +-- .../vividnext/sodalive/rank/RankingService.kt | 30 ++++++++++++------- 2 files changed, 20 insertions(+), 14 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 3b8b03f..b50db84 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 @@ -166,7 +166,6 @@ class AudioContentMainTabContentService( .plusDays(1) var loopCount = 0 - var contentCount: Int var contentList: List do { @@ -178,9 +177,8 @@ class AudioContentMainTabContentService( endDate = dailyRankingEndDate, sortType = sortType ) - contentCount = contentList.size loopCount++ - } while (contentCount < 5) + } while (contentList.size < 5) return contentList } 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 088fc7d..8f20009 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt @@ -49,17 +49,25 @@ class RankingService( sortType: String = "매출", theme: String = "" ): List { - return repository.getAudioContentRanking( - memberId = memberId, - isAdult = isAdult, - contentType = contentType, - startDate = startDate, - endDate = endDate, - offset = offset, - limit = limit, - sortType = sortType, - theme = theme - ) + var loopCount = 0L + var contentList: List + + do { + contentList = repository.getAudioContentRanking( + memberId = memberId, + isAdult = isAdult, + contentType = contentType, + startDate = startDate.minusWeeks(loopCount), + endDate = endDate, + offset = offset, + limit = limit, + sortType = sortType, + theme = theme + ) + loopCount++ + } while (contentList.size < 5) + + return contentList } fun getSeriesRanking( -- 2.40.1 From b7b166c362b96d7b50150616236154854b11e399 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 19 Mar 2025 16:27:55 +0900 Subject: [PATCH 5/6] =?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=9D=B8=EA=B8=B0=20=EC=8B=9C?= =?UTF-8?q?=EB=A6=AC=EC=A6=88=20-=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EA=B0=80?= =?UTF-8?q?=205=EA=B0=9C=20=EB=AF=B8=EB=A7=8C=EC=9D=B4=EB=A9=B4=205?= =?UTF-8?q?=EA=B0=9C=20=EC=9D=B4=EC=83=81=EC=9D=B4=20=EB=90=A0=20=EB=95=8C?= =?UTF-8?q?=EA=B9=8C=EC=A7=80=20=EB=9E=AD=ED=82=B9=20=EA=B3=84=EC=82=B0=20?= =?UTF-8?q?=EC=8B=9C=EC=9E=91=20=EB=82=A0=EC=A7=9C=EB=A5=BC=201=EC=A3=BC?= =?UTF-8?q?=EC=9D=BC=20=EC=94=A9=20=EC=9D=B4=EC=A0=84=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/rank/RankingService.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 8f20009..f826993 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt @@ -77,7 +77,20 @@ class RankingService( startDate: LocalDateTime, endDate: LocalDateTime ): List { - val seriesList = repository.getSeriesRanking(memberId, isAdult, contentType, startDate, endDate) + var loopCount = 0L + var seriesList: List + + do { + seriesList = repository.getSeriesRanking( + memberId = memberId, + isAdult = isAdult, + contentType = contentType, + startDate = startDate.minusWeeks(loopCount), + endDate = endDate + ) + loopCount++ + } while (seriesList.size < 5) + return seriesToSeriesListItem(seriesList = seriesList, isAdult = isAdult) } -- 2.40.1 From b1fb62dd651dcd699d0d9fe7cb80eec9dd3384d4 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 19 Mar 2025 16:45:31 +0900 Subject: [PATCH 6/6] =?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=9D=B8=EA=B8=B0=20=EC=8B=9C?= =?UTF-8?q?=EB=A6=AC=EC=A6=88,=20=EC=9D=B8=EA=B8=B0=20=EB=8B=A8=ED=8E=B8?= =?UTF-8?q?=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=A9=94=EC=9D=B8=20=EB=8B=A8?= =?UTF-8?q?=ED=8E=B8=20-=20=EB=9E=AD=ED=82=B9=20-=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=EC=97=90=20=EA=B3=84=EC=82=B0=EC=9D=80=20?= =?UTF-8?q?=EC=B5=9C=EB=8C=80=205=EB=B2=88=EA=B9=8C=EC=A7=80=EB=A7=8C=20?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/tab/content/AudioContentMainTabContentService.kt | 2 +- .../kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 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 b50db84..bce8884 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 @@ -178,7 +178,7 @@ class AudioContentMainTabContentService( sortType = sortType ) loopCount++ - } while (contentList.size < 5) + } while (contentList.size < 5 && loopCount < 5) return contentList } 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 f826993..8fcc42d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/rank/RankingService.kt @@ -65,7 +65,7 @@ class RankingService( theme = theme ) loopCount++ - } while (contentList.size < 5) + } while (contentList.size < 5 && loopCount < 5) return contentList } @@ -89,7 +89,7 @@ class RankingService( endDate = endDate ) loopCount++ - } while (seriesList.size < 5) + } while (seriesList.size < 5 && loopCount < 5) return seriesToSeriesListItem(seriesList = seriesList, isAdult = isAdult) } -- 2.40.1