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())