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 afc8c46..d1fe8f2 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 @@ -52,7 +52,7 @@ interface LiveRoomQueryRepository { fun getLiveRoomAndAccountId(roomId: Long, memberId: Long): LiveRoom? fun getRecentRoomInfo(memberId: Long): GetRecentRoomInfoResponse? fun getDonationTotal(roomId: Long): Int? - fun getDonationList(roomId: Long, isLiveCreator: Boolean): List + fun getDonationList(roomId: Long, isLiveCreator: Boolean, memberId: Long): List fun getRoomActiveAndChannelNameIsNotNull(memberId: Long): List fun getActiveRoomIdList(memberId: Long): Int fun getTotalHeartCount(roomId: Long): Int? @@ -244,17 +244,17 @@ class LiveRoomQueryRepositoryImpl( .fetchOne() } - override fun getDonationList(roomId: Long, isLiveCreator: Boolean): List { + override fun getDonationList(roomId: Long, isLiveCreator: Boolean, memberId: Long): List { val where = liveRoom.id.eq(roomId) .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()) + useCan.can.add(useCan.rewardCan) } else { CaseBuilder() .`when`(useCan.isSecret.isFalse) - .then(useCan.can.sum().add(useCan.rewardCan.sum())) + .then(useCan.can.add(useCan.rewardCan)) .otherwise(0) } @@ -275,7 +275,7 @@ class LiveRoomQueryRepositoryImpl( ).sum(), Expressions.asNumber( CaseBuilder() - .`when`(Expressions.asBoolean(isLiveCreator).isTrue) + .`when`(Expressions.asBoolean(isLiveCreator).isTrue.or(useCan.member.id.eq(memberId))) .then( Expressions.asNumber( CaseBuilder() @@ -290,10 +290,10 @@ class LiveRoomQueryRepositoryImpl( ) .from(useCan) .innerJoin(useCan.room, liveRoom) - .join(useCan.member, member) + .innerJoin(useCan.member, member) .groupBy(useCan.member.id) .where(where) - .orderBy(sortExpression.desc()) + .orderBy(sortExpression.sum().desc()) .fetch() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt index a5211fd..18addd3 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt @@ -1176,10 +1176,19 @@ class LiveRoomService( fun getDonationStatus(roomId: Long, memberId: Long): GetLiveRoomDonationStatusResponse { val room = repository.getLiveRoom(roomId) ?: throw SodaException("잘못된 요청입니다.") val isLiveCreator = room.member!!.id == memberId - val donationList = repository.getDonationList(roomId = room.id!!, isLiveCreator = isLiveCreator) - .filter { it.secretCan > 0 || it.can > 0 } + + val donationList = repository.getDonationList( + roomId = room.id!!, + isLiveCreator = isLiveCreator, + memberId = memberId + ).filter { it.secretCan > 0 || it.can > 0 } + val totalCan = donationList.sumOf { it.can } - val totalSecretCan = donationList.sumOf { it.secretCan } + val totalSecretCan = if (isLiveCreator) { + donationList.sumOf { it.secretCan } + } else { + 0 + } return GetLiveRoomDonationStatusResponse( donationList = donationList,