From ba491420f5bac6cfb14a2a8cdc5b613d69600648 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 27 Sep 2023 15:37:14 +0900 Subject: [PATCH] =?UTF-8?q?=ED=81=90=EB=A0=88=EC=9D=B4=EC=85=98=20?= =?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EB=B3=B4=EA=B8=B0=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20JSON=20=ED=91=9C=ED=98=84=EB=B0=A9=EC=8B=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AudioContentCurationQueryRepository.kt | 23 ++++++++++-- .../curation/AudioContentCurationService.kt | 36 ++----------------- .../curation/GetCurationContentResponse.kt | 4 +-- 3 files changed, 25 insertions(+), 38 deletions(-) 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 fb82df9..7ec2739 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 @@ -1,9 +1,12 @@ package kr.co.vividnext.sodalive.content.main.curation import com.querydsl.jpa.impl.JPAQueryFactory -import kr.co.vividnext.sodalive.content.AudioContent import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.content.SortType +import kr.co.vividnext.sodalive.content.main.GetAudioContentMainItem +import kr.co.vividnext.sodalive.content.main.QGetAudioContentMainItem +import kr.co.vividnext.sodalive.content.theme.QAudioContentTheme.audioContentTheme +import kr.co.vividnext.sodalive.member.QMember.member import org.springframework.stereotype.Repository @Repository @@ -26,11 +29,12 @@ class AudioContentCurationQueryRepository(private val queryFactory: JPAQueryFact fun findByCurationId( curationId: Long, + cloudfrontHost: String, isAdult: Boolean = false, sortType: SortType = SortType.NEWEST, offset: Long = 0, limit: Long = 10 - ): List { + ): List { val orderBy = when (sortType) { SortType.NEWEST -> audioContent.createdAt.desc() SortType.PRICE_HIGH -> audioContent.price.desc() @@ -48,7 +52,20 @@ class AudioContentCurationQueryRepository(private val queryFactory: JPAQueryFact } return queryFactory - .selectFrom(audioContent) + .select( + QGetAudioContentMainItem( + audioContent.id, + audioContent.coverImage.prepend("/").prepend(cloudfrontHost), + audioContent.title, + audioContent.isAdult, + member.id, + member.profileImage.prepend("/").prepend(cloudfrontHost), + member.nickname + ) + ) + .from(audioContent) + .innerJoin(audioContent.member, member) + .innerJoin(audioContent.theme, audioContentTheme) .where(where) .offset(offset) .limit(limit) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationService.kt index a8511a9..a561df3 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCurationService.kt @@ -1,9 +1,6 @@ package kr.co.vividnext.sodalive.content.main.curation -import kr.co.vividnext.sodalive.content.GetAudioContentListItem import kr.co.vividnext.sodalive.content.SortType -import kr.co.vividnext.sodalive.content.comment.AudioContentCommentRepository -import kr.co.vividnext.sodalive.content.like.AudioContentLikeRepository import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.block.BlockMemberRepository import org.springframework.beans.factory.annotation.Value @@ -14,8 +11,6 @@ import org.springframework.stereotype.Service class AudioContentCurationService( private val repository: AudioContentCurationQueryRepository, private val blockMemberRepository: BlockMemberRepository, - private val commentRepository: AudioContentCommentRepository, - private val audioContentLikeRepository: AudioContentLikeRepository, @Value("\${cloud.aws.cloud-front.host}") private val cloudFrontHost: String @@ -30,44 +25,19 @@ class AudioContentCurationService( val audioContentList = repository.findByCurationId( curationId = curationId, + cloudfrontHost = cloudFrontHost, isAdult = member.auth != null, sortType = sortType, offset = pageable.offset, limit = pageable.pageSize.toLong() ) - - val items = audioContentList .asSequence() - .filter { content -> - !blockMemberRepository.isBlocked( - blockedMemberId = member.id!!, - memberId = content.member!!.id!! - ) - } - .map { - val commentCount = commentRepository - .totalCountCommentByContentId(it.id!!) - - val likeCount = audioContentLikeRepository - .totalCountAudioContentLike(it.id!!) - - GetAudioContentListItem( - contentId = it.id!!, - coverImageUrl = "$cloudFrontHost/${it.coverImage!!}", - title = it.title, - price = it.price, - themeStr = it.theme!!.theme, - duration = it.duration, - likeCount = likeCount, - commentCount = commentCount, - isAdult = it.isAdult - ) - } + .filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creatorId) } .toList() return GetCurationContentResponse( totalCount = totalCount, - items = items + items = audioContentList ) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/GetCurationContentResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/GetCurationContentResponse.kt index 3cad629..1a0ecc3 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/GetCurationContentResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/GetCurationContentResponse.kt @@ -1,8 +1,8 @@ package kr.co.vividnext.sodalive.content.main.curation -import kr.co.vividnext.sodalive.content.GetAudioContentListItem +import kr.co.vividnext.sodalive.content.main.GetAudioContentMainItem data class GetCurationContentResponse( val totalCount: Int, - val items: List + val items: List )