fix(admin-chat-calculate): 캐릭터 정산 API
- ONLY_FULL_GROUP_BY 대응
This commit is contained in:
parent
634bf759ca
commit
e33e3b43b7
|
@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.admin.chat.calculate
|
||||||
|
|
||||||
import com.querydsl.core.types.Projections
|
import com.querydsl.core.types.Projections
|
||||||
import com.querydsl.core.types.dsl.CaseBuilder
|
import com.querydsl.core.types.dsl.CaseBuilder
|
||||||
|
import com.querydsl.core.types.dsl.Expressions
|
||||||
import com.querydsl.jpa.impl.JPAQueryFactory
|
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||||
import kr.co.vividnext.sodalive.can.use.CanUsage
|
import kr.co.vividnext.sodalive.can.use.CanUsage
|
||||||
import kr.co.vividnext.sodalive.can.use.QUseCan.useCan
|
import kr.co.vividnext.sodalive.can.use.QUseCan.useCan
|
||||||
|
@ -50,16 +51,25 @@ class AdminChatCalculateQueryRepository(
|
||||||
val c2 = QChatCharacter("c2")
|
val c2 = QChatCharacter("c2")
|
||||||
|
|
||||||
val characterIdExpr = c1.id.coalesce(c2.id)
|
val characterIdExpr = c1.id.coalesce(c2.id)
|
||||||
val characterNameExpr = c1.name.coalesce(c2.name)
|
// ONLY_FULL_GROUP_BY 대응: name/imagePath는 집계 함수로 선택
|
||||||
val characterImagePathExpr = c1.imagePath.coalesce(c2.imagePath)
|
val characterNameAgg = Expressions.stringTemplate(
|
||||||
|
"coalesce(max({0}), max({1}))",
|
||||||
|
c1.name,
|
||||||
|
c2.name
|
||||||
|
)
|
||||||
|
val characterImagePathAgg = Expressions.stringTemplate(
|
||||||
|
"coalesce(max({0}), max({1}))",
|
||||||
|
c1.imagePath,
|
||||||
|
c2.imagePath
|
||||||
|
)
|
||||||
|
|
||||||
val query = queryFactory
|
val query = queryFactory
|
||||||
.select(
|
.select(
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
ChatCharacterCalculateQueryData::class.java,
|
ChatCharacterCalculateQueryData::class.java,
|
||||||
characterIdExpr,
|
characterIdExpr,
|
||||||
characterNameExpr,
|
characterNameAgg,
|
||||||
characterImagePathExpr.prepend("/").prepend(imageHost),
|
characterImagePathAgg.prepend("/").prepend(imageHost),
|
||||||
imageSum,
|
imageSum,
|
||||||
messageSum,
|
messageSum,
|
||||||
quotaSum
|
quotaSum
|
||||||
|
@ -81,7 +91,7 @@ class AdminChatCalculateQueryRepository(
|
||||||
.and(useCan.createdAt.goe(startUtc))
|
.and(useCan.createdAt.goe(startUtc))
|
||||||
.and(useCan.createdAt.loe(endInclusiveUtc))
|
.and(useCan.createdAt.loe(endInclusiveUtc))
|
||||||
)
|
)
|
||||||
.groupBy(characterIdExpr, characterNameExpr, characterImagePathExpr)
|
.groupBy(characterIdExpr)
|
||||||
|
|
||||||
when (sort) {
|
when (sort) {
|
||||||
ChatCharacterCalculateSort.TOTAL_SALES_DESC ->
|
ChatCharacterCalculateSort.TOTAL_SALES_DESC ->
|
||||||
|
|
Loading…
Reference in New Issue