From eab7dc4521c8ed4ba2c8f12081608d969915b2c1 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 10 Nov 2025 12:14:24 +0900 Subject: [PATCH] =?UTF-8?q?feat(home-free-content):=20=EC=B5=9C=EC=8B=A0?= =?UTF-8?q?=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=A1=B0=ED=9A=8C=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20getLatestContentByTheme=EC=97=90=20orderbyRandom=20?= =?UTF-8?q?flag=EB=A5=BC=20=EC=B6=94=EA=B0=80=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EB=9E=9C=EB=8D=A4=EC=9C=BC=EB=A1=9C=20=EC=A0=95=EB=A0=AC?= =?UTF-8?q?=ED=95=9C=20=ED=9B=84=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=AC=20=EC=88=98=20=EC=9E=88=EB=8F=84?= =?UTF-8?q?=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 --- .../co/vividnext/sodalive/api/home/HomeService.kt | 3 ++- .../sodalive/content/AudioContentRepository.kt | 14 +++++++++++--- .../sodalive/content/AudioContentService.kt | 6 ++++-- 3 files changed, 17 insertions(+), 6 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 5d66fe5..096ac98 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 @@ -165,7 +165,8 @@ class HomeService( ), contentType = contentType, isFree = true, - isAdult = isAdult + isAdult = isAdult, + orderByRandom = true ).filter { if (memberId != null) { !memberService.isBlocked(blockedMemberId = memberId, memberId = it.creatorId) 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 66abb79..64d294e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -183,7 +183,8 @@ interface AudioContentQueryRepository { offset: Long, limit: Long, isFree: Boolean, - isAdult: Boolean + isAdult: Boolean, + orderByRandom: Boolean = false ): List fun findContentByCurationId( @@ -1308,7 +1309,8 @@ class AudioContentQueryRepositoryImpl( offset: Long, limit: Long, isFree: Boolean, - isAdult: Boolean + isAdult: Boolean, + orderByRandom: Boolean ): List { var where = audioContent.isActive.isTrue .and(audioContent.duration.isNotNull) @@ -1343,6 +1345,12 @@ class AudioContentQueryRepositoryImpl( where = where.and(audioContent.price.loe(0)) } + val orderBy = if (orderByRandom) { + Expressions.numberTemplate(Double::class.java, "function('rand')").asc() + } else { + audioContent.releaseDate.desc() + } + return queryFactory .select( QAudioContentMainItem( @@ -1360,7 +1368,7 @@ class AudioContentQueryRepositoryImpl( .where(where) .offset(offset) .limit(limit) - .orderBy(audioContent.releaseDate.desc()) + .orderBy(orderBy) .fetch() } 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 3a9e3a3..a5c4c79 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -989,7 +989,8 @@ class AudioContentService( offset: Long = 0, limit: Long = 20, isFree: Boolean = false, - isAdult: Boolean = false + isAdult: Boolean = false, + orderByRandom: Boolean = false ): List { return repository.getLatestContentByTheme( theme = theme, @@ -997,7 +998,8 @@ class AudioContentService( offset = offset, limit = limit, isFree = isFree, - isAdult = isAdult + isAdult = isAdult, + orderByRandom = orderByRandom ) } }