From 04c682fc9bedde8125cb0c2eb9f8436fb626b30b Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 20 Oct 2023 18:25:42 +0900 Subject: [PATCH 01/10] =?UTF-8?q?=EB=8C=80=EC=97=AC=EA=B8=B0=EA=B0=84=20-?= =?UTF-8?q?=2015=EC=9D=BC=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 --- src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt index 5e0da19..9458436 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt @@ -52,7 +52,7 @@ data class Order( override fun prePersist() { super.prePersist() if (type == OrderType.RENTAL) { - endDate = startDate.plusDays(7) + endDate = startDate.plusDays(15) } } } -- 2.40.1 From 487d3c9d6ec8ba44e58c980b13434253ee5b79cf Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 20 Oct 2023 22:10:18 +0900 Subject: [PATCH 02/10] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20Response=20-=20isOnlyRental(=EB=8C=80=EC=97=AC?= =?UTF-8?q?=EB=A7=8C=20=EA=B0=80=EB=8A=A5)=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt | 1 + .../kr/co/vividnext/sodalive/content/AudioContentService.kt | 1 + .../vividnext/sodalive/content/GetAudioContentDetailResponse.kt | 1 + 3 files changed, 3 insertions(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt index 2a622f0..a1f5c15 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt @@ -35,6 +35,7 @@ data class AudioContent( @Enumerated(value = EnumType.STRING) val type: AudioContentType = AudioContentType.INDIVIDUAL, val isGeneratePreview: Boolean = true, + var isOnlyRental: Boolean = false, var isAdult: Boolean = false, var isCommentAvailable: Boolean = true ) : BaseEntity() { 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 45984ac..3f2ae6f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -486,6 +486,7 @@ class AudioContentService( duration = audioContent.duration ?: "", isAdult = audioContent.isAdult, isMosaic = audioContent.isAdult && member.auth == null, + isOnlyRental = audioContent.isOnlyRental, existOrdered = isExistsBundleAudioContent || isExistsAudioContent, orderType = orderType, remainingTime = remainingTime, 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 0c5f3e9..8d0c468 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/GetAudioContentDetailResponse.kt @@ -16,6 +16,7 @@ data class GetAudioContentDetailResponse( val duration: String, val isAdult: Boolean, val isMosaic: Boolean, + val isOnlyRental: Boolean, val existOrdered: Boolean, val orderType: OrderType?, val remainingTime: String?, -- 2.40.1 From c43faef14e340c4c6a35d3ea4660a9e2c7323186 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 20 Oct 2023 23:05:12 +0900 Subject: [PATCH 03/10] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EA=B5=AC?= =?UTF-8?q?=EB=A7=A4=20-=20=EB=8C=80=EC=97=AC=EB=A7=8C=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=9C=20=EA=B2=BD=EC=9A=B0=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=EB=90=9C=20=EA=B8=88=EC=95=A1=EC=9D=98=20100%=EB=A5=BC=20?= =?UTF-8?q?=EA=B2=B0=EC=A0=9C=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kr/co/vividnext/sodalive/content/order/Order.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt index 9458436..be6d76a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/order/Order.kt @@ -41,8 +41,8 @@ data class Order( @JoinColumn(name = "content_id", nullable = false) var audioContent: AudioContent? = null set(value) { - can = if (type == OrderType.RENTAL) { - ceil(value?.price!! * 0.6).toInt() + can = if (type == OrderType.RENTAL && !value?.isOnlyRental!!) { + ceil(value.price * 0.6).toInt() } else { value?.price!! } -- 2.40.1 From f45c6c7938c0450aa6fa072fc23a8736d884018a Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 20 Oct 2023 23:55:50 +0900 Subject: [PATCH 04/10] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20-=20=EB=8C=80=EC=97=AC=EB=A7=8C=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=98=EA=B2=8C=20=EB=93=B1=EB=A1=9D=ED=95=A0=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=86=8D=EC=84=B1=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/content/AudioContentService.kt | 1 + .../co/vividnext/sodalive/content/CreateAudioContentRequest.kt | 1 + 2 files changed, 2 insertions(+) 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 3f2ae6f..ea50196 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -176,6 +176,7 @@ class AudioContentService( } else { false }, + isOnlyRental = request.isOnlyRental, isCommentAvailable = request.isCommentAvailable ) audioContent.theme = theme diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/CreateAudioContentRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/CreateAudioContentRequest.kt index cab17ae..619b27f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/CreateAudioContentRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/CreateAudioContentRequest.kt @@ -8,6 +8,7 @@ data class CreateAudioContentRequest( val themeId: Long = 0, val isAdult: Boolean = false, val isGeneratePreview: Boolean = true, + val isOnlyRental: Boolean = false, val isCommentAvailable: Boolean = false, val type: AudioContentType = AudioContentType.INDIVIDUAL, val childIds: List? = null, -- 2.40.1 From 9a7e76ea7a3518bd7ca45e231c5f3b31235eadb5 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sun, 22 Oct 2023 19:50:59 +0900 Subject: [PATCH 05/10] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20-=20API=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/AudioContentRepository.kt | 27 ++- .../main/AudioContentMainController.kt | 52 ++++++ .../content/main/AudioContentMainService.kt | 155 ++++++++++++++++++ 3 files changed, 230 insertions(+), 4 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 c5df5c2..42371c7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -78,6 +78,9 @@ interface AudioContentQueryRepository { fun getAudioContentMainBannerList(isAdult: Boolean): List fun getAudioContentCurations(isAdult: Boolean): List + + fun getAudioContentCurationList(isAdult: Boolean, offset: Long = 0, limit: Long = 10): List + fun findAudioContentByCurationId( curationId: Long, cloudfrontHost: String, @@ -337,10 +340,6 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) .fetch() } - @Cacheable( - value = ["getNewContentUploadCreatorList"], - cacheManager = "cacheManager" - ) override fun getNewContentUploadCreatorList( cloudfrontHost: String, isAdult: Boolean @@ -410,6 +409,26 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) .fetch() } + override fun getAudioContentCurationList( + isAdult: Boolean, + offset: Long, + limit: Long + ): List { + var where = audioContentCuration.isActive.isTrue + + if (!isAdult) { + where = where.and(audioContentCuration.isAdult.isFalse) + } + + return queryFactory + .selectFrom(audioContentCuration) + .where(where) + .orderBy(audioContentCuration.orders.asc()) + .offset(offset) + .limit(limit) + .fetch() + } + override fun findAudioContentByCurationId( curationId: Long, cloudfrontHost: String, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt index 41cee69..df51a73 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt @@ -23,6 +23,33 @@ class AudioContentMainController(private val service: AudioContentMainService) { ApiResponse.ok(service.getMain(member = member)) } + @GetMapping("/new-content-upload-creator") + fun getNewContentUploadCreatorList( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getNewContentUploadCreatorList(member = member)) + } + + @GetMapping("/banner-list") + fun getAudioContentMainBannerList( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getAudioContentMainBannerList(member = member)) + } + + @GetMapping("/order-list") + fun getAudioContentMainOrderList( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getAudioContentMainOrderList(member = member)) + } + @GetMapping("/new") fun getNewContentByTheme( @RequestParam("theme") theme: String, @@ -53,4 +80,29 @@ class AudioContentMainController(private val service: AudioContentMainService) { ApiResponse.ok(service.getNewContentFor2WeeksByTheme(theme, member, pageable)) } + + @GetMapping("/curation-list") + fun getAudioContentMainCurationList( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, + pageable: Pageable + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok( + service.getAudioContentMainCurationList( + member, + offset = pageable.offset, + limit = pageable.pageSize.toLong() + ) + ) + } + + @GetMapping("/content-ranking") + fun getAudioContentMainContentRanking( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getAudioContentMainContentRanking(member)) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt index 5b6b050..159b661 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt @@ -10,6 +10,7 @@ import kr.co.vividnext.sodalive.event.EventItem import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.block.BlockMemberRepository import org.springframework.beans.factory.annotation.Value +import org.springframework.cache.annotation.Cacheable import org.springframework.data.domain.Pageable import org.springframework.stereotype.Service import java.time.DayOfWeek @@ -168,6 +169,87 @@ class AudioContentMainService( ) } + @Cacheable( + value = ["getNewContentUploadCreatorList"], + cacheManager = "cacheManager" + ) + fun getNewContentUploadCreatorList(member: Member): List { + val isAdult = member.auth != null + + // 2주일 이내에 콘텐츠를 올린 크리에이터 20명 조회 + return repository.getNewContentUploadCreatorList( + cloudfrontHost = imageHost, + isAdult = isAdult + ) + .asSequence() + .filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creatorId) } + .toList() + } + + @Cacheable( + value = ["getAudioContentMainBannerList"], + cacheManager = "cacheManager" + ) + fun getAudioContentMainBannerList(member: Member): List { + val isAdult = member.auth != null + + return repository + .getAudioContentMainBannerList(isAdult = isAdult) + .asSequence() + .filter { + if (it.type == AudioContentBannerType.CREATOR && it.creator != null) { + !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creator!!.id!!) + } else { + true + } + } + .map { + GetAudioContentBannerResponse( + type = it.type, + thumbnailImageUrl = "$imageHost/${it.thumbnailImage}", + eventItem = if (it.type == AudioContentBannerType.EVENT && it.event != null) { + EventItem( + id = it.event!!.id!!, + thumbnailImageUrl = if (!it.event!!.thumbnailImage.startsWith("https://")) { + "$imageHost/${it.event!!.thumbnailImage}" + } else { + it.event!!.thumbnailImage + }, + detailImageUrl = if ( + it.event!!.detailImage != null && + !it.event!!.detailImage!!.startsWith("https://") + ) { + "$imageHost/${it.event!!.detailImage}" + } else { + it.event!!.detailImage + }, + popupImageUrl = null, + link = it.event!!.link, + title = it.event!!.title, + isPopup = false + ) + } else { + null + }, + creatorId = if (it.type == AudioContentBannerType.CREATOR && it.creator != null) { + it.creator!!.id + } else { + null + }, + link = it.link + ) + } + .toList() + } + + fun getAudioContentMainOrderList(member: Member): List { + return orderService + .getAudioContentMainOrderList( + member = member, + limit = 20 + ) + } + fun getThemeList(member: Member): List { return audioContentThemeRepository.getActiveThemeOfContent(isAdult = member.auth != null) } @@ -197,4 +279,77 @@ class AudioContentMainService( return GetNewContentAllResponse(totalCount, items) } + + @Cacheable( + value = ["getAudioContentMainCurationList"], + cacheManager = "cacheManager" + ) + fun getAudioContentMainCurationList( + member: Member, + offset: Long, + limit: Long + ): List { + val isAdult = member.auth != null + + return repository + .getAudioContentCurationList( + isAdult = isAdult, + offset = offset, + limit = limit + ) + .asSequence() + .map { + GetAudioContentCurationResponse( + curationId = it.id!!, + title = it.title, + description = it.description, + contents = repository.findAudioContentByCurationId( + curationId = it.id!!, + cloudfrontHost = imageHost, + isAdult = isAdult + ) + .asSequence() + .filter { content -> + !blockMemberRepository.isBlocked( + blockedMemberId = member.id!!, + memberId = content.creatorId + ) + } + .toList() + ) + } + .filter { it.contents.isNotEmpty() } + .toList() + } + + fun getAudioContentMainContentRanking(member: Member): GetAudioContentRanking { + val isAdult = member.auth != null + + val currentDateTime = LocalDateTime.now() + val startDate = currentDateTime + .minusWeeks(1) + .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)) + .withHour(15) + .withMinute(0) + .withSecond(0) + val endDate = startDate + .plusDays(7) + + val startDateFormatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일") + val endDateFormatter = DateTimeFormatter.ofPattern("MM월 dd일") + + val contentRankingItemList = repository + .getAudioContentRanking( + cloudfrontHost = imageHost, + startDate = startDate.minusDays(1), + endDate = endDate.minusDays(1), + isAdult = isAdult + ) + + return GetAudioContentRanking( + startDate = startDate.format(startDateFormatter), + endDate = endDate.minusDays(1).format(endDateFormatter), + contentRankingItemList + ) + } } -- 2.40.1 From e7a318d6b9be3f7ed934562784acebcafc5c6ff7 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 24 Oct 2023 17:46:53 +0900 Subject: [PATCH 06/10] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20-=20=ED=81=90=EB=A0=88=EC=9D=B4=EC=85=98=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=ED=85=9C=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EA=B8=B0=20API=20=EC=BA=90=EC=8B=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/content/AudioContentRepository.kt | 4 ++++ 1 file changed, 4 insertions(+) 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 42371c7..fb7f5ce 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -429,6 +429,10 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) .fetch() } + @Cacheable( + value = ["findAudioContentByCurationId"], + cacheManager = "cacheManager" + ) override fun findAudioContentByCurationId( curationId: Long, cloudfrontHost: String, -- 2.40.1 From 4eec062871524f8a68f61c5675c7ad831428ff4c Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 24 Oct 2023 19:14:15 +0900 Subject: [PATCH 07/10] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=9E=AD?= =?UTF-8?q?=ED=82=B9=20=EB=A1=9C=EC=A7=81=20-=20use=5Fcan=20=ED=85=8C?= =?UTF-8?q?=EC=9D=B4=EB=B8=94=20=EC=A1=B0=EC=9D=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/content/AudioContentRepository.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 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 fb7f5ce..24c738a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -2,7 +2,6 @@ package kr.co.vividnext.sodalive.content import com.querydsl.core.types.dsl.Expressions import com.querydsl.jpa.impl.JPAQueryFactory -import kr.co.vividnext.sodalive.can.use.QUseCan.useCan import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.content.QBundleAudioContent.bundleAudioContent import kr.co.vividnext.sodalive.content.main.GetAudioContentMainItem @@ -482,12 +481,13 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) offset: Long, limit: Long ): List { - var where = audioContent.isActive.isTrue + var where = order.createdAt.goe(startDate) + .and(order.createdAt.lt(endDate)) + .and(audioContent.isActive.isTrue) .and(audioContent.member.isNotNull) .and(audioContent.duration.isNotNull) .and(audioContent.member.isActive.isTrue) - .and(useCan.createdAt.goe(startDate)) - .and(useCan.createdAt.lt(endDate)) + .and(audioContentTheme.isActive.isTrue) if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) @@ -506,8 +506,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) member.nickname ) ) - .from(useCan) - .innerJoin(useCan.order, order) + .from(order) .innerJoin(order.audioContent, audioContent) .innerJoin(audioContent.member, member) .innerJoin(audioContent.theme, audioContentTheme) -- 2.40.1 From 1f055c22835bf9b25c5344fc73ed5360960af913 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 24 Oct 2023 19:18:49 +0900 Subject: [PATCH 08/10] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=201:1=20?= =?UTF-8?q?=EA=B4=80=EA=B3=84=20-=20FetchType=20EAGER=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt index a1f5c15..842036f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt @@ -51,7 +51,7 @@ data class AudioContent( @JoinColumn(name = "curation_id", nullable = true) var curation: AudioContentCuration? = null - @OneToOne(fetch = FetchType.LAZY) + @OneToOne(fetch = FetchType.EAGER) @JoinColumn(name = "member_id", nullable = false) var member: Member? = null -- 2.40.1 From 5f3c7e7e90e4992aa466d66f2c194ed171e99534 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 24 Oct 2023 19:27:53 +0900 Subject: [PATCH 09/10] =?UTF-8?q?GetAudioContentMainItem=20-=20JsonPropert?= =?UTF-8?q?y=20=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/content/AudioContent.kt | 2 +- .../content/main/GetAudioContentMainItem.kt | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt index 842036f..a1f5c15 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContent.kt @@ -51,7 +51,7 @@ data class AudioContent( @JoinColumn(name = "curation_id", nullable = true) var curation: AudioContentCuration? = null - @OneToOne(fetch = FetchType.EAGER) + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id", nullable = false) var member: Member? = null diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/GetAudioContentMainItem.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/GetAudioContentMainItem.kt index 1ab49eb..64e0712 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/GetAudioContentMainItem.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/GetAudioContentMainItem.kt @@ -1,13 +1,14 @@ package kr.co.vividnext.sodalive.content.main +import com.fasterxml.jackson.annotation.JsonProperty import com.querydsl.core.annotations.QueryProjection data class GetAudioContentMainItem @QueryProjection constructor( - val contentId: Long, - val coverImageUrl: String, - val title: String, - val isAdult: Boolean, - val creatorId: Long, - val creatorProfileImageUrl: String, - val creatorNickname: String + @JsonProperty("contentId") val contentId: Long, + @JsonProperty("coverImageUrl") val coverImageUrl: String, + @JsonProperty("title") val title: String, + @JsonProperty("isAdult") val isAdult: Boolean, + @JsonProperty("creatorId") val creatorId: Long, + @JsonProperty("creatorProfileImageUrl") val creatorProfileImageUrl: String, + @JsonProperty("creatorNickname") val creatorNickname: String ) -- 2.40.1 From 063ee78a8c05d1e438d8bb4b49dbc97b5804f409 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 24 Oct 2023 19:35:31 +0900 Subject: [PATCH 10/10] =?UTF-8?q?GetAudioContentMainItem=20JsonProperty=20?= =?UTF-8?q?-=20isAdult=EB=A5=BC=20adult=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 --- .../vividnext/sodalive/content/main/GetAudioContentMainItem.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/GetAudioContentMainItem.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/GetAudioContentMainItem.kt index 64e0712..f349bb5 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/GetAudioContentMainItem.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/GetAudioContentMainItem.kt @@ -7,7 +7,7 @@ data class GetAudioContentMainItem @QueryProjection constructor( @JsonProperty("contentId") val contentId: Long, @JsonProperty("coverImageUrl") val coverImageUrl: String, @JsonProperty("title") val title: String, - @JsonProperty("isAdult") val isAdult: Boolean, + @JsonProperty("adult") val isAdult: Boolean, @JsonProperty("creatorId") val creatorId: Long, @JsonProperty("creatorProfileImageUrl") val creatorProfileImageUrl: String, @JsonProperty("creatorNickname") val creatorNickname: String -- 2.40.1