feat(creator-channel): 후원 탭 응답 조립을 추가한다
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package kr.co.vividnext.sodalive.v2.api.creator.channel.donation.application
|
||||
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.v2.api.creator.channel.donation.dto.CreatorChannelDonationTabResponse
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.donation.application.CreatorChannelDonationQueryService
|
||||
import org.springframework.stereotype.Service
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import java.time.LocalDateTime
|
||||
|
||||
@Service
|
||||
@Transactional(readOnly = true)
|
||||
class CreatorChannelDonationFacade(
|
||||
private val creatorChannelDonationQueryService: CreatorChannelDonationQueryService
|
||||
) {
|
||||
fun getDonationTab(
|
||||
creatorId: Long,
|
||||
viewer: Member,
|
||||
page: Int?,
|
||||
size: Int?,
|
||||
now: LocalDateTime = LocalDateTime.now()
|
||||
): CreatorChannelDonationTabResponse {
|
||||
return CreatorChannelDonationTabResponse.from(
|
||||
creatorChannelDonationQueryService.getDonationTab(
|
||||
creatorId = creatorId,
|
||||
viewer = viewer,
|
||||
page = page,
|
||||
size = size,
|
||||
now = now
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package kr.co.vividnext.sodalive.v2.api.creator.channel.donation.dto
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import kr.co.vividnext.sodalive.extensions.toUtcIso
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.donation.domain.CreatorChannelDonation
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.donation.domain.CreatorChannelDonationRanking
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.donation.domain.CreatorChannelDonationTab
|
||||
|
||||
data class CreatorChannelDonationTabResponse(
|
||||
val donationCount: Int,
|
||||
val rankings: List<MemberDonationRankingResponse>,
|
||||
val donations: List<CreatorChannelDonationResponse>,
|
||||
val page: Int,
|
||||
val size: Int,
|
||||
@JsonProperty("hasNext")
|
||||
val hasNext: Boolean
|
||||
) {
|
||||
companion object {
|
||||
fun from(tab: CreatorChannelDonationTab): CreatorChannelDonationTabResponse {
|
||||
return CreatorChannelDonationTabResponse(
|
||||
donationCount = tab.donationCount,
|
||||
rankings = tab.rankings.map(MemberDonationRankingResponse::from),
|
||||
donations = tab.donations.map(CreatorChannelDonationResponse::from),
|
||||
page = tab.page.page,
|
||||
size = tab.page.size,
|
||||
hasNext = tab.hasNext
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class MemberDonationRankingResponse(
|
||||
@JsonProperty("userId") val userId: Long,
|
||||
@JsonProperty("nickname") val nickname: String,
|
||||
@JsonProperty("profileImage") val profileImage: String,
|
||||
@JsonProperty("donationCan") val donationCan: Int
|
||||
) {
|
||||
companion object {
|
||||
fun from(ranking: CreatorChannelDonationRanking): MemberDonationRankingResponse {
|
||||
return MemberDonationRankingResponse(
|
||||
userId = ranking.userId,
|
||||
nickname = ranking.nickname,
|
||||
profileImage = ranking.profileImage,
|
||||
donationCan = ranking.donationCan
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class CreatorChannelDonationResponse(
|
||||
val nickname: String,
|
||||
val profileImageUrl: String,
|
||||
val can: Int,
|
||||
val message: String,
|
||||
val createdAtUtc: String
|
||||
) {
|
||||
companion object {
|
||||
fun from(donation: CreatorChannelDonation): CreatorChannelDonationResponse {
|
||||
return CreatorChannelDonationResponse(
|
||||
nickname = donation.nickname,
|
||||
profileImageUrl = donation.profileImageUrl,
|
||||
can = donation.can,
|
||||
message = donation.message,
|
||||
createdAtUtc = donation.createdAt.toUtcIso()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user