| @@ -50,6 +50,7 @@ class ContentSeriesController(private val service: ContentSeriesService) { | |||||||
|     @GetMapping("/{id}/content") |     @GetMapping("/{id}/content") | ||||||
|     fun getSeriesContentList( |     fun getSeriesContentList( | ||||||
|         @PathVariable id: Long, |         @PathVariable id: Long, | ||||||
|  |         @RequestParam("sortType", defaultValue = "NEWEST") sortType: SeriesSortType, | ||||||
|         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, |         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, | ||||||
|         pageable: Pageable |         pageable: Pageable | ||||||
|     ) = run { |     ) = run { | ||||||
| @@ -59,6 +60,7 @@ class ContentSeriesController(private val service: ContentSeriesService) { | |||||||
|             service.getSeriesContentList( |             service.getSeriesContentList( | ||||||
|                 seriesId = id, |                 seriesId = id, | ||||||
|                 member = member, |                 member = member, | ||||||
|  |                 sortType = sortType, | ||||||
|                 offset = pageable.offset, |                 offset = pageable.offset, | ||||||
|                 limit = pageable.pageSize.toLong() |                 limit = pageable.pageSize.toLong() | ||||||
|             ) |             ) | ||||||
|   | |||||||
| @@ -75,7 +75,13 @@ class ContentSeriesService( | |||||||
|         val rentalMinPrice = (minMaxPrice.minPrice * 0.6).toInt() |         val rentalMinPrice = (minMaxPrice.minPrice * 0.6).toInt() | ||||||
|         val rentalMaxPrice = (minMaxPrice.maxPrice * 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") |         val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy.MM.dd") | ||||||
|         return GetSeriesDetailResponse( |         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 isAdult = member.auth != null | ||||||
|  |  | ||||||
|         val totalCount = seriesContentRepository.getContentCount(seriesId, isAdult = isAdult) |         val totalCount = seriesContentRepository.getContentCount(seriesId, isAdult = isAdult) | ||||||
| @@ -118,6 +130,7 @@ class ContentSeriesService( | |||||||
|             seriesId = seriesId, |             seriesId = seriesId, | ||||||
|             isAdult = isAdult, |             isAdult = isAdult, | ||||||
|             imageHost = coverImageHost, |             imageHost = coverImageHost, | ||||||
|  |             sortType = sortType, | ||||||
|             offset = offset, |             offset = offset, | ||||||
|             limit = limit |             limit = limit | ||||||
|         ) |         ) | ||||||
|   | |||||||
| @@ -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.QSeries.series | ||||||
| import kr.co.vividnext.sodalive.creator.admin.content.series.QSeriesContent.seriesContent | 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.SeriesContent | ||||||
|  | import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesSortType | ||||||
| import org.springframework.data.jpa.repository.JpaRepository | import org.springframework.data.jpa.repository.JpaRepository | ||||||
| import java.time.LocalDateTime | import java.time.LocalDateTime | ||||||
|  |  | ||||||
| @@ -17,6 +18,7 @@ interface ContentSeriesContentQueryRepository { | |||||||
|         seriesId: Long, |         seriesId: Long, | ||||||
|         isAdult: Boolean, |         isAdult: Boolean, | ||||||
|         imageHost: String, |         imageHost: String, | ||||||
|  |         sortType: SeriesSortType, | ||||||
|         offset: Long, |         offset: Long, | ||||||
|         limit: Long |         limit: Long | ||||||
|     ): List<GetSeriesContentListItem> |     ): List<GetSeriesContentListItem> | ||||||
| @@ -49,6 +51,7 @@ class ContentSeriesContentQueryRepositoryImpl( | |||||||
|         seriesId: Long, |         seriesId: Long, | ||||||
|         isAdult: Boolean, |         isAdult: Boolean, | ||||||
|         imageHost: String, |         imageHost: String, | ||||||
|  |         sortType: SeriesSortType, | ||||||
|         offset: Long, |         offset: Long, | ||||||
|         limit: Long |         limit: Long | ||||||
|     ): List<GetSeriesContentListItem> { |     ): List<GetSeriesContentListItem> { | ||||||
| @@ -56,6 +59,12 @@ class ContentSeriesContentQueryRepositoryImpl( | |||||||
|             .and(audioContent.isActive.isTrue) |             .and(audioContent.isActive.isTrue) | ||||||
|             .and(audioContent.duration.isNotNull) |             .and(audioContent.duration.isNotNull) | ||||||
|  |  | ||||||
|  |         var orderBy = seriesContent.createdAt.desc() | ||||||
|  |  | ||||||
|  |         if (sortType == SeriesSortType.OLDEST) { | ||||||
|  |             orderBy = seriesContent.createdAt.asc() | ||||||
|  |         } | ||||||
|  |  | ||||||
|         if (!isAdult) { |         if (!isAdult) { | ||||||
|             where = where.and(audioContent.isAdult.isFalse) |             where = where.and(audioContent.isAdult.isFalse) | ||||||
|         } |         } | ||||||
| @@ -89,7 +98,7 @@ class ContentSeriesContentQueryRepositoryImpl( | |||||||
|             .innerJoin(seriesContent.series, series) |             .innerJoin(seriesContent.series, series) | ||||||
|             .innerJoin(seriesContent.content, audioContent) |             .innerJoin(seriesContent.content, audioContent) | ||||||
|             .where(where) |             .where(where) | ||||||
|             .orderBy(series.orders.asc(), series.createdAt.asc()) |             .orderBy(orderBy) | ||||||
|             .offset(offset) |             .offset(offset) | ||||||
|             .limit(limit) |             .limit(limit) | ||||||
|             .fetch() |             .fetch() | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ enum class SeriesState { | |||||||
| } | } | ||||||
|  |  | ||||||
| enum class SeriesSortType { | enum class SeriesSortType { | ||||||
|     NEWEST, POPULAR |     NEWEST, OLDEST | ||||||
| } | } | ||||||
|  |  | ||||||
| @Entity | @Entity | ||||||
|   | |||||||
| @@ -8,5 +8,6 @@ data class EditLiveRoomInfoRequest( | |||||||
|     val timezone: String?, |     val timezone: String?, | ||||||
|     val menuPanId: Long = 0, |     val menuPanId: Long = 0, | ||||||
|     val menuPan: String = "", |     val menuPan: String = "", | ||||||
|     val isActiveMenuPan: Boolean? = null |     val isActiveMenuPan: Boolean? = null, | ||||||
|  |     val isAdult: Boolean? = null | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -749,6 +749,10 @@ class LiveRoomService( | |||||||
|                     .toLocalDateTime() |                     .toLocalDateTime() | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             if (request.isAdult != null) { | ||||||
|  |                 room.isAdult = request.isAdult | ||||||
|  |             } | ||||||
|  |  | ||||||
|             if (request.isActiveMenuPan != null) { |             if (request.isActiveMenuPan != null) { | ||||||
|                 if (request.isActiveMenuPan) { |                 if (request.isActiveMenuPan) { | ||||||
|                     if (request.menuPanId > 0) { |                     if (request.menuPanId > 0) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user