시리즈 리스트 조회 API
- 필요한 필드만 조회하도록 수정
This commit is contained in:
		| @@ -1,8 +1,10 @@ | ||||
| package kr.co.vividnext.sodalive.content.series | ||||
|  | ||||
| import com.querydsl.jpa.impl.JPAQueryFactory | ||||
| import kr.co.vividnext.sodalive.admin.content.series.genre.QSeriesGenre | ||||
| import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series | ||||
| import kr.co.vividnext.sodalive.creator.admin.content.series.Series | ||||
| import kr.co.vividnext.sodalive.member.QMember | ||||
| import org.springframework.data.jpa.repository.JpaRepository | ||||
|  | ||||
| interface ContentSeriesRepository : JpaRepository<Series, Long>, ContentSeriesQueryRepository | ||||
| @@ -15,7 +17,7 @@ interface ContentSeriesQueryRepository { | ||||
|         isAuth: Boolean, | ||||
|         offset: Long, | ||||
|         limit: Long | ||||
|     ): List<Series> | ||||
|     ): List<GetSeriesListRawItem> | ||||
| } | ||||
|  | ||||
| class ContentSeriesQueryRepositoryImpl( | ||||
| @@ -43,7 +45,10 @@ class ContentSeriesQueryRepositoryImpl( | ||||
|         isAuth: Boolean, | ||||
|         offset: Long, | ||||
|         limit: Long | ||||
|     ): List<Series> { | ||||
|     ): List<GetSeriesListRawItem> { | ||||
|         val qMember = QMember.member | ||||
|         val qSeriesGenre = QSeriesGenre.seriesGenre | ||||
|  | ||||
|         var where = series.member.id.eq(creatorId) | ||||
|             .and(series.isActive.isTrue) | ||||
|  | ||||
| @@ -52,7 +57,23 @@ class ContentSeriesQueryRepositoryImpl( | ||||
|         } | ||||
|  | ||||
|         return queryFactory | ||||
|             .selectFrom(series) | ||||
|             .select( | ||||
|                 QGetSeriesListRawItem( | ||||
|                     series.id, | ||||
|                     series.title, | ||||
|                     series.coverImage.prepend("/").prepend(imageHost), | ||||
|                     series.publishedDaysOfWeek, | ||||
|                     series.state, | ||||
|                     qSeriesGenre.genre, | ||||
|                     series.isAdult, | ||||
|                     qMember.id, | ||||
|                     qMember.nickname, | ||||
|                     qMember.profileImage.prepend("/").prepend(imageHost) | ||||
|                 ) | ||||
|             ) | ||||
|             .from(series) | ||||
|             .innerJoin(series.member, qMember) | ||||
|             .innerJoin(series.genre, qSeriesGenre) | ||||
|             .where(where) | ||||
|             .fetch() | ||||
|     } | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| package kr.co.vividnext.sodalive.content.series | ||||
|  | ||||
| import kr.co.vividnext.sodalive.content.series.content.ContentSeriesContentRepository | ||||
| import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesPublishedDaysOfWeek | ||||
| import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesSortType | ||||
| import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesState | ||||
| import kr.co.vividnext.sodalive.member.Member | ||||
| import org.springframework.beans.factory.annotation.Value | ||||
| import org.springframework.stereotype.Service | ||||
| @@ -34,24 +32,11 @@ class ContentSeriesService( | ||||
|         ) | ||||
|  | ||||
|         val items = rawItems | ||||
|             .map { | ||||
|                 GetSeriesListResponse.SeriesListItem( | ||||
|                     seriesId = it.id!!, | ||||
|                     title = it.title, | ||||
|                     coverImage = "$coverImageHost/${it.coverImage!!}", | ||||
|                     publishedDaysOfWeek = publishedDaysOfWeekText(it.publishedDaysOfWeek), | ||||
|                     isComplete = it.state == SeriesState.COMPLETE, | ||||
|                     creator = GetSeriesListResponse.SeriesListItemCreator( | ||||
|                         creatorId = it.member!!.id!!, | ||||
|                         nickname = it.member!!.nickname, | ||||
|                         profileImage = "$coverImageHost/${it.member!!.profileImage!!}" | ||||
|                     ) | ||||
|                 ) | ||||
|             } | ||||
|             .map { it.toSeriesListItem() } | ||||
|             .map { | ||||
|                 it.numberOfContent = seriesContentRepository.getContentCount( | ||||
|                     seriesId = it.seriesId, | ||||
|                     isAdult = member.auth == null | ||||
|                     isAdult = member.auth != null | ||||
|                 ) | ||||
|  | ||||
|                 it | ||||
| @@ -71,27 +56,4 @@ class ContentSeriesService( | ||||
|  | ||||
|         return GetSeriesListResponse(totalCount, items) | ||||
|     } | ||||
|  | ||||
|     private fun publishedDaysOfWeekText(publishedDaysOfWeek: Set<SeriesPublishedDaysOfWeek>): String { | ||||
|         val dayOfWeekText = publishedDaysOfWeek.toList().sortedBy { it.ordinal } | ||||
|             .map { | ||||
|                 when (it) { | ||||
|                     SeriesPublishedDaysOfWeek.SUN -> "일" | ||||
|                     SeriesPublishedDaysOfWeek.MON -> "월" | ||||
|                     SeriesPublishedDaysOfWeek.TUE -> "화" | ||||
|                     SeriesPublishedDaysOfWeek.WED -> "수" | ||||
|                     SeriesPublishedDaysOfWeek.THU -> "목" | ||||
|                     SeriesPublishedDaysOfWeek.FRI -> "금" | ||||
|                     SeriesPublishedDaysOfWeek.SAT -> "토" | ||||
|                     SeriesPublishedDaysOfWeek.RANDOM -> "랜덤" | ||||
|                 } | ||||
|             } | ||||
|             .joinToString(", ") { it } | ||||
|  | ||||
|         return if (publishedDaysOfWeek.contains(SeriesPublishedDaysOfWeek.RANDOM)) { | ||||
|             dayOfWeekText | ||||
|         } else { | ||||
|             "매주 ${dayOfWeekText}요일" | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user