From d804ad268aff4229ab85ffd446835c4b38e407cb Mon Sep 17 00:00:00 2001 From: Klaus <klaus@vividnext.co.kr> Date: Mon, 9 Sep 2024 23:41:29 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8B=9C=EB=A6=AC=EC=A6=88=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20-=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC(=EC=B5=9C=EC=8B=A0=EC=88=9C,=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=EC=88=9C)=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/series/ContentSeriesController.kt | 2 ++ .../content/series/ContentSeriesService.kt | 17 +++++++++++++++-- .../content/ContentSeriesContentRepository.kt | 11 ++++++++++- .../creator/admin/content/series/Series.kt | 2 +- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesController.kt index 5811af9..67ea69b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesController.kt @@ -50,6 +50,7 @@ class ContentSeriesController(private val service: ContentSeriesService) { @GetMapping("/{id}/content") fun getSeriesContentList( @PathVariable id: Long, + @RequestParam("sortType", required = false) sortType: SeriesSortType = SeriesSortType.OLDEST, @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, pageable: Pageable ) = run { @@ -59,6 +60,7 @@ class ContentSeriesController(private val service: ContentSeriesService) { service.getSeriesContentList( seriesId = id, member = member, + sortType = sortType, offset = pageable.offset, limit = pageable.pageSize.toLong() ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt index 1cefd7c..665eb2e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt @@ -75,7 +75,13 @@ class ContentSeriesService( val rentalMinPrice = (minMaxPrice.minPrice * 0.6).toInt() val rentalMaxPrice = (minMaxPrice.maxPrice * 0.6).toInt() - val seriesContentList = getSeriesContentList(seriesId = seriesId, member = member, offset = 0, limit = 5) + val seriesContentList = getSeriesContentList( + seriesId = seriesId, + member = member, + sortType = SeriesSortType.NEWEST, + offset = 0, + limit = 5 + ) val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy.MM.dd") return GetSeriesDetailResponse( @@ -110,7 +116,13 @@ class ContentSeriesService( ) } - fun getSeriesContentList(seriesId: Long, member: Member, offset: Long, limit: Long): GetSeriesContentListResponse { + fun getSeriesContentList( + seriesId: Long, + member: Member, + sortType: SeriesSortType, + offset: Long, + limit: Long + ): GetSeriesContentListResponse { val isAdult = member.auth != null val totalCount = seriesContentRepository.getContentCount(seriesId, isAdult = isAdult) @@ -118,6 +130,7 @@ class ContentSeriesService( seriesId = seriesId, isAdult = isAdult, imageHost = coverImageHost, + sortType = sortType, offset = offset, limit = limit ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/content/ContentSeriesContentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/content/ContentSeriesContentRepository.kt index aa83137..93d04e1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/content/ContentSeriesContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/content/ContentSeriesContentRepository.kt @@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series import kr.co.vividnext.sodalive.creator.admin.content.series.QSeriesContent.seriesContent import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesContent +import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesSortType import org.springframework.data.jpa.repository.JpaRepository import java.time.LocalDateTime @@ -17,6 +18,7 @@ interface ContentSeriesContentQueryRepository { seriesId: Long, isAdult: Boolean, imageHost: String, + sortType: SeriesSortType, offset: Long, limit: Long ): List<GetSeriesContentListItem> @@ -49,6 +51,7 @@ class ContentSeriesContentQueryRepositoryImpl( seriesId: Long, isAdult: Boolean, imageHost: String, + sortType: SeriesSortType, offset: Long, limit: Long ): List<GetSeriesContentListItem> { @@ -56,6 +59,12 @@ class ContentSeriesContentQueryRepositoryImpl( .and(audioContent.isActive.isTrue) .and(audioContent.duration.isNotNull) + var orderBy = series.createdAt.asc() + + if (sortType == SeriesSortType.NEWEST) { + orderBy = series.createdAt.desc() + } + if (!isAdult) { where = where.and(audioContent.isAdult.isFalse) } @@ -89,7 +98,7 @@ class ContentSeriesContentQueryRepositoryImpl( .innerJoin(seriesContent.series, series) .innerJoin(seriesContent.content, audioContent) .where(where) - .orderBy(series.orders.asc(), series.createdAt.asc()) + .orderBy(orderBy) .offset(offset) .limit(limit) .fetch() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/Series.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/Series.kt index 79f4f1b..9e2d1d6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/Series.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/Series.kt @@ -26,7 +26,7 @@ enum class SeriesState { } enum class SeriesSortType { - NEWEST, POPULAR + NEWEST, OLDEST } @Entity