From e2daff64633caeb7285a8d12e51849b551c68715 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 23 Apr 2025 00:55:24 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=A0=95?= =?UTF-8?q?=EC=82=B0=20-=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=EB=A5=BC=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=9C=20=EC=A3=BC=EB=AC=B8=EA=B3=BC=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20=EC=95=8A=EC=9D=80=20?= =?UTF-8?q?=EC=A3=BC=EB=AC=B8=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminCalculateQueryRepository.kt | 21 ++++++++++++++++++- .../calculate/GetCalculateContentQueryData.kt | 6 +++++- .../GetCumulativeSalesByContentResponse.kt | 6 +++++- .../CreatorAdminCalculateQueryRepository.kt | 21 ++++++++++++++++++- 4 files changed, 50 insertions(+), 4 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 47c243b..e7b6e54 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 @@ -1,5 +1,6 @@ package kr.co.vividnext.sodalive.admin.calculate +import com.querydsl.core.types.dsl.CaseBuilder import com.querydsl.core.types.dsl.DateTimePath import com.querydsl.core.types.dsl.Expressions import com.querydsl.core.types.dsl.StringTemplate @@ -51,6 +52,10 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { fun getCalculateContentList(startDate: LocalDateTime, endDate: LocalDateTime): List { val orderFormattedDate = getFormattedDate(order.createdAt) + val pointGroup = CaseBuilder() + .`when`(order.point.loe(0)).then(0) + .otherwise(1) + return queryFactory .select( QGetCalculateContentQueryData( @@ -62,6 +67,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { order.can, order.id.count(), order.can.sum(), + order.point.sum(), creatorSettlementRatio.contentSettlementRatio ) ) @@ -80,6 +86,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { order.type, orderFormattedDate, order.can, + pointGroup, creatorSettlementRatio.contentSettlementRatio ) .orderBy(member.id.desc(), orderFormattedDate.desc(), audioContent.id.asc()) @@ -113,6 +120,10 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { } fun getCumulativeSalesByContent(offset: Long, limit: Long): List { + val pointGroup = CaseBuilder() + .`when`(order.point.loe(0)).then(0) + .otherwise(1) + return queryFactory .select( QGetCumulativeSalesByContentQueryData( @@ -123,6 +134,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { order.can, order.id.count(), order.can.sum(), + order.point.sum(), creatorSettlementRatio.contentSettlementRatio ) ) @@ -132,7 +144,14 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) { .leftJoin(creatorSettlementRatio) .on(member.id.eq(creatorSettlementRatio.member.id)) .where(order.isActive.isTrue) - .groupBy(member.id, audioContent.id, order.type, order.can) + .groupBy( + member.id, + audioContent.id, + order.type, + order.can, + pointGroup, + creatorSettlementRatio.contentSettlementRatio + ) .offset(offset) .limit(limit) .orderBy(member.id.desc(), audioContent.id.desc()) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCalculateContentQueryData.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCalculateContentQueryData.kt index cf0a0c6..b3a60a4 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCalculateContentQueryData.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCalculateContentQueryData.kt @@ -22,11 +22,15 @@ data class GetCalculateContentQueryData @QueryProjection constructor( val numberOfPeople: Long, // 합계 val totalCan: Int, + // 포인트 + val totalPoint: Int, // 정산비율 val settlementRatio: Int? ) { fun toGetCalculateContentResponse(): GetCalculateContentResponse { - val orderTypeStr = if (orderType == OrderType.RENTAL) { + val orderTypeStr = if (totalPoint > 0) { + "포인트" + } else if (orderType == OrderType.RENTAL) { "대여" } else { "소장" diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCumulativeSalesByContentResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCumulativeSalesByContentResponse.kt index 5c49858..a003a78 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCumulativeSalesByContentResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/calculate/GetCumulativeSalesByContentResponse.kt @@ -21,11 +21,15 @@ data class GetCumulativeSalesByContentQueryData @QueryProjection constructor( val numberOfPeople: Long, // 합계 val totalCan: Int, + // 포인트 + val totalPoint: Int, // 정산비율 val settlementRatio: Int? ) { fun toCumulativeSalesByContentItem(): CumulativeSalesByContentItem { - val orderTypeStr = if (orderType == OrderType.RENTAL) { + val orderTypeStr = if (totalPoint > 0) { + "포인트" + } else if (orderType == OrderType.RENTAL) { "대여" } else { "소장" 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 bae92bc..f9b4289 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 @@ -1,5 +1,6 @@ package kr.co.vividnext.sodalive.creator.admin.calculate +import com.querydsl.core.types.dsl.CaseBuilder import com.querydsl.core.types.dsl.DateTimePath import com.querydsl.core.types.dsl.Expressions import com.querydsl.core.types.dsl.StringTemplate @@ -95,6 +96,10 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac limit: Long ): List { val orderFormattedDate = getFormattedDate(order.createdAt) + val pointGroup = CaseBuilder() + .`when`(order.point.loe(0)).then(0) + .otherwise(1) + return queryFactory .select( QGetCalculateContentQueryData( @@ -106,6 +111,7 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac order.can, order.id.count(), order.can.sum(), + order.point.sum(), creatorSettlementRatio.contentSettlementRatio ) ) @@ -125,6 +131,7 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac order.type, orderFormattedDate, order.can, + pointGroup, creatorSettlementRatio.contentSettlementRatio ) .offset(offset) @@ -167,6 +174,10 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac offset: Long, limit: Long ): List { + val pointGroup = CaseBuilder() + .`when`(order.point.loe(0)).then(0) + .otherwise(1) + return queryFactory .select( QGetCumulativeSalesByContentQueryData( @@ -177,6 +188,7 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac order.can, order.id.count(), order.can.sum(), + order.point.sum(), creatorSettlementRatio.contentSettlementRatio ) ) @@ -189,7 +201,14 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac audioContent.member.id.eq(memberId) .and(order.isActive.isTrue) ) - .groupBy(member.id, audioContent.id, order.type, order.can) + .groupBy( + member.id, + audioContent.id, + order.type, + order.can, + pointGroup, + creatorSettlementRatio.contentSettlementRatio + ) .offset(offset) .limit(limit) .orderBy(member.id.desc(), audioContent.id.desc())