From d89122802a1be6a5a038fc8ffc73742dbcfcdb2a Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 19 Nov 2025 17:45:46 +0900 Subject: [PATCH] =?UTF-8?q?fix(series):=20=EC=8B=9C=EB=A6=AC=EC=A6=88=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EB=9E=9C=EB=8D=A4=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC=EB=A1=9C=20=EC=A1=B0=ED=9A=8C=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8F=84=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vividnext/sodalive/api/home/HomeService.kt | 3 ++- .../content/series/ContentSeriesRepository.kt | 16 ++++++++++++++-- .../content/series/ContentSeriesService.kt | 5 ++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/api/home/HomeService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/api/home/HomeService.kt index c934c91..d66d1f8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/api/home/HomeService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/api/home/HomeService.kt @@ -124,7 +124,8 @@ class HomeService( val originalAudioDramaList = seriesService.getOriginalAudioDramaList( isAdult = isAdult, - contentType = contentType + contentType = contentType, + orderByRandom = true ) val auditionList = auditionService.getInProgressAuditionList(isAdult = isAdult) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt index bb74ddc..a1e682a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt @@ -39,6 +39,7 @@ interface ContentSeriesQueryRepository { contentType: ContentType, isOriginal: Boolean, isCompleted: Boolean, + orderByRandom: Boolean, offset: Long, limit: Long ): List @@ -65,6 +66,7 @@ interface ContentSeriesQueryRepository { fun getOriginalAudioDramaList( isAdult: Boolean, contentType: ContentType, + orderByRandom: Boolean = false, offset: Long = 0, limit: Long = 20 ): List @@ -139,6 +141,7 @@ class ContentSeriesQueryRepositoryImpl( contentType: ContentType, isOriginal: Boolean, isCompleted: Boolean, + orderByRandom: Boolean, offset: Long, limit: Long ): List { @@ -173,7 +176,9 @@ class ContentSeriesQueryRepositoryImpl( } } - val orderBy = if (creatorId != null) { + val orderBy = if (orderByRandom) { + listOf(Expressions.numberTemplate(Double::class.java, "function('rand')").asc()) + } else if (creatorId != null) { listOf(series.orders.asc(), series.createdAt.asc()) } else { listOf(audioContent.releaseDate.max().desc(), series.createdAt.asc()) @@ -362,6 +367,7 @@ class ContentSeriesQueryRepositoryImpl( override fun getOriginalAudioDramaList( isAdult: Boolean, contentType: ContentType, + orderByRandom: Boolean, offset: Long, limit: Long ): List { @@ -390,7 +396,13 @@ class ContentSeriesQueryRepositoryImpl( .selectFrom(series) .innerJoin(series.member, member) .where(where) - .orderBy(series.id.desc()) + .orderBy( + if (orderByRandom) { + Expressions.numberTemplate(Double::class.java, "function('rand')").asc() + } else { + series.id.desc() + } + ) .offset(offset) .limit(limit) .fetch() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt index cfde3f0..3a2cc9b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt @@ -37,10 +37,11 @@ class ContentSeriesService( fun getOriginalAudioDramaList( isAdult: Boolean, contentType: ContentType, + orderByRandom: Boolean = false, offset: Long = 0, limit: Long = 20 ): List { - val originalAudioDramaList = repository.getOriginalAudioDramaList(isAdult, contentType, offset, limit) + val originalAudioDramaList = repository.getOriginalAudioDramaList(isAdult, contentType, orderByRandom, offset, limit) return seriesToSeriesListItem(originalAudioDramaList, isAdult, contentType) } @@ -52,6 +53,7 @@ class ContentSeriesService( creatorId: Long?, isOriginal: Boolean = false, isCompleted: Boolean = false, + orderByRandom: Boolean = false, isAdultContentVisible: Boolean, contentType: ContentType, member: Member, @@ -75,6 +77,7 @@ class ContentSeriesService( contentType = contentType, isOriginal = isOriginal, isCompleted = isCompleted, + orderByRandom = orderByRandom, offset = offset, limit = limit ).filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.member!!.id!!) }