feat: 콘텐츠 정산 - 포인트를 사용한 주문과 사용하지 않은 주문 분리
This commit is contained in:
		| @@ -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<GetCalculateContentQueryData> { | ||||
|         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<GetCumulativeSalesByContentQueryData> { | ||||
|         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()) | ||||
|   | ||||
| @@ -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 { | ||||
|             "소장" | ||||
|   | ||||
| @@ -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 { | ||||
|             "소장" | ||||
|   | ||||
| @@ -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<GetCalculateContentQueryData> { | ||||
|         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<GetCumulativeSalesByContentQueryData> { | ||||
|         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()) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user