From b529d49e78e612a3e9ada75d668b7ee8d77f70b2 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 17 Feb 2025 20:22:57 +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=EC=95=8C=EB=9E=8C=20=ED=83=AD=20-=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EC=9A=B4=20=EC=95=8C=EB=9E=8C=20=EC=A0=84=EC=B2=B4?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20-=20=EC=A0=84=EC=B2=B4=20=EA=B0=9C?= =?UTF-8?q?=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/AudioContentRepository.kt | 39 +++++++++++++++++++ .../alarm/AudioContentMainTabAlarmService.kt | 14 +++++-- 2 files changed, 50 insertions(+), 3 deletions(-) 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 d0e30dc..22d289c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -81,6 +81,12 @@ interface AudioContentQueryRepository { limit: Long = 20 ): List + fun totalAlarmCountByTheme( + memberId: Long, + theme: List, + isAdult: Boolean = false + ): Int + fun totalCountByTheme( memberId: Long, theme: String = "", @@ -486,6 +492,39 @@ class AudioContentQueryRepositoryImpl( .fetch() } + override fun totalAlarmCountByTheme(memberId: Long, theme: List, isAdult: Boolean): Int { + val blockMemberCondition = blockMember.member.id.eq(member.id) + .and(blockMember.isActive.isTrue) + .and(blockMember.blockedMember.id.eq(memberId)) + + var where = audioContent.isActive.isTrue + .and(audioContent.duration.isNotNull) + .and( + audioContent.releaseDate.isNull + .or(audioContent.releaseDate.loe(LocalDateTime.now())) + .or(audioContent.member.id.eq(memberId)) + ) + .and(blockMember.id.isNull) + + if (!isAdult) { + where = where.and(audioContent.isAdult.isFalse) + } + + if (theme.isNotEmpty()) { + where = where.and(audioContentTheme.theme.`in`(theme)) + } + + return queryFactory + .select(audioContent.id) + .from(audioContent) + .innerJoin(audioContent.member, member) + .innerJoin(audioContent.theme, audioContentTheme) + .leftJoin(blockMember).on(blockMemberCondition) + .where(where) + .fetch() + .size + } + override fun totalCountByTheme(memberId: Long, theme: String, isAdult: Boolean, contentType: ContentType): Int { var where = audioContent.isActive.isTrue .and(audioContent.duration.isNotNull) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/alarm/AudioContentMainTabAlarmService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/alarm/AudioContentMainTabAlarmService.kt index bac8749..53e9eb2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/alarm/AudioContentMainTabAlarmService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/alarm/AudioContentMainTabAlarmService.kt @@ -1,7 +1,7 @@ package kr.co.vividnext.sodalive.content.main.tab.alarm import kr.co.vividnext.sodalive.content.AudioContentRepository -import kr.co.vividnext.sodalive.content.main.GetAudioContentMainItem +import kr.co.vividnext.sodalive.content.main.GetNewContentAllResponse import kr.co.vividnext.sodalive.content.main.banner.AudioContentBannerService import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationQueryRepository import kr.co.vividnext.sodalive.content.main.tab.GetContentCurationResponse @@ -86,7 +86,7 @@ class AudioContentMainTabAlarmService( member: Member, offset: Long, limit: Long - ): List { + ): GetNewContentAllResponse { val alarmThemeList = if (theme.isNotBlank()) { listOf(theme) } else { @@ -96,12 +96,20 @@ class AudioContentMainTabAlarmService( val memberId = member.id!! val isAdult = member.auth != null - return contentRepository.findAlarmContentByTheme( + val totalCount = contentRepository.totalAlarmCountByTheme( + memberId = memberId, + theme = alarmThemeList, + isAdult = isAdult + ) + + val items = contentRepository.findAlarmContentByTheme( memberId = memberId, theme = alarmThemeList, isAdult = isAdult, offset = offset, limit = limit ) + + return GetNewContentAllResponse(totalCount, items) } }