코인 충전, 코인 내역 API 추가
This commit is contained in:
118
src/main/kotlin/kr/co/vividnext/sodalive/can/CanService.kt
Normal file
118
src/main/kotlin/kr/co/vividnext/sodalive/can/CanService.kt
Normal file
@@ -0,0 +1,118 @@
|
||||
package kr.co.vividnext.sodalive.can
|
||||
|
||||
import kr.co.vividnext.sodalive.can.charge.ChargeStatus
|
||||
import kr.co.vividnext.sodalive.can.payment.PaymentGateway
|
||||
import kr.co.vividnext.sodalive.can.use.CanUsage
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import org.springframework.data.domain.Pageable
|
||||
import org.springframework.stereotype.Service
|
||||
import java.time.ZoneId
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
@Service
|
||||
class CanService(private val repository: CanRepository) {
|
||||
fun getCans(): List<CanResponse> {
|
||||
return repository.findAllByStatus(status = CanStatus.SALE)
|
||||
}
|
||||
|
||||
fun getCanStatus(member: Member, container: String): GetCanStatusResponse {
|
||||
return GetCanStatusResponse(
|
||||
chargeCan = member.getChargeCan(container),
|
||||
rewardCan = member.getRewardCan(container)
|
||||
)
|
||||
}
|
||||
|
||||
fun getCanUseStatus(
|
||||
member: Member,
|
||||
pageable: Pageable,
|
||||
timezone: String,
|
||||
container: String
|
||||
): List<GetCanUseStatusResponseItem> {
|
||||
return repository.getCanUseStatus(member, pageable)
|
||||
.filter { (it.can + it.rewardCan) > 0 }
|
||||
.filter {
|
||||
when (container) {
|
||||
"aos" -> {
|
||||
it.useCanCalculates.any { useCanCalculate ->
|
||||
useCanCalculate.paymentGateway == PaymentGateway.PG ||
|
||||
useCanCalculate.paymentGateway == PaymentGateway.GOOGLE_IAP
|
||||
}
|
||||
}
|
||||
|
||||
"ios" -> {
|
||||
it.useCanCalculates.any { useCanCalculate ->
|
||||
useCanCalculate.paymentGateway == PaymentGateway.PG ||
|
||||
useCanCalculate.paymentGateway == PaymentGateway.APPLE_IAP
|
||||
}
|
||||
}
|
||||
|
||||
else -> it.useCanCalculates.any { useCanCalculate ->
|
||||
useCanCalculate.paymentGateway == PaymentGateway.PG
|
||||
}
|
||||
}
|
||||
}
|
||||
.map {
|
||||
val title: String = when (it.canUsage) {
|
||||
CanUsage.DONATION -> {
|
||||
"[후원] ${it.room!!.member!!.nickname}"
|
||||
}
|
||||
|
||||
CanUsage.LIVE -> {
|
||||
"[라이브] ${it.room!!.title}"
|
||||
}
|
||||
|
||||
CanUsage.CHANGE_NICKNAME -> "닉네임 변경"
|
||||
CanUsage.ORDER_CONTENT -> "콘텐츠 구매"
|
||||
}
|
||||
|
||||
val createdAt = it.createdAt!!
|
||||
.atZone(ZoneId.of("UTC"))
|
||||
.withZoneSameInstant(ZoneId.of(timezone))
|
||||
|
||||
GetCanUseStatusResponseItem(
|
||||
title = title,
|
||||
date = createdAt.format(
|
||||
DateTimeFormatter.ofPattern("yyyy-MM-dd | HH:mm:ss")
|
||||
),
|
||||
can = it.can + it.rewardCan
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun getCanChargeStatus(
|
||||
member: Member,
|
||||
pageable: Pageable,
|
||||
timezone: String,
|
||||
container: String
|
||||
): List<GetCanChargeStatusResponseItem> {
|
||||
return repository.getCanChargeStatus(member, pageable, container)
|
||||
.map {
|
||||
val canTitle = it.title ?: ""
|
||||
val chargeMethod = when (it.status) {
|
||||
ChargeStatus.CHARGE, ChargeStatus.EVENT -> {
|
||||
it.payment!!.method ?: ""
|
||||
}
|
||||
|
||||
ChargeStatus.REFUND_CHARGE -> {
|
||||
"환불"
|
||||
}
|
||||
|
||||
else -> {
|
||||
"환불"
|
||||
}
|
||||
}
|
||||
|
||||
val createdAt = it.createdAt!!
|
||||
.atZone(ZoneId.of("UTC"))
|
||||
.withZoneSameInstant(ZoneId.of(timezone))
|
||||
|
||||
GetCanChargeStatusResponseItem(
|
||||
canTitle = canTitle,
|
||||
date = createdAt.format(
|
||||
DateTimeFormatter.ofPattern("yyyy-MM-dd | HH:mm:ss")
|
||||
),
|
||||
chargeMethod = chargeMethod
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user