test
This commit is contained in:
parent
8d185c274a
commit
aad4f8dbb5
|
@ -2,10 +2,8 @@ package kr.co.vividnext.sodalive.creator.admin.calculate
|
|||
|
||||
import kr.co.vividnext.sodalive.admin.calculate.CumulativeSalesByContentItem
|
||||
import kr.co.vividnext.sodalive.admin.calculate.GetCalculateContentDonationResponse
|
||||
import kr.co.vividnext.sodalive.admin.calculate.GetCalculateContentResponse
|
||||
import kr.co.vividnext.sodalive.admin.calculate.GetCalculateLiveResponse
|
||||
import kr.co.vividnext.sodalive.admin.calculate.GetCumulativeSalesByContentResponse
|
||||
import kr.co.vividnext.sodalive.can.use.CanUsage
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.content.order.OrderType
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
|
@ -20,88 +18,80 @@ import kotlin.math.roundToInt
|
|||
@Service
|
||||
class CreatorAdminCalculateService(private val repository: CreatorAdminCalculateQueryRepository) {
|
||||
@Transactional(readOnly = true)
|
||||
@Cacheable(
|
||||
cacheNames = ["default"],
|
||||
key = "'creatorCalculateLive:' + " + "#member + ':' + #startDateStr + ':' + #endDateStr"
|
||||
)
|
||||
fun getCalculateLive(startDateStr: String, endDateStr: String, member: Member): List<GetCalculateLiveResponse> {
|
||||
throw SodaException("점검중입니다.")
|
||||
|
||||
val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
||||
val startDate = LocalDate.parse(startDateStr, dateTimeFormatter).atTime(0, 0, 0)
|
||||
.atZone(ZoneId.of("Asia/Seoul"))
|
||||
.withZoneSameInstant(ZoneId.of("UTC"))
|
||||
.toLocalDateTime()
|
||||
|
||||
val endDate = LocalDate.parse(endDateStr, dateTimeFormatter).atTime(23, 59, 59)
|
||||
.atZone(ZoneId.of("Asia/Seoul"))
|
||||
.withZoneSameInstant(ZoneId.of("UTC"))
|
||||
.toLocalDateTime()
|
||||
|
||||
return repository
|
||||
.getCalculateLive(startDate, endDate, member.id!!)
|
||||
.asSequence()
|
||||
.map {
|
||||
val canUsageStr = when (it.canUsage) {
|
||||
CanUsage.LIVE -> {
|
||||
"유료"
|
||||
}
|
||||
|
||||
CanUsage.SPIN_ROULETTE -> {
|
||||
"룰렛"
|
||||
}
|
||||
|
||||
else -> {
|
||||
"후원"
|
||||
}
|
||||
}
|
||||
|
||||
val numberOfPeople = if (it.canUsage == CanUsage.LIVE) {
|
||||
it.memberCount.toInt()
|
||||
} else {
|
||||
0
|
||||
}
|
||||
|
||||
// 원화 = totalCoin * 100 ( 캔 1개 = 100원 )
|
||||
val totalKrw = it.totalAmount * 100
|
||||
|
||||
// 결제수수료 : 6.6%
|
||||
val paymentFee = totalKrw * 0.066f
|
||||
|
||||
// 정산금액 = (원화 - 결제수수료) 의 70%
|
||||
val settlementAmount = (totalKrw.toFloat() - paymentFee) * 0.7
|
||||
|
||||
// 원천세 = 정산금액의 3.3%
|
||||
val tax = settlementAmount * 0.033
|
||||
|
||||
// 입금액
|
||||
val depositAmount = settlementAmount - tax
|
||||
|
||||
GetCalculateLiveResponse(
|
||||
email = it.email,
|
||||
nickname = it.nickname,
|
||||
date = it.date,
|
||||
title = it.title,
|
||||
entranceFee = it.entranceFee,
|
||||
canUsageStr = canUsageStr,
|
||||
numberOfPeople = numberOfPeople,
|
||||
totalAmount = it.totalAmount,
|
||||
totalKrw = totalKrw,
|
||||
paymentFee = paymentFee.roundToInt(),
|
||||
settlementAmount = settlementAmount.roundToInt(),
|
||||
tax = tax.roundToInt(),
|
||||
depositAmount = depositAmount.roundToInt()
|
||||
)
|
||||
}
|
||||
.toList()
|
||||
// val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
||||
// val startDate = LocalDate.parse(startDateStr, dateTimeFormatter).atTime(0, 0, 0)
|
||||
// .atZone(ZoneId.of("Asia/Seoul"))
|
||||
// .withZoneSameInstant(ZoneId.of("UTC"))
|
||||
// .toLocalDateTime()
|
||||
//
|
||||
// val endDate = LocalDate.parse(endDateStr, dateTimeFormatter).atTime(23, 59, 59)
|
||||
// .atZone(ZoneId.of("Asia/Seoul"))
|
||||
// .withZoneSameInstant(ZoneId.of("UTC"))
|
||||
// .toLocalDateTime()
|
||||
//
|
||||
// return repository
|
||||
// .getCalculateLive(startDate, endDate, member.id!!)
|
||||
// .asSequence()
|
||||
// .map {
|
||||
// val canUsageStr = when (it.canUsage) {
|
||||
// CanUsage.LIVE -> {
|
||||
// "유료"
|
||||
// }
|
||||
//
|
||||
// CanUsage.SPIN_ROULETTE -> {
|
||||
// "룰렛"
|
||||
// }
|
||||
//
|
||||
// else -> {
|
||||
// "후원"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// val numberOfPeople = if (it.canUsage == CanUsage.LIVE) {
|
||||
// it.memberCount.toInt()
|
||||
// } else {
|
||||
// 0
|
||||
// }
|
||||
//
|
||||
// // 원화 = totalCoin * 100 ( 캔 1개 = 100원 )
|
||||
// val totalKrw = it.totalAmount * 100
|
||||
//
|
||||
// // 결제수수료 : 6.6%
|
||||
// val paymentFee = totalKrw * 0.066f
|
||||
//
|
||||
// // 정산금액 = (원화 - 결제수수료) 의 70%
|
||||
// val settlementAmount = (totalKrw.toFloat() - paymentFee) * 0.7
|
||||
//
|
||||
// // 원천세 = 정산금액의 3.3%
|
||||
// val tax = settlementAmount * 0.033
|
||||
//
|
||||
// // 입금액
|
||||
// val depositAmount = settlementAmount - tax
|
||||
//
|
||||
// GetCalculateLiveResponse(
|
||||
// email = it.email,
|
||||
// nickname = it.nickname,
|
||||
// date = it.date,
|
||||
// title = it.title,
|
||||
// entranceFee = it.entranceFee,
|
||||
// canUsageStr = canUsageStr,
|
||||
// numberOfPeople = numberOfPeople,
|
||||
// totalAmount = it.totalAmount,
|
||||
// totalKrw = totalKrw,
|
||||
// paymentFee = paymentFee.roundToInt(),
|
||||
// settlementAmount = settlementAmount.roundToInt(),
|
||||
// tax = tax.roundToInt(),
|
||||
// depositAmount = depositAmount.roundToInt()
|
||||
// )
|
||||
// }
|
||||
// .toList()
|
||||
return listOf()
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
@Cacheable(
|
||||
cacheNames = ["cache_ttl_3_hours"],
|
||||
key = "'creatorCalculateContentList:' + " +
|
||||
"#startDateStr + ':' + #endDateStr + ':' + #memberId + ':' + #offset + ':' + #limit"
|
||||
)
|
||||
fun getCalculateContentList(
|
||||
startDateStr: String,
|
||||
endDateStr: String,
|
||||
|
@ -110,62 +100,61 @@ class CreatorAdminCalculateService(private val repository: CreatorAdminCalculate
|
|||
limit: Long
|
||||
): GetCalculateContentListResponse {
|
||||
throw SodaException("점검중입니다.")
|
||||
// val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
||||
// val startDate = LocalDate.parse(startDateStr, dateTimeFormatter).atTime(0, 0, 0)
|
||||
// .atZone(ZoneId.of("Asia/Seoul"))
|
||||
// .withZoneSameInstant(ZoneId.of("UTC"))
|
||||
// .toLocalDateTime()
|
||||
//
|
||||
// val endDate = LocalDate.parse(endDateStr, dateTimeFormatter).atTime(23, 59, 59)
|
||||
// .atZone(ZoneId.of("Asia/Seoul"))
|
||||
// .withZoneSameInstant(ZoneId.of("UTC"))
|
||||
// .toLocalDateTime()
|
||||
//
|
||||
// val totalCount = repository.getCalculateContentListTotalCount(startDate, endDate, memberId)
|
||||
// val items = repository.getCalculateContentList(startDate, endDate, memberId, offset, limit)
|
||||
// .asSequence()
|
||||
// .map {
|
||||
// val orderTypeStr = if (it.orderType == OrderType.RENTAL) {
|
||||
// "대여"
|
||||
// } else {
|
||||
// "소장"
|
||||
// }
|
||||
//
|
||||
// // 원화 = totalCoin * 100 ( 캔 1개 = 100원 )
|
||||
// val totalKrw = it.totalCan * 100
|
||||
//
|
||||
// // 결제수수료 : 6.6%
|
||||
// val paymentFee = totalKrw * 0.066f
|
||||
//
|
||||
// // 정산금액 = (원화 - 결제수수료) 의 70%
|
||||
// val settlementAmount = (totalKrw.toFloat() - paymentFee) * 0.7
|
||||
//
|
||||
// // 원천세 = 정산금액의 3.3%
|
||||
// val tax = settlementAmount * 0.033
|
||||
//
|
||||
// // 입금액
|
||||
// val depositAmount = settlementAmount - tax
|
||||
//
|
||||
// GetCalculateContentResponse(
|
||||
// nickname = it.nickname,
|
||||
// title = it.title,
|
||||
// registrationDate = it.registrationDate,
|
||||
// saleDate = it.saleDate,
|
||||
// orderType = orderTypeStr,
|
||||
// orderPrice = it.orderPrice,
|
||||
// numberOfPeople = it.numberOfPeople.toInt(),
|
||||
// totalCan = it.totalCan,
|
||||
// totalKrw = totalKrw,
|
||||
// paymentFee = paymentFee.roundToInt(),
|
||||
// settlementAmount = settlementAmount.roundToInt(),
|
||||
// tax = tax.roundToInt(),
|
||||
// depositAmount = depositAmount.roundToInt()
|
||||
// )
|
||||
// }
|
||||
// .toList()
|
||||
|
||||
val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
||||
val startDate = LocalDate.parse(startDateStr, dateTimeFormatter).atTime(0, 0, 0)
|
||||
.atZone(ZoneId.of("Asia/Seoul"))
|
||||
.withZoneSameInstant(ZoneId.of("UTC"))
|
||||
.toLocalDateTime()
|
||||
|
||||
val endDate = LocalDate.parse(endDateStr, dateTimeFormatter).atTime(23, 59, 59)
|
||||
.atZone(ZoneId.of("Asia/Seoul"))
|
||||
.withZoneSameInstant(ZoneId.of("UTC"))
|
||||
.toLocalDateTime()
|
||||
|
||||
val totalCount = repository.getCalculateContentListTotalCount(startDate, endDate, memberId)
|
||||
val items = repository.getCalculateContentList(startDate, endDate, memberId, offset, limit)
|
||||
.asSequence()
|
||||
.map {
|
||||
val orderTypeStr = if (it.orderType == OrderType.RENTAL) {
|
||||
"대여"
|
||||
} else {
|
||||
"소장"
|
||||
}
|
||||
|
||||
// 원화 = totalCoin * 100 ( 캔 1개 = 100원 )
|
||||
val totalKrw = it.totalCan * 100
|
||||
|
||||
// 결제수수료 : 6.6%
|
||||
val paymentFee = totalKrw * 0.066f
|
||||
|
||||
// 정산금액 = (원화 - 결제수수료) 의 70%
|
||||
val settlementAmount = (totalKrw.toFloat() - paymentFee) * 0.7
|
||||
|
||||
// 원천세 = 정산금액의 3.3%
|
||||
val tax = settlementAmount * 0.033
|
||||
|
||||
// 입금액
|
||||
val depositAmount = settlementAmount - tax
|
||||
|
||||
GetCalculateContentResponse(
|
||||
nickname = it.nickname,
|
||||
title = it.title,
|
||||
registrationDate = it.registrationDate,
|
||||
saleDate = it.saleDate,
|
||||
orderType = orderTypeStr,
|
||||
orderPrice = it.orderPrice,
|
||||
numberOfPeople = it.numberOfPeople.toInt(),
|
||||
totalCan = it.totalCan,
|
||||
totalKrw = totalKrw,
|
||||
paymentFee = paymentFee.roundToInt(),
|
||||
settlementAmount = settlementAmount.roundToInt(),
|
||||
tax = tax.roundToInt(),
|
||||
depositAmount = depositAmount.roundToInt()
|
||||
)
|
||||
}
|
||||
.toList()
|
||||
|
||||
return GetCalculateContentListResponse(totalCount, items)
|
||||
return GetCalculateContentListResponse(0, listOf())
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
|
|
Loading…
Reference in New Issue