코인 충전, 코인 내역 API 추가

This commit is contained in:
2023-07-29 05:37:06 +09:00
parent c06de5f9f6
commit 7c8084bdd4
25 changed files with 846 additions and 2 deletions

View 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
)
}
}
}