test #340
| @@ -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 -> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user