From c590eff4601b6f8fd8f710e52d56590d4f86e6bc Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 10 Nov 2023 17:20:11 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EC=A0=95=EC=82=B0=20API=20-=20=EC=B4=9D?= =?UTF-8?q?=20=EA=B0=9C=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../calculate/AdminCalculateQueryRepository.kt | 18 ++++++++++++++++++ .../admin/calculate/AdminCalculateService.kt | 13 ++++++++++--- .../calculate/GetCalculateContentResponse.kt | 5 +++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt index b45bef7..a8d44c8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateQueryRepository.kt @@ -46,6 +46,24 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { .fetch() } + fun getCalculateContentTotalCount(startDate: LocalDateTime, endDate: LocalDateTime): Int { + return queryFactory + .select(audioContent.id) + .from(useCanCalculate) + .innerJoin(useCanCalculate.useCan, useCan) + .innerJoin(useCan.order, order) + .innerJoin(order.audioContent, audioContent) + .innerJoin(audioContent.member, member) + .where( + useCanCalculate.status.eq(UseCanCalculateStatus.RECEIVED) + .and(order.createdAt.goe(startDate)) + .and(order.createdAt.loe(endDate)) + ) + .groupBy(audioContent.id, order.type) + .fetch() + .size + } + fun getCalculateContentList( startDate: LocalDateTime, endDate: LocalDateTime, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateService.kt index 003104e..ff17452 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/AdminCalculateService.kt @@ -77,7 +77,7 @@ class AdminCalculateService(private val repository: AdminCalculateQueryRepositor endDateStr: String, offset: Long, limit: Long - ): List { + ): GetCalculateContentResponse { val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") val startDate = LocalDate.parse(startDateStr, dateTimeFormatter).atTime(0, 0, 0) .atZone(ZoneId.of("Asia/Seoul")) @@ -89,7 +89,9 @@ class AdminCalculateService(private val repository: AdminCalculateQueryRepositor .withZoneSameInstant(ZoneId.of("UTC")) .toLocalDateTime() - return repository + val totalCount = repository.getCalculateContentTotalCount(startDate, endDate) + + val items = repository .getCalculateContentList(startDate, endDate, offset, limit) .map { val orderTypeStr = if (it.orderType == OrderType.RENTAL) { @@ -113,7 +115,7 @@ class AdminCalculateService(private val repository: AdminCalculateQueryRepositor // 입금액 val depositAmount = settlementAmount - tax - GetCalculateContentResponse( + GetCalculateContentItemResponse( nickname = it.nickname, title = it.title, registrationDate = it.registrationDate, @@ -130,5 +132,10 @@ class AdminCalculateService(private val repository: AdminCalculateQueryRepositor ) } .toList() + + return GetCalculateContentResponse( + totalCount = totalCount, + items = items + ) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCalculateContentResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCalculateContentResponse.kt index 60381dc..e7c0423 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCalculateContentResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCalculateContentResponse.kt @@ -1,6 +1,11 @@ package kr.co.vividnext.sodalive.admin.calculate data class GetCalculateContentResponse( + val totalCount: Int, + val items: List +) + +data class GetCalculateContentItemResponse( // 등록 크리에이터 닉네임 val nickname: String, // 콘텐츠 제목