유저 행동 데이터, 포인트 추가 #309

Merged
klaus merged 25 commits from test into main 2025-04-24 02:44:58 +00:00
4 changed files with 50 additions and 4 deletions
Showing only changes of commit e2daff6463 - Show all commits

View File

@ -1,5 +1,6 @@
package kr.co.vividnext.sodalive.admin.calculate 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.DateTimePath
import com.querydsl.core.types.dsl.Expressions import com.querydsl.core.types.dsl.Expressions
import com.querydsl.core.types.dsl.StringTemplate 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> { fun getCalculateContentList(startDate: LocalDateTime, endDate: LocalDateTime): List<GetCalculateContentQueryData> {
val orderFormattedDate = getFormattedDate(order.createdAt) val orderFormattedDate = getFormattedDate(order.createdAt)
val pointGroup = CaseBuilder()
.`when`(order.point.loe(0)).then(0)
.otherwise(1)
return queryFactory return queryFactory
.select( .select(
QGetCalculateContentQueryData( QGetCalculateContentQueryData(
@ -62,6 +67,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) {
order.can, order.can,
order.id.count(), order.id.count(),
order.can.sum(), order.can.sum(),
order.point.sum(),
creatorSettlementRatio.contentSettlementRatio creatorSettlementRatio.contentSettlementRatio
) )
) )
@ -80,6 +86,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) {
order.type, order.type,
orderFormattedDate, orderFormattedDate,
order.can, order.can,
pointGroup,
creatorSettlementRatio.contentSettlementRatio creatorSettlementRatio.contentSettlementRatio
) )
.orderBy(member.id.desc(), orderFormattedDate.desc(), audioContent.id.asc()) .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> { fun getCumulativeSalesByContent(offset: Long, limit: Long): List<GetCumulativeSalesByContentQueryData> {
val pointGroup = CaseBuilder()
.`when`(order.point.loe(0)).then(0)
.otherwise(1)
return queryFactory return queryFactory
.select( .select(
QGetCumulativeSalesByContentQueryData( QGetCumulativeSalesByContentQueryData(
@ -123,6 +134,7 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) {
order.can, order.can,
order.id.count(), order.id.count(),
order.can.sum(), order.can.sum(),
order.point.sum(),
creatorSettlementRatio.contentSettlementRatio creatorSettlementRatio.contentSettlementRatio
) )
) )
@ -132,7 +144,14 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) {
.leftJoin(creatorSettlementRatio) .leftJoin(creatorSettlementRatio)
.on(member.id.eq(creatorSettlementRatio.member.id)) .on(member.id.eq(creatorSettlementRatio.member.id))
.where(order.isActive.isTrue) .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) .offset(offset)
.limit(limit) .limit(limit)
.orderBy(member.id.desc(), audioContent.id.desc()) .orderBy(member.id.desc(), audioContent.id.desc())

View File

@ -22,11 +22,15 @@ data class GetCalculateContentQueryData @QueryProjection constructor(
val numberOfPeople: Long, val numberOfPeople: Long,
// 합계 // 합계
val totalCan: Int, val totalCan: Int,
// 포인트
val totalPoint: Int,
// 정산비율 // 정산비율
val settlementRatio: Int? val settlementRatio: Int?
) { ) {
fun toGetCalculateContentResponse(): GetCalculateContentResponse { fun toGetCalculateContentResponse(): GetCalculateContentResponse {
val orderTypeStr = if (orderType == OrderType.RENTAL) { val orderTypeStr = if (totalPoint > 0) {
"포인트"
} else if (orderType == OrderType.RENTAL) {
"대여" "대여"
} else { } else {
"소장" "소장"

View File

@ -21,11 +21,15 @@ data class GetCumulativeSalesByContentQueryData @QueryProjection constructor(
val numberOfPeople: Long, val numberOfPeople: Long,
// 합계 // 합계
val totalCan: Int, val totalCan: Int,
// 포인트
val totalPoint: Int,
// 정산비율 // 정산비율
val settlementRatio: Int? val settlementRatio: Int?
) { ) {
fun toCumulativeSalesByContentItem(): CumulativeSalesByContentItem { fun toCumulativeSalesByContentItem(): CumulativeSalesByContentItem {
val orderTypeStr = if (orderType == OrderType.RENTAL) { val orderTypeStr = if (totalPoint > 0) {
"포인트"
} else if (orderType == OrderType.RENTAL) {
"대여" "대여"
} else { } else {
"소장" "소장"

View File

@ -1,5 +1,6 @@
package kr.co.vividnext.sodalive.creator.admin.calculate 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.DateTimePath
import com.querydsl.core.types.dsl.Expressions import com.querydsl.core.types.dsl.Expressions
import com.querydsl.core.types.dsl.StringTemplate import com.querydsl.core.types.dsl.StringTemplate
@ -95,6 +96,10 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac
limit: Long limit: Long
): List<GetCalculateContentQueryData> { ): List<GetCalculateContentQueryData> {
val orderFormattedDate = getFormattedDate(order.createdAt) val orderFormattedDate = getFormattedDate(order.createdAt)
val pointGroup = CaseBuilder()
.`when`(order.point.loe(0)).then(0)
.otherwise(1)
return queryFactory return queryFactory
.select( .select(
QGetCalculateContentQueryData( QGetCalculateContentQueryData(
@ -106,6 +111,7 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac
order.can, order.can,
order.id.count(), order.id.count(),
order.can.sum(), order.can.sum(),
order.point.sum(),
creatorSettlementRatio.contentSettlementRatio creatorSettlementRatio.contentSettlementRatio
) )
) )
@ -125,6 +131,7 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac
order.type, order.type,
orderFormattedDate, orderFormattedDate,
order.can, order.can,
pointGroup,
creatorSettlementRatio.contentSettlementRatio creatorSettlementRatio.contentSettlementRatio
) )
.offset(offset) .offset(offset)
@ -167,6 +174,10 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac
offset: Long, offset: Long,
limit: Long limit: Long
): List<GetCumulativeSalesByContentQueryData> { ): List<GetCumulativeSalesByContentQueryData> {
val pointGroup = CaseBuilder()
.`when`(order.point.loe(0)).then(0)
.otherwise(1)
return queryFactory return queryFactory
.select( .select(
QGetCumulativeSalesByContentQueryData( QGetCumulativeSalesByContentQueryData(
@ -177,6 +188,7 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac
order.can, order.can,
order.id.count(), order.id.count(),
order.can.sum(), order.can.sum(),
order.point.sum(),
creatorSettlementRatio.contentSettlementRatio creatorSettlementRatio.contentSettlementRatio
) )
) )
@ -189,7 +201,14 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac
audioContent.member.id.eq(memberId) audioContent.member.id.eq(memberId)
.and(order.isActive.isTrue) .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) .offset(offset)
.limit(limit) .limit(limit)
.orderBy(member.id.desc(), audioContent.id.desc()) .orderBy(member.id.desc(), audioContent.id.desc())