diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/calculate/CreatorAdminCalculateQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/calculate/CreatorAdminCalculateQueryRepository.kt index ef91a4f..40b83c0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/calculate/CreatorAdminCalculateQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/calculate/CreatorAdminCalculateQueryRepository.kt @@ -60,6 +60,7 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac useCan.isRefund.isFalse .and(liveRoom.beginDateTime.goe(startDate)) .and(liveRoom.beginDateTime.loe(endDate)) + .and(liveRoom.member.id.eq(memberId)) ) .groupBy(liveRoom.id, useCan.canUsage) .orderBy(liveRoom.id.desc(), useCan.canUsage.desc(), formattedDate.desc()) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/calculate/CreatorAdminCalculateService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/calculate/CreatorAdminCalculateService.kt index 46901ec..c83eafa 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/calculate/CreatorAdminCalculateService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/calculate/CreatorAdminCalculateService.kt @@ -2,10 +2,9 @@ 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 import org.springframework.cache.annotation.Cacheable @@ -19,86 +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 { - 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() + throw SodaException("점검중입니다.") - 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, @@ -106,61 +99,62 @@ class CreatorAdminCalculateService(private val repository: CreatorAdminCalculate offset: Long, limit: Long ): GetCalculateContentListResponse { - 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() + 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 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)