test #426
@@ -0,0 +1,44 @@
|
|||||||
|
package kr.co.vividnext.sodalive.v2.api.creator.channel.common.dto
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
|
|
||||||
|
data class CreatorChannelAudioContentResponse(
|
||||||
|
val audioContentId: Long,
|
||||||
|
val title: String,
|
||||||
|
val duration: String?,
|
||||||
|
val imageUrl: String?,
|
||||||
|
val price: Int,
|
||||||
|
@JsonProperty("isAdult")
|
||||||
|
val isAdult: Boolean,
|
||||||
|
@JsonProperty("isPointAvailable")
|
||||||
|
val isPointAvailable: Boolean,
|
||||||
|
@JsonProperty("isFirstContent")
|
||||||
|
val isFirstContent: Boolean,
|
||||||
|
val seriesName: String?,
|
||||||
|
@JsonProperty("isOriginalSeries")
|
||||||
|
val isOriginalSeries: Boolean?,
|
||||||
|
@JsonProperty("isOwned")
|
||||||
|
val isOwned: Boolean,
|
||||||
|
@JsonProperty("isRented")
|
||||||
|
val isRented: Boolean
|
||||||
|
) {
|
||||||
|
companion object {
|
||||||
|
fun from(audioContent: CreatorChannelAudioContent): CreatorChannelAudioContentResponse {
|
||||||
|
return CreatorChannelAudioContentResponse(
|
||||||
|
audioContentId = audioContent.audioContentId,
|
||||||
|
title = audioContent.title,
|
||||||
|
duration = audioContent.duration,
|
||||||
|
imageUrl = audioContent.imageUrl,
|
||||||
|
price = audioContent.price,
|
||||||
|
isAdult = audioContent.isAdult,
|
||||||
|
isPointAvailable = audioContent.isPointAvailable,
|
||||||
|
isFirstContent = audioContent.isFirstContent,
|
||||||
|
seriesName = audioContent.seriesName,
|
||||||
|
isOriginalSeries = audioContent.isOriginalSeries,
|
||||||
|
isOwned = audioContent.isOwned,
|
||||||
|
isRented = audioContent.isRented
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto
|
package kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.common.dto.CreatorChannelAudioContentResponse
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
||||||
@@ -108,46 +108,6 @@ data class CreatorChannelLiveResponse(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CreatorChannelAudioContentResponse(
|
|
||||||
val audioContentId: Long,
|
|
||||||
val title: String,
|
|
||||||
val duration: String?,
|
|
||||||
val imageUrl: String?,
|
|
||||||
val price: Int,
|
|
||||||
@JsonProperty("isAdult")
|
|
||||||
val isAdult: Boolean,
|
|
||||||
@JsonProperty("isPointAvailable")
|
|
||||||
val isPointAvailable: Boolean,
|
|
||||||
@JsonProperty("isFirstContent")
|
|
||||||
val isFirstContent: Boolean,
|
|
||||||
val seriesName: String?,
|
|
||||||
@JsonProperty("isOriginalSeries")
|
|
||||||
val isOriginalSeries: Boolean?,
|
|
||||||
@JsonProperty("isOwned")
|
|
||||||
val isOwned: Boolean,
|
|
||||||
@JsonProperty("isRented")
|
|
||||||
val isRented: Boolean
|
|
||||||
) {
|
|
||||||
companion object {
|
|
||||||
fun from(audioContent: CreatorChannelAudioContent): CreatorChannelAudioContentResponse {
|
|
||||||
return CreatorChannelAudioContentResponse(
|
|
||||||
audioContentId = audioContent.audioContentId,
|
|
||||||
title = audioContent.title,
|
|
||||||
duration = audioContent.duration,
|
|
||||||
imageUrl = audioContent.imageUrl,
|
|
||||||
price = audioContent.price,
|
|
||||||
isAdult = audioContent.isAdult,
|
|
||||||
isPointAvailable = audioContent.isPointAvailable,
|
|
||||||
isFirstContent = audioContent.isFirstContent,
|
|
||||||
seriesName = audioContent.seriesName,
|
|
||||||
isOriginalSeries = audioContent.isOriginalSeries,
|
|
||||||
isOwned = audioContent.isOwned,
|
|
||||||
isRented = audioContent.isRented
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data class CreatorChannelDonationResponse(
|
data class CreatorChannelDonationResponse(
|
||||||
val nickname: String,
|
val nickname: String,
|
||||||
val profileImageUrl: String,
|
val profileImageUrl: String,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto
|
package kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.common.dto.CreatorChannelAudioContentResponse
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelAudioContent
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
@@ -33,46 +33,6 @@ data class CreatorChannelLiveTabResponse(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CreatorChannelAudioContentResponse(
|
|
||||||
val audioContentId: Long,
|
|
||||||
val title: String,
|
|
||||||
val duration: String?,
|
|
||||||
val imageUrl: String?,
|
|
||||||
val price: Int,
|
|
||||||
@JsonProperty("isAdult")
|
|
||||||
val isAdult: Boolean,
|
|
||||||
@JsonProperty("isPointAvailable")
|
|
||||||
val isPointAvailable: Boolean,
|
|
||||||
@JsonProperty("isFirstContent")
|
|
||||||
val isFirstContent: Boolean,
|
|
||||||
val seriesName: String?,
|
|
||||||
@JsonProperty("isOriginalSeries")
|
|
||||||
val isOriginalSeries: Boolean?,
|
|
||||||
@JsonProperty("isOwned")
|
|
||||||
val isOwned: Boolean,
|
|
||||||
@JsonProperty("isRented")
|
|
||||||
val isRented: Boolean
|
|
||||||
) {
|
|
||||||
companion object {
|
|
||||||
fun from(content: CreatorChannelAudioContent): CreatorChannelAudioContentResponse {
|
|
||||||
return CreatorChannelAudioContentResponse(
|
|
||||||
audioContentId = content.audioContentId,
|
|
||||||
title = content.title,
|
|
||||||
duration = content.duration,
|
|
||||||
imageUrl = content.imageUrl,
|
|
||||||
price = content.price,
|
|
||||||
isAdult = content.isAdult,
|
|
||||||
isPointAvailable = content.isPointAvailable,
|
|
||||||
isFirstContent = content.isFirstContent,
|
|
||||||
seriesName = content.seriesName,
|
|
||||||
isOriginalSeries = content.isOriginalSeries,
|
|
||||||
isOwned = content.isOwned,
|
|
||||||
isRented = content.isRented
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data class CreatorChannelLiveResponse(
|
data class CreatorChannelLiveResponse(
|
||||||
val liveId: Long,
|
val liveId: Long,
|
||||||
val title: String,
|
val title: String,
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package kr.co.vividnext.sodalive.v2.creator.channel.common.domain
|
||||||
|
|
||||||
|
data class CreatorChannelAudioContent(
|
||||||
|
val audioContentId: Long,
|
||||||
|
val title: String,
|
||||||
|
val duration: String?,
|
||||||
|
val imageUrl: String?,
|
||||||
|
val price: Int,
|
||||||
|
val isAdult: Boolean,
|
||||||
|
val isPointAvailable: Boolean,
|
||||||
|
val isFirstContent: Boolean,
|
||||||
|
val seriesName: String?,
|
||||||
|
val isOriginalSeries: Boolean?,
|
||||||
|
val isOwned: Boolean,
|
||||||
|
val isRented: Boolean
|
||||||
|
)
|
||||||
@@ -572,7 +572,6 @@ class DefaultCreatorChannelHomeQueryRepository(
|
|||||||
isAdult = get(audioContent.isAdult)!!,
|
isAdult = get(audioContent.isAdult)!!,
|
||||||
isPointAvailable = get(audioContent.isPointAvailable)!!,
|
isPointAvailable = get(audioContent.isPointAvailable)!!,
|
||||||
isFirstContent = firstContentId == audioContentId,
|
isFirstContent = firstContentId == audioContentId,
|
||||||
publishedAt = get(audioContent.releaseDate)!!,
|
|
||||||
seriesName = seriesSummary?.title,
|
seriesName = seriesSummary?.title,
|
||||||
isOriginalSeries = seriesSummary?.isOriginal,
|
isOriginalSeries = seriesSummary?.isOriginal,
|
||||||
isOwned = orderState?.isOwned ?: false,
|
isOwned = orderState?.isOwned ?: false,
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import kr.co.vividnext.sodalive.member.Member
|
|||||||
import kr.co.vividnext.sodalive.member.MemberRole
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
|
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
|
||||||
import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy
|
import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
||||||
@@ -178,7 +178,6 @@ class CreatorChannelHomeQueryService(
|
|||||||
isAdult = isAdult,
|
isAdult = isAdult,
|
||||||
isPointAvailable = isPointAvailable,
|
isPointAvailable = isPointAvailable,
|
||||||
isFirstContent = isFirstContent,
|
isFirstContent = isFirstContent,
|
||||||
publishedAt = publishedAt,
|
|
||||||
seriesName = seriesName,
|
seriesName = seriesName,
|
||||||
isOriginalSeries = isOriginalSeries,
|
isOriginalSeries = isOriginalSeries,
|
||||||
isOwned = isOwned,
|
isOwned = isOwned,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.creator.channel.home.domain
|
package kr.co.vividnext.sodalive.v2.creator.channel.home.domain
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
data class CreatorChannelHome(
|
data class CreatorChannelHome(
|
||||||
@@ -40,22 +41,6 @@ data class CreatorChannelLive(
|
|||||||
val isAdult: Boolean
|
val isAdult: Boolean
|
||||||
)
|
)
|
||||||
|
|
||||||
data class CreatorChannelAudioContent(
|
|
||||||
val audioContentId: Long,
|
|
||||||
val title: String,
|
|
||||||
val duration: String?,
|
|
||||||
val imageUrl: String?,
|
|
||||||
val price: Int,
|
|
||||||
val isAdult: Boolean,
|
|
||||||
val isPointAvailable: Boolean,
|
|
||||||
val isFirstContent: Boolean,
|
|
||||||
val publishedAt: LocalDateTime,
|
|
||||||
val seriesName: String?,
|
|
||||||
val isOriginalSeries: Boolean?,
|
|
||||||
val isOwned: Boolean,
|
|
||||||
val isRented: Boolean
|
|
||||||
)
|
|
||||||
|
|
||||||
data class CreatorChannelDonation(
|
data class CreatorChannelDonation(
|
||||||
val nickname: String,
|
val nickname: String,
|
||||||
val profileImageUrl: String,
|
val profileImageUrl: String,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.creator.channel.home.domain
|
package kr.co.vividnext.sodalive.v2.creator.channel.home.domain
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
@@ -25,16 +26,6 @@ class CreatorChannelHomeQueryPolicy {
|
|||||||
return audioContents.filter { it.audioContentId != latestAudioContentId }
|
return audioContents.filter { it.audioContentId != latestAudioContentId }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun markFirstAudioContent(audioContents: List<CreatorChannelAudioContent>): List<CreatorChannelAudioContent> {
|
|
||||||
val firstAudioContentId = audioContents
|
|
||||||
.minWithOrNull(compareBy<CreatorChannelAudioContent> { it.publishedAt }.thenBy { it.audioContentId })
|
|
||||||
?.audioContentId
|
|
||||||
|
|
||||||
return audioContents.map { audioContent ->
|
|
||||||
audioContent.copy(isFirstContent = audioContent.audioContentId == firstAudioContentId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun CreatorActivityType.scheduleOrder(): Int {
|
private fun CreatorActivityType.scheduleOrder(): Int {
|
||||||
return if (this == CreatorActivityType.LIVE) 0 else 1
|
return if (this == CreatorActivityType.LIVE) 0 else 1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,6 @@ data class CreatorChannelAudioContentRecord(
|
|||||||
val isAdult: Boolean,
|
val isAdult: Boolean,
|
||||||
val isPointAvailable: Boolean,
|
val isPointAvailable: Boolean,
|
||||||
val isFirstContent: Boolean,
|
val isFirstContent: Boolean,
|
||||||
val publishedAt: LocalDateTime,
|
|
||||||
val seriesName: String?,
|
val seriesName: String?,
|
||||||
val isOriginalSeries: Boolean?,
|
val isOriginalSeries: Boolean?,
|
||||||
val isOwned: Boolean,
|
val isOwned: Boolean,
|
||||||
|
|||||||
@@ -261,7 +261,6 @@ class DefaultCreatorChannelLiveQueryRepository(
|
|||||||
isAdult = get(audioContent.isAdult)!!,
|
isAdult = get(audioContent.isAdult)!!,
|
||||||
isPointAvailable = get(audioContent.isPointAvailable)!!,
|
isPointAvailable = get(audioContent.isPointAvailable)!!,
|
||||||
isFirstContent = firstContentId == audioContentId,
|
isFirstContent = firstContentId == audioContentId,
|
||||||
publishedAt = get(audioContent.releaseDate)!!,
|
|
||||||
seriesName = seriesSummary?.title,
|
seriesName = seriesSummary?.title,
|
||||||
isOriginalSeries = seriesSummary?.isOriginal,
|
isOriginalSeries = seriesSummary?.isOriginal,
|
||||||
isOwned = orderState?.isOwned ?: false,
|
isOwned = orderState?.isOwned ?: false,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import kr.co.vividnext.sodalive.member.MemberRole
|
|||||||
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
|
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
|
||||||
import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy
|
import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelAudioContent
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveReplayQueryPolicy
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveReplayQueryPolicy
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab
|
||||||
@@ -122,7 +122,6 @@ class CreatorChannelLiveQueryService(
|
|||||||
isAdult = isAdult,
|
isAdult = isAdult,
|
||||||
isPointAvailable = isPointAvailable,
|
isPointAvailable = isPointAvailable,
|
||||||
isFirstContent = isFirstContent,
|
isFirstContent = isFirstContent,
|
||||||
publishedAt = publishedAt,
|
|
||||||
seriesName = seriesName,
|
seriesName = seriesName,
|
||||||
isOriginalSeries = isOriginalSeries,
|
isOriginalSeries = isOriginalSeries,
|
||||||
isOwned = isOwned,
|
isOwned = isOwned,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.creator.channel.live.domain
|
package kr.co.vividnext.sodalive.v2.creator.channel.live.domain
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
data class CreatorChannelLiveTab(
|
data class CreatorChannelLiveTab(
|
||||||
@@ -20,19 +21,3 @@ data class CreatorChannelLive(
|
|||||||
val price: Int,
|
val price: Int,
|
||||||
val isAdult: Boolean
|
val isAdult: Boolean
|
||||||
)
|
)
|
||||||
|
|
||||||
data class CreatorChannelAudioContent(
|
|
||||||
val audioContentId: Long,
|
|
||||||
val title: String,
|
|
||||||
val duration: String?,
|
|
||||||
val imageUrl: String?,
|
|
||||||
val price: Int,
|
|
||||||
val isAdult: Boolean,
|
|
||||||
val isPointAvailable: Boolean,
|
|
||||||
val isFirstContent: Boolean,
|
|
||||||
val publishedAt: LocalDateTime,
|
|
||||||
val seriesName: String?,
|
|
||||||
val isOriginalSeries: Boolean?,
|
|
||||||
val isOwned: Boolean,
|
|
||||||
val isRented: Boolean
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ data class CreatorChannelAudioContentRecord(
|
|||||||
val isAdult: Boolean,
|
val isAdult: Boolean,
|
||||||
val isPointAvailable: Boolean,
|
val isPointAvailable: Boolean,
|
||||||
val isFirstContent: Boolean,
|
val isFirstContent: Boolean,
|
||||||
val publishedAt: LocalDateTime,
|
|
||||||
val seriesName: String?,
|
val seriesName: String?,
|
||||||
val isOriginalSeries: Boolean?,
|
val isOriginalSeries: Boolean?,
|
||||||
val isOwned: Boolean,
|
val isOwned: Boolean,
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import kr.co.vividnext.sodalive.member.MemberRole
|
|||||||
import kr.co.vividnext.sodalive.v2.api.creator.channel.home.application.CreatorChannelHomeFacade
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.home.application.CreatorChannelHomeFacade
|
||||||
import kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto.CreatorChannelHomeResponse
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto.CreatorChannelHomeResponse
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
||||||
@@ -198,7 +198,6 @@ class CreatorChannelHomeControllerTest @Autowired constructor(
|
|||||||
isAdult = true,
|
isAdult = true,
|
||||||
isPointAvailable = true,
|
isPointAvailable = true,
|
||||||
isFirstContent = true,
|
isFirstContent = true,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 11, 1, 0),
|
|
||||||
seriesName = "series",
|
seriesName = "series",
|
||||||
isOriginalSeries = true,
|
isOriginalSeries = true,
|
||||||
isOwned = true,
|
isOwned = true,
|
||||||
@@ -233,7 +232,6 @@ class CreatorChannelHomeControllerTest @Autowired constructor(
|
|||||||
isAdult = false,
|
isAdult = false,
|
||||||
isPointAvailable = false,
|
isPointAvailable = false,
|
||||||
isFirstContent = false,
|
isFirstContent = false,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 10, 1, 0),
|
|
||||||
seriesName = null,
|
seriesName = null,
|
||||||
isOriginalSeries = null,
|
isOriginalSeries = null,
|
||||||
isOwned = false,
|
isOwned = false,
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package kr.co.vividnext.sodalive.v2.api.creator.channel.home.application
|
|||||||
import kr.co.vividnext.sodalive.member.Member
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
import kr.co.vividnext.sodalive.member.MemberRole
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.application.CreatorChannelHomeQueryService
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.application.CreatorChannelHomeQueryService
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
||||||
@@ -128,7 +128,6 @@ class CreatorChannelHomeFacadeTest {
|
|||||||
isAdult = true,
|
isAdult = true,
|
||||||
isPointAvailable = true,
|
isPointAvailable = true,
|
||||||
isFirstContent = true,
|
isFirstContent = true,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 11, 1, 0),
|
|
||||||
seriesName = "series",
|
seriesName = "series",
|
||||||
isOriginalSeries = true,
|
isOriginalSeries = true,
|
||||||
isOwned = true,
|
isOwned = true,
|
||||||
@@ -163,7 +162,6 @@ class CreatorChannelHomeFacadeTest {
|
|||||||
isAdult = false,
|
isAdult = false,
|
||||||
isPointAvailable = false,
|
isPointAvailable = false,
|
||||||
isFirstContent = false,
|
isFirstContent = false,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 10, 1, 0),
|
|
||||||
seriesName = null,
|
seriesName = null,
|
||||||
isOriginalSeries = null,
|
isOriginalSeries = null,
|
||||||
isOwned = false,
|
isOwned = false,
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import kr.co.vividnext.sodalive.i18n.SodaMessageSource
|
|||||||
import kr.co.vividnext.sodalive.member.Member
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
import kr.co.vividnext.sodalive.member.MemberAdapter
|
import kr.co.vividnext.sodalive.member.MemberAdapter
|
||||||
import kr.co.vividnext.sodalive.member.MemberRole
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.common.dto.CreatorChannelAudioContentResponse
|
||||||
import kr.co.vividnext.sodalive.v2.api.creator.channel.live.application.CreatorChannelLiveFacade
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.live.application.CreatorChannelLiveFacade
|
||||||
import kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto.CreatorChannelAudioContentResponse
|
|
||||||
import kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto.CreatorChannelLiveResponse
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto.CreatorChannelLiveResponse
|
||||||
import kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto.CreatorChannelLiveTabResponse
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto.CreatorChannelLiveTabResponse
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package kr.co.vividnext.sodalive.v2.api.creator.channel.live.application
|
|||||||
import kr.co.vividnext.sodalive.member.Member
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
import kr.co.vividnext.sodalive.member.MemberRole
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
import kr.co.vividnext.sodalive.v2.common.domain.ContentSort
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.application.CreatorChannelLiveQueryService
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.application.CreatorChannelLiveQueryService
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelAudioContent
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelPage
|
import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelPage
|
||||||
@@ -86,7 +86,6 @@ class CreatorChannelLiveFacadeTest {
|
|||||||
isAdult = false,
|
isAdult = false,
|
||||||
isPointAvailable = true,
|
isPointAvailable = true,
|
||||||
isFirstContent = true,
|
isFirstContent = true,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 16, 1, 0),
|
|
||||||
seriesName = "series",
|
seriesName = "series",
|
||||||
isOriginalSeries = true,
|
isOriginalSeries = true,
|
||||||
isOwned = true,
|
isOwned = true,
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreference
|
|||||||
import kr.co.vividnext.sodalive.member.contentpreference.ViewerContentPreference
|
import kr.co.vividnext.sodalive.member.contentpreference.ViewerContentPreference
|
||||||
import kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto.CreatorChannelHomeResponse
|
import kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto.CreatorChannelHomeResponse
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent
|
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation
|
||||||
@@ -307,7 +307,6 @@ class CreatorChannelHomeQueryServiceTest {
|
|||||||
isAdult = true,
|
isAdult = true,
|
||||||
isPointAvailable = true,
|
isPointAvailable = true,
|
||||||
isFirstContent = true,
|
isFirstContent = true,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 11, 1, 0),
|
|
||||||
seriesName = "series",
|
seriesName = "series",
|
||||||
isOriginalSeries = true,
|
isOriginalSeries = true,
|
||||||
isOwned = true,
|
isOwned = true,
|
||||||
@@ -342,7 +341,6 @@ class CreatorChannelHomeQueryServiceTest {
|
|||||||
isAdult = false,
|
isAdult = false,
|
||||||
isPointAvailable = false,
|
isPointAvailable = false,
|
||||||
isFirstContent = false,
|
isFirstContent = false,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 10, 1, 0),
|
|
||||||
seriesName = null,
|
seriesName = null,
|
||||||
isOriginalSeries = null,
|
isOriginalSeries = null,
|
||||||
isOwned = false,
|
isOwned = false,
|
||||||
@@ -646,7 +644,6 @@ private class FakeCreatorChannelHomeQueryPort : CreatorChannelHomeQueryPort {
|
|||||||
isAdult = false,
|
isAdult = false,
|
||||||
isPointAvailable = true,
|
isPointAvailable = true,
|
||||||
isFirstContent = false,
|
isFirstContent = false,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 10, 0, audioContentId.toInt() % 60),
|
|
||||||
seriesName = null,
|
seriesName = null,
|
||||||
isOriginalSeries = null,
|
isOriginalSeries = null,
|
||||||
isOwned = audioContentId == 201L || audioContentId == 202L,
|
isOwned = audioContentId == 201L || audioContentId == 202L,
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.creator.channel.home.domain
|
package kr.co.vividnext.sodalive.v2.creator.channel.home.domain
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent
|
||||||
import org.junit.jupiter.api.Assertions.assertEquals
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
import org.junit.jupiter.api.Assertions.assertFalse
|
|
||||||
import org.junit.jupiter.api.Assertions.assertTrue
|
|
||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
@@ -80,23 +79,6 @@ class CreatorChannelHomeQueryPolicyTest {
|
|||||||
assertEquals(listOf(1L, 3L), filtered.map { it.audioContentId })
|
assertEquals(listOf(1L, 3L), filtered.map { it.audioContentId })
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
@DisplayName("오디오 콘텐츠의 첫 공개 콘텐츠 여부는 공개 시각 오름차순, 동일 시각이면 id 오름차순으로 판정한다")
|
|
||||||
fun shouldMarkFirstAudioContentByPublishedAtAndId() {
|
|
||||||
val publishedAt = LocalDateTime.of(2026, 6, 12, 10, 0)
|
|
||||||
val audioContents = listOf(
|
|
||||||
audioContent(3L, publishedAt = publishedAt.plusDays(1)),
|
|
||||||
audioContent(2L, publishedAt = publishedAt),
|
|
||||||
audioContent(1L, publishedAt = publishedAt)
|
|
||||||
)
|
|
||||||
|
|
||||||
val marked = policy.markFirstAudioContent(audioContents)
|
|
||||||
|
|
||||||
assertTrue(marked.first { it.audioContentId == 1L }.isFirstContent)
|
|
||||||
assertFalse(marked.first { it.audioContentId == 2L }.isFirstContent)
|
|
||||||
assertFalse(marked.first { it.audioContentId == 3L }.isFirstContent)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun schedule(
|
private fun schedule(
|
||||||
targetId: Long,
|
targetId: Long,
|
||||||
scheduledAt: LocalDateTime,
|
scheduledAt: LocalDateTime,
|
||||||
@@ -112,10 +94,7 @@ class CreatorChannelHomeQueryPolicyTest {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun audioContent(
|
private fun audioContent(audioContentId: Long): CreatorChannelAudioContent {
|
||||||
audioContentId: Long,
|
|
||||||
publishedAt: LocalDateTime = LocalDateTime.of(2026, 6, 12, 10, 0)
|
|
||||||
): CreatorChannelAudioContent {
|
|
||||||
return CreatorChannelAudioContent(
|
return CreatorChannelAudioContent(
|
||||||
audioContentId = audioContentId,
|
audioContentId = audioContentId,
|
||||||
title = "audio-$audioContentId",
|
title = "audio-$audioContentId",
|
||||||
@@ -125,7 +104,6 @@ class CreatorChannelHomeQueryPolicyTest {
|
|||||||
isAdult = false,
|
isAdult = false,
|
||||||
isPointAvailable = false,
|
isPointAvailable = false,
|
||||||
isFirstContent = false,
|
isFirstContent = false,
|
||||||
publishedAt = publishedAt,
|
|
||||||
seriesName = null,
|
seriesName = null,
|
||||||
isOriginalSeries = null,
|
isOriginalSeries = null,
|
||||||
isOwned = false,
|
isOwned = false,
|
||||||
|
|||||||
@@ -388,7 +388,6 @@ private fun audioContentRecord(audioContentId: Long): CreatorChannelAudioContent
|
|||||||
isAdult = false,
|
isAdult = false,
|
||||||
isPointAvailable = true,
|
isPointAvailable = true,
|
||||||
isFirstContent = audioContentId == 1L,
|
isFirstContent = audioContentId == 1L,
|
||||||
publishedAt = LocalDateTime.of(2026, 6, 16, 10, 0),
|
|
||||||
seriesName = "series",
|
seriesName = "series",
|
||||||
isOriginalSeries = true,
|
isOriginalSeries = true,
|
||||||
isOwned = audioContentId == 1L,
|
isOwned = audioContentId == 1L,
|
||||||
|
|||||||
Reference in New Issue
Block a user