From 443818efb5d3845fbd4d4cbea394d5c63b391e03 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 27 Jan 2024 00:03:34 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20-=20=EC=83=81=EB=8B=A8=EC=97=90=20=EA=B3=A0?= =?UTF-8?q?=EC=A0=95=20=EC=83=81=ED=83=9C,=20=EA=B3=A0=EC=A0=95=EC=9D=B4?= =?UTF-8?q?=20=EA=B0=80=EB=8A=A5=ED=95=9C=20=EC=83=81=ED=83=9C=20=EC=9D=B8?= =?UTF-8?q?=EC=A7=80=20=ED=8C=90=EB=8B=A8=ED=95=98=EB=8A=94=20=ED=94=8C?= =?UTF-8?q?=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 --- .../sodalive/content/AudioContentService.kt | 21 +++++++++++++++++++ .../content/GetAudioContentDetailResponse.kt | 2 ++ .../content/pin/PinContentRepository.kt | 17 +++++++++------ 3 files changed, 34 insertions(+), 6 deletions(-) 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 7d5e387..d44439b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -554,6 +554,25 @@ class AudioContentService( null } + val pinContent = pinContentRepository.findByContentIdAndMemberId( + contentId = id, + memberId = member.id!!, + active = true + ) + + val isPin = if (member.id!! == audioContent.member!!.id!!) { + pinContent != null + } else { + false + } + + val pinContentListCount = pinContentRepository.getPinContentList(memberId = member.id!!).size + val isAvailablePin = if (member.id!! == audioContent.member!!.id!!) { + pinContentListCount < 3 + } else { + false + } + return GetAudioContentDetailResponse( contentId = audioContent.id!!, title = audioContent.title, @@ -579,6 +598,8 @@ class AudioContentService( likeCount = likeCount, commentList = commentList, commentCount = commentCount, + isPin = isPin, + isAvailablePin = isAvailablePin, creator = AudioContentCreator( creatorId = creatorId, nickname = creator.nickname, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt index ed377b6..0049565 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt @@ -29,6 +29,8 @@ data class GetAudioContentDetailResponse( val likeCount: Int, val commentList: List, val commentCount: Int, + val isPin: Boolean, + val isAvailablePin: Boolean, val creator: AudioContentCreator ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/pin/PinContentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/pin/PinContentRepository.kt index a33f642..9b089e2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/pin/PinContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/pin/PinContentRepository.kt @@ -9,7 +9,7 @@ interface PinContentRepository : JpaRepository, PinContentQuer interface PinContentQueryRepository { fun getPinContentList(memberId: Long): List - fun findByContentIdAndMemberId(contentId: Long, memberId: Long): PinContent? + fun findByContentIdAndMemberId(contentId: Long, memberId: Long, active: Boolean? = null): PinContent? } class PinContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : PinContentQueryRepository { @@ -21,13 +21,18 @@ class PinContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : .fetch() } - override fun findByContentIdAndMemberId(contentId: Long, memberId: Long): PinContent? { + override fun findByContentIdAndMemberId(contentId: Long, memberId: Long, active: Boolean?): PinContent? { + var where = pinContent.content.id.eq(contentId) + .and(pinContent.member.id.eq(memberId)) + + if (active != null) { + where = where + .and(pinContent.isActive.eq(active)) + } + return queryFactory .selectFrom(pinContent) - .where( - pinContent.content.id.eq(contentId) - .and(pinContent.member.id.eq(memberId)) - ) + .where(where) .fetchFirst() } }