From da1c096b45465ab60bbc280b0c028f3abc41611b Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 29 Jan 2024 00:29:29 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20-=20=EA=B3=A0=EC=A0=95=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=EB=A5=BC=20=EB=82=98=ED=83=80=EB=82=B4=EB=8A=94=20?= =?UTF-8?q?=ED=94=8C=EB=9E=98=EA=B7=B8=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 | 22 ++++++++++++++++--- .../sodalive/content/AudioContentService.kt | 21 ++++++------------ .../content/GetAudioContentListResponse.kt | 9 +++++--- 3 files changed, 32 insertions(+), 20 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 cad5cbe..654d2ea 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -34,11 +34,12 @@ interface AudioContentQueryRepository { fun findBundleByContentId(contentId: Long): List fun findByCreatorId( creatorId: Long, + coverImageHost: String, isAdult: Boolean = false, sortType: SortType = SortType.NEWEST, offset: Long = 0, limit: Long = 10 - ): List + ): List fun findTotalCountByCreatorId(creatorId: Long, isAdult: Boolean = false): Int fun getCreatorOtherContentList( @@ -140,11 +141,12 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) override fun findByCreatorId( creatorId: Long, + coverImageHost: String, isAdult: Boolean, sortType: SortType, offset: Long, limit: Long - ): List { + ): List { val orderBy = when (sortType) { SortType.NEWEST -> audioContent.releaseDate.desc() SortType.PRICE_HIGH -> audioContent.price.desc() @@ -162,7 +164,21 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) } return queryFactory - .select(audioContent) + .select( + QGetAudioContentListItem( + audioContent.id, + audioContent.coverImage.prepend(coverImageHost), + audioContent.title, + audioContent.price, + audioContent.theme.theme, + audioContent.duration, + Expressions.constant(0), + Expressions.constant(0), + pinContent.id.isNotNull, + audioContent.isAdult, + audioContent.releaseDate.gt(LocalDateTime.now()) + ) + ) .from(audioContent) .leftJoin(pinContent) .on(audioContent.id.eq(pinContent.content.id).and(pinContent.isActive.ne(false))) 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 d427927..31b0081 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -627,6 +627,7 @@ class AudioContentService( val audioContentList = repository.findByCreatorId( creatorId = creatorId, + coverImageHost = coverImageHost, isAdult = member.auth != null, sortType = sortType, offset = offset, @@ -636,23 +637,15 @@ class AudioContentService( val items = audioContentList .map { val commentCount = commentRepository - .totalCountCommentByContentId(it.id!!) + .totalCountCommentByContentId(it.contentId) val likeCount = audioContentLikeRepository - .totalCountAudioContentLike(it.id!!) + .totalCountAudioContentLike(it.contentId) - GetAudioContentListItem( - contentId = it.id!!, - coverImageUrl = "$coverImageHost/${it.coverImage!!}", - title = it.title, - price = it.price, - themeStr = it.theme!!.theme, - duration = it.duration, - likeCount = likeCount, - commentCount = commentCount, - isAdult = it.isAdult, - isScheduledToOpen = it.releaseDate != null && it.releaseDate!! > LocalDateTime.now() - ) + it.likeCount = likeCount + it.commentCount = commentCount + + it } return GetAudioContentListResponse( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentListResponse.kt index 2986176..b4f304d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentListResponse.kt @@ -1,19 +1,22 @@ package kr.co.vividnext.sodalive.content +import com.querydsl.core.annotations.QueryProjection + data class GetAudioContentListResponse( val totalCount: Int, val items: List ) -data class GetAudioContentListItem( +data class GetAudioContentListItem @QueryProjection constructor( val contentId: Long, val coverImageUrl: String, val title: String, val price: Int, val themeStr: String, val duration: String?, - val likeCount: Int, - val commentCount: Int, + var likeCount: Int = 0, + var commentCount: Int = 0, + val isPin: Boolean, val isAdult: Boolean, val isScheduledToOpen: Boolean )