feat(content-all): 전체 탭 API 응답 조립을 추가한다
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package kr.co.vividnext.sodalive.v2.api.content.all.application
|
||||
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.v2.api.content.all.dto.MainContentAllTabResponse
|
||||
import kr.co.vividnext.sodalive.v2.content.all.application.MainContentAllQueryService
|
||||
import org.springframework.stereotype.Component
|
||||
|
||||
@Component
|
||||
class MainContentAllFacade(
|
||||
private val queryService: MainContentAllQueryService
|
||||
) {
|
||||
fun getContents(
|
||||
type: String?,
|
||||
sort: String?,
|
||||
dayOfWeek: String?,
|
||||
page: Int?,
|
||||
size: Int?,
|
||||
member: Member?
|
||||
): MainContentAllTabResponse {
|
||||
return MainContentAllTabResponse.from(
|
||||
queryService.getContents(
|
||||
type = type,
|
||||
sort = sort,
|
||||
dayOfWeek = dayOfWeek,
|
||||
page = page,
|
||||
size = size,
|
||||
member = member
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package kr.co.vividnext.sodalive.v2.api.content.all.dto
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesPublishedDaysOfWeek
|
||||
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
||||
import kr.co.vividnext.sodalive.v2.content.all.domain.MainContentAll
|
||||
import kr.co.vividnext.sodalive.v2.content.all.domain.MainContentAllAudio
|
||||
import kr.co.vividnext.sodalive.v2.content.all.domain.MainContentAllSeries
|
||||
import kr.co.vividnext.sodalive.v2.content.all.domain.MainContentAllType
|
||||
|
||||
data class MainContentAllTabResponse(
|
||||
val type: MainContentAllType,
|
||||
val totalCount: Int,
|
||||
val audios: List<MainContentAudioResponse>,
|
||||
val series: List<MainContentSeriesResponse>,
|
||||
val sort: ContentSort,
|
||||
val dayOfWeek: SeriesPublishedDaysOfWeek?,
|
||||
val page: Int,
|
||||
val size: Int,
|
||||
@JsonProperty("hasNext")
|
||||
val hasNext: Boolean
|
||||
) {
|
||||
companion object {
|
||||
fun from(tab: MainContentAll): MainContentAllTabResponse {
|
||||
return MainContentAllTabResponse(
|
||||
type = tab.type,
|
||||
totalCount = tab.totalCount,
|
||||
audios = tab.audios.map(MainContentAudioResponse::from),
|
||||
series = tab.series.map(MainContentSeriesResponse::from),
|
||||
sort = tab.sort,
|
||||
dayOfWeek = tab.dayOfWeek,
|
||||
page = tab.page.page,
|
||||
size = tab.page.size,
|
||||
hasNext = tab.hasNext
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class MainContentAudioResponse(
|
||||
val audioContentId: Long,
|
||||
val title: String,
|
||||
val imageUrl: String?,
|
||||
val price: Int,
|
||||
@JsonProperty("isAdult")
|
||||
val isAdult: Boolean,
|
||||
@JsonProperty("isPointAvailable")
|
||||
val isPointAvailable: Boolean,
|
||||
@JsonProperty("isFirstContent")
|
||||
val isFirstContent: Boolean,
|
||||
@JsonProperty("isOriginalSeries")
|
||||
val isOriginalSeries: Boolean,
|
||||
val creatorNickname: String
|
||||
) {
|
||||
companion object {
|
||||
fun from(audio: MainContentAllAudio): MainContentAudioResponse {
|
||||
return MainContentAudioResponse(
|
||||
audioContentId = audio.audioContentId,
|
||||
title = audio.title,
|
||||
imageUrl = audio.imageUrl,
|
||||
price = audio.price,
|
||||
isAdult = audio.isAdult,
|
||||
isPointAvailable = audio.isPointAvailable,
|
||||
isFirstContent = audio.isFirstContent,
|
||||
isOriginalSeries = audio.isOriginalSeries,
|
||||
creatorNickname = audio.creatorNickname
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class MainContentSeriesResponse(
|
||||
val seriesId: Long,
|
||||
val title: String,
|
||||
val coverImageUrl: String?,
|
||||
val creatorNickname: String,
|
||||
@JsonProperty("isOriginal")
|
||||
val isOriginal: Boolean,
|
||||
@JsonProperty("isAdult")
|
||||
val isAdult: Boolean
|
||||
) {
|
||||
companion object {
|
||||
fun from(series: MainContentAllSeries): MainContentSeriesResponse {
|
||||
return MainContentSeriesResponse(
|
||||
seriesId = series.seriesId,
|
||||
title = series.title,
|
||||
coverImageUrl = series.coverImageUrl,
|
||||
creatorNickname = series.creatorNickname,
|
||||
isOriginal = series.isOriginal,
|
||||
isAdult = series.isAdult
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user