From 23b3e6cdce92cf5df921eebaa4034fae00c41c3d Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 3 Feb 2025 11:26:02 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=ED=81=90?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=95=84=EC=9D=B4=ED=85=9C=20-?= =?UTF-8?q?=20=EC=8B=9C=EB=A6=AC=EC=A6=88,=20=EC=BD=98=ED=85=90=EC=B8=A0?= =?UTF-8?q?=20=ED=81=90=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=ED=85=9C=20=EB=B6=88=EB=9F=AC=EC=98=A4=EA=B8=B0=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminContentCurationItemRepository.kt | 60 ++++++++++++++++++- .../AdminContentCurationRepository.kt | 33 ---------- .../curation/AdminContentCurationService.kt | 11 +++- 3 files changed, 68 insertions(+), 36 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt index bcfe675..28bcc4d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt @@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationItem import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series +import org.springframework.beans.factory.annotation.Value import org.springframework.data.jpa.repository.JpaRepository interface AdminContentCurationItemRepository : @@ -15,10 +16,16 @@ interface AdminContentCurationItemRepository : interface AdminContentCurationItemQueryRepository { fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? fun findByCurationIdAndContentId(curationId: Long, contentId: Long?): AudioContentCurationItem? + fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? + fun getAudioContentCurationItemList(curationId: Long): List + fun getAudioContentCurationSeriesItemList(curationId: Long): List } class AdminContentCurationItemQueryRepositoryImpl( - val queryFactory: JPAQueryFactory + val queryFactory: JPAQueryFactory, + + @Value("\${cloud.aws.cloud-front.host}") + private val imageHost: String ) : AdminContentCurationItemQueryRepository { override fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? { return queryFactory @@ -43,4 +50,55 @@ class AdminContentCurationItemQueryRepositoryImpl( ) .fetchFirst() } + + override fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? { + return queryFactory.selectFrom(audioContentCurationItem) + .innerJoin(audioContentCurationItem.curation, audioContentCuration) + .where(audioContentCuration.id.eq(curationId), audioContentCurationItem.id.eq(itemId)) + .fetchFirst() + } + + override fun getAudioContentCurationItemList(curationId: Long): List { + return queryFactory + .select( + QGetCurationItemResponse( + audioContentCurationItem.id, + audioContent.title, + audioContent.detail, + audioContent.coverImage.prepend("/").prepend(imageHost), + audioContent.member.nickname.coalesce(""), + audioContent.isAdult + ) + ) + .from(audioContentCurationItem) + .innerJoin(audioContentCurationItem.curation, audioContentCuration) + .innerJoin(audioContentCurationItem.content, audioContent) + .where( + audioContentCuration.id.eq(curationId), + audioContentCurationItem.isActive.isTrue + ) + .fetch() + } + + override fun getAudioContentCurationSeriesItemList(curationId: Long): List { + return queryFactory + .select( + QGetCurationItemResponse( + audioContentCurationItem.id, + series.title, + series.introduction, + series.coverImage.prepend("/").prepend(imageHost), + series.member.nickname.coalesce(""), + series.isAdult + ) + ) + .from(audioContentCurationItem) + .innerJoin(audioContentCurationItem.curation, audioContentCuration) + .innerJoin(audioContentCurationItem.series, series) + .where( + audioContentCuration.id.eq(curationId), + audioContentCurationItem.isActive.isTrue + ) + .fetch() + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationRepository.kt index d0277eb..c010b03 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationRepository.kt @@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.admin.content.curation import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration -import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationItem import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem import kr.co.vividnext.sodalive.content.main.tab.QAudioContentMainTab.audioContentMainTab @@ -20,8 +19,6 @@ interface AdminContentCurationRepository : interface AdminContentCurationQueryRepository { fun getAudioContentCurationList(tabId: Long): List fun findByIdAndActive(id: Long): AudioContentCuration? - fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? - fun getAudioContentCurationItemList(curationId: Long): List fun searchCurationContentItem(curationId: Long, searchWord: String): List fun searchCurationSeriesItem(curationId: Long, searchWord: String): List } @@ -65,36 +62,6 @@ class AdminContentCurationQueryRepositoryImpl( .fetchFirst() } - override fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? { - return queryFactory.selectFrom(audioContentCurationItem) - .innerJoin(audioContentCurationItem.curation, audioContentCuration) - .where(audioContentCuration.id.eq(curationId), audioContentCurationItem.id.eq(itemId)) - .fetchFirst() - } - - override fun getAudioContentCurationItemList(curationId: Long): List { - return queryFactory - .select( - QGetCurationItemResponse( - audioContentCurationItem.id, - audioContent.title.coalesce(series.title), - audioContent.detail.coalesce(series.introduction), - audioContent.coverImage.coalesce(series.coverImage).prepend("/").prepend(imageHost), - audioContent.member.nickname.coalesce(series.member.nickname).coalesce(""), - audioContent.isAdult.coalesce(series.isAdult) - ) - ) - .from(audioContentCurationItem) - .innerJoin(audioContentCurationItem.curation, audioContentCuration) - .leftJoin(audioContentCurationItem.series, series) - .leftJoin(audioContentCurationItem.content, audioContent) - .where( - audioContentCuration.id.eq(curationId), - audioContentCurationItem.isActive.isTrue - ) - .fetch() - } - override fun searchCurationContentItem( curationId: Long, searchWord: String diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt index 7135e27..2d3427a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt @@ -84,7 +84,14 @@ class AdminContentCurationService( } fun getCurationItem(curationId: Long): List { - return repository.getAudioContentCurationItemList(curationId) + val curation = repository.findByIdOrNull(curationId) + ?: throw SodaException("잘못된 요청입니다.") + + return if (curation.isSeries) { + contentCurationItemRepository.getAudioContentCurationSeriesItemList(curationId) + } else { + contentCurationItemRepository.getAudioContentCurationItemList(curationId) + } } fun searchCurationContentItem(curationId: Long, searchWord: String): List { @@ -136,7 +143,7 @@ class AdminContentCurationService( @Transactional fun removeItemInCuration(request: RemoveItemInCurationRequest) { - val audioContentCurationItem = repository.findByCurationIdAndItemId( + val audioContentCurationItem = contentCurationItemRepository.findByCurationIdAndItemId( curationId = request.curationId, itemId = request.itemId ) From 09df1eb896a3d694d0e0de821ef9d52ca9f566c0 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 3 Feb 2025 15:23:06 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=ED=81=90?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=95=84=EC=9D=B4=ED=85=9C=20-?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20-=20Post=20->=20Put=20=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/content/curation/AdminContentCurationController.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt index e065e62..3bbe3ed 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt @@ -56,7 +56,7 @@ class AdminContentCurationController(private val service: AdminContentCurationSe @RequestBody request: AddItemToCurationRequest ) = ApiResponse.ok(service.addItemToCuration(request), "큐레이션 아이템을 등록했습니다.") - @PostMapping("/remove/item") + @PutMapping("/remove/item") fun removeItemInCuration( @RequestBody request: RemoveItemInCurationRequest ) = ApiResponse.ok(service.removeItemInCuration(request), "큐레이션 아이템을 제거했습니다.") From 3e4bfef14e577d19c106257f9348eb7f44f14678 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 3 Feb 2025 16:15:27 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=EC=95=8C=EB=A6=BC=EC=84=A4=EC=A0=95=20-=20?= =?UTF-8?q?=EC=B2=98=EC=9D=8C=EC=97=90=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=8B=9C=20null=EC=9D=B4=20=EB=93=A4?= =?UTF-8?q?=EC=96=B4=EC=98=A4=EB=A9=B4=20false=EB=A1=9C=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/notification/MemberNotificationService.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/notification/MemberNotificationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/notification/MemberNotificationService.kt index db023e8..44dc8f3 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/notification/MemberNotificationService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/notification/MemberNotificationService.kt @@ -15,10 +15,10 @@ class MemberNotificationService(private val repository: MemberNotificationReposi var notification = repository.getMemberNotification(memberId = member.id!!) if (notification == null) { notification = MemberNotification( - uploadContent = uploadContent, - live = live, - message = message, - audition = audition + uploadContent = uploadContent ?: false, + live = live ?: false, + message = message ?: false, + audition = audition ?: false ) notification.member = member repository.save(notification)