.
This commit is contained in:
		| @@ -2,9 +2,10 @@ 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.common.SodaException | ||||
| import kr.co.vividnext.sodalive.can.use.CanUsage | ||||
| import kr.co.vividnext.sodalive.content.order.OrderType | ||||
| import kr.co.vividnext.sodalive.member.Member | ||||
| import org.springframework.cache.annotation.Cacheable | ||||
| @@ -18,80 +19,86 @@ import kotlin.math.roundToInt | ||||
| @Service | ||||
| class CreatorAdminCalculateService(private val repository: CreatorAdminCalculateQueryRepository) { | ||||
|     @Transactional(readOnly = true) | ||||
|     @Cacheable( | ||||
|         cacheNames = ["default"], | ||||
|         key = "'creatorCalculateLive:v20240403_01:' + " + "#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 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() | ||||
|         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() | ||||
|     } | ||||
|  | ||||
|     @Transactional(readOnly = true) | ||||
|     @Cacheable( | ||||
|         cacheNames = ["cache_ttl_3_hours"], | ||||
|         key = "'creatorCalculateContentList:v20240403_01:' + " + | ||||
|             "#startDateStr + ':' + #endDateStr + ':' + #memberId + ':' + #offset + ':' + #limit" | ||||
|     ) | ||||
|     fun getCalculateContentList( | ||||
|         startDateStr: String, | ||||
|         endDateStr: String, | ||||
| @@ -99,62 +106,61 @@ class CreatorAdminCalculateService(private val repository: CreatorAdminCalculate | ||||
|         offset: Long, | ||||
|         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() | ||||
|  | ||||
|         return GetCalculateContentListResponse(0, listOf()) | ||||
|         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) | ||||
|     } | ||||
|  | ||||
|     @Transactional(readOnly = true) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user