diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt index fe1975d..ce1678f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt @@ -1,10 +1,8 @@ package kr.co.vividnext.sodalive.content.series import com.querydsl.jpa.impl.JPAQueryFactory -import kr.co.vividnext.sodalive.admin.content.series.genre.QSeriesGenre.seriesGenre 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.member import org.springframework.data.jpa.repository.JpaRepository interface ContentSeriesRepository : JpaRepository, ContentSeriesQueryRepository @@ -17,7 +15,7 @@ interface ContentSeriesQueryRepository { isAuth: Boolean, offset: Long, limit: Long - ): List + ): List } class ContentSeriesQueryRepositoryImpl( @@ -45,7 +43,7 @@ class ContentSeriesQueryRepositoryImpl( isAuth: Boolean, offset: Long, limit: Long - ): List { + ): List { var where = series.member.id.eq(creatorId) .and(series.isActive.isTrue) @@ -54,23 +52,7 @@ class ContentSeriesQueryRepositoryImpl( } return queryFactory - .select( - QGetSeriesListRawItem( - series.id, - series.title, - series.coverImage.prepend("/").prepend(imageHost), - series.publishedDaysOfWeek, - series.state, - seriesGenre.genre, - series.isAdult, - member.id, - member.nickname, - member.profileImage.prepend("/").prepend(imageHost) - ) - ) - .from(series) - .innerJoin(series.member, member) - .innerJoin(series.genre, seriesGenre) + .selectFrom(series) .where(where) .fetch() } 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 f7ac607..ca4d840 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 @@ -1,7 +1,9 @@ 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 @@ -32,7 +34,20 @@ class ContentSeriesService( ) val items = rawItems - .map { it.toSeriesListItem() } + .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.numberOfContent = seriesContentRepository.getContentCount( seriesId = it.seriesId, @@ -56,4 +71,27 @@ class ContentSeriesService( return GetSeriesListResponse(totalCount, items) } + + private fun publishedDaysOfWeekText(publishedDaysOfWeek: Set): 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}요일" + } + } }