fix(admin-chat-calculate): 캐릭터 정산 API
- ONLY_FULL_GROUP_BY 대응
This commit is contained in:
		| @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.admin.chat.calculate | ||||
|  | ||||
| import com.querydsl.core.types.Projections | ||||
| import com.querydsl.core.types.dsl.CaseBuilder | ||||
| import com.querydsl.core.types.dsl.Expressions | ||||
| import com.querydsl.jpa.impl.JPAQueryFactory | ||||
| import kr.co.vividnext.sodalive.can.use.CanUsage | ||||
| import kr.co.vividnext.sodalive.can.use.QUseCan.useCan | ||||
| @@ -50,16 +51,25 @@ class AdminChatCalculateQueryRepository( | ||||
|         val c2 = QChatCharacter("c2") | ||||
|  | ||||
|         val characterIdExpr = c1.id.coalesce(c2.id) | ||||
|         val characterNameExpr = c1.name.coalesce(c2.name) | ||||
|         val characterImagePathExpr = c1.imagePath.coalesce(c2.imagePath) | ||||
|         // ONLY_FULL_GROUP_BY 대응: name/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 | ||||
|             .select( | ||||
|                 Projections.constructor( | ||||
|                     ChatCharacterCalculateQueryData::class.java, | ||||
|                     characterIdExpr, | ||||
|                     characterNameExpr, | ||||
|                     characterImagePathExpr.prepend("/").prepend(imageHost), | ||||
|                     characterNameAgg, | ||||
|                     characterImagePathAgg.prepend("/").prepend(imageHost), | ||||
|                     imageSum, | ||||
|                     messageSum, | ||||
|                     quotaSum | ||||
| @@ -81,7 +91,7 @@ class AdminChatCalculateQueryRepository( | ||||
|                     .and(useCan.createdAt.goe(startUtc)) | ||||
|                     .and(useCan.createdAt.loe(endInclusiveUtc)) | ||||
|             ) | ||||
|             .groupBy(characterIdExpr, characterNameExpr, characterImagePathExpr) | ||||
|             .groupBy(characterIdExpr) | ||||
|  | ||||
|         when (sort) { | ||||
|             ChatCharacterCalculateSort.TOTAL_SALES_DESC -> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user