diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomRepository.kt index c87176b..afc8c46 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomRepository.kt @@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.live.room import com.querydsl.core.types.Projections import com.querydsl.core.types.dsl.CaseBuilder import com.querydsl.core.types.dsl.Expressions +import com.querydsl.core.types.dsl.NumberExpression import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.can.use.CanUsage import kr.co.vividnext.sodalive.can.use.QUseCan.useCan @@ -248,6 +249,15 @@ class LiveRoomQueryRepositoryImpl( .and(useCan.canUsage.eq(CanUsage.DONATION).or(useCan.canUsage.eq(CanUsage.SPIN_ROULETTE))) .and(useCan.isRefund.isFalse) + val sortExpression: NumberExpression = if (isLiveCreator) { + useCan.can.sum().add(useCan.rewardCan.sum()) + } else { + CaseBuilder() + .`when`(useCan.isSecret.isFalse) + .then(useCan.can.sum().add(useCan.rewardCan.sum())) + .otherwise(0) + } + return queryFactory .select( QGetLiveRoomDonationItem( @@ -283,7 +293,7 @@ class LiveRoomQueryRepositoryImpl( .join(useCan.member, member) .groupBy(useCan.member.id) .where(where) - .orderBy(useCan.can.sum().add(useCan.rewardCan.sum()).desc()) + .orderBy(sortExpression.desc()) .fetch() }