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 249ec7e..6451801 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -113,7 +113,9 @@ interface AudioContentQueryRepository { fun findAudioContentByCurationIdV2( curationId: Long, memberId: Long, - isAdult: Boolean + isAdult: Boolean, + offset: Long = 0, + limit: Long = 20 ): List fun getAudioContentRanking( @@ -658,7 +660,9 @@ class AudioContentQueryRepositoryImpl( override fun findAudioContentByCurationIdV2( curationId: Long, memberId: Long, - isAdult: Boolean + isAdult: Boolean, + offset: Long, + limit: Long ): List { val blockMemberCondition = blockMember.member.id.eq(member.id) .and(blockMember.isActive.isTrue) @@ -696,6 +700,8 @@ class AudioContentQueryRepositoryImpl( .innerJoin(audioContent.member, member) .leftJoin(blockMember).on(blockMemberCondition) .where(where) + .offset(offset) + .limit(limit) .fetch() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationQueryRepository.kt index 28c6985..43bb72c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationQueryRepository.kt @@ -109,9 +109,7 @@ class AudioContentCurationQueryRepository(private val queryFactory: JPAQueryFact fun findByContentMainTabIdAndTitle( tabId: Long, title: String, - isAdult: Boolean, - offset: Long = 0, - limit: Long = 12 + isAdult: Boolean ): List { var where = audioContentCuration.isActive.isTrue .and(audioContentMainTab.id.eq(tabId)) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeController.kt index e588782..d92a08a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeController.kt @@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.content.main.tab.free import kr.co.vividnext.sodalive.common.ApiResponse import kr.co.vividnext.sodalive.common.SodaException import kr.co.vividnext.sodalive.member.Member +import org.springframework.data.domain.Pageable import org.springframework.security.core.annotation.AuthenticationPrincipal import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping @@ -19,4 +20,20 @@ class AudioContentMainTabFreeController(private val service: AudioContentMainTab ApiResponse.ok(service.fetchData(member)) } + + @GetMapping("/introduce-creator") + fun getIntroduceCreator( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, + pageable: Pageable + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok( + service.getIntroduceCreator( + member, + offset = pageable.offset, + limit = pageable.pageSize.toLong() + ) + ) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeService.kt index 8debfd6..49e1571 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeService.kt @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.content.main.tab.free import kr.co.vividnext.sodalive.content.AudioContentRepository import kr.co.vividnext.sodalive.content.ContentType +import kr.co.vividnext.sodalive.content.main.GetAudioContentMainItem 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 @@ -89,4 +90,27 @@ class AudioContentMainTabFreeService( curationList = curationList ) } + + fun getIntroduceCreator(member: Member, offset: Long, limit: Long): List { + val isAdult = member.auth != null + val memberId = member.id!! + + val introduceCreatorCuration = curationRepository.findByContentMainTabIdAndTitle( + tabId = 7L, + title = "크리에이터 소개", + isAdult = isAdult + ) + + return if (introduceCreatorCuration.isNotEmpty()) { + contentRepository.findAudioContentByCurationIdV2( + curationId = introduceCreatorCuration[0].id!!, + memberId = memberId, + isAdult = isAdult, + offset = offset, + limit = limit + ) + } else { + emptyList() + } + } }