From 98b337c5eef082c3396974e469c057d470ce9b11 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 16 Oct 2024 18:21:54 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20-=20?= =?UTF-8?q?=ED=95=98=ED=8A=B8=20=ED=9B=84=EC=9B=90=20=ED=95=A9=EA=B3=84=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/room/LiveRoomController.kt | 10 ++++++++++ .../sodalive/live/room/LiveRoomRepository.kt | 15 +++++++++++++++ .../sodalive/live/room/LiveRoomService.kt | 5 +++++ .../room/like/GetLiveRoomHeartTotalResponse.kt | 5 +++++ 4 files changed, 35 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/live/room/like/GetLiveRoomHeartTotalResponse.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt index a6e84fd..ebbd3a9 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt @@ -273,4 +273,14 @@ class LiveRoomController( ApiResponse.ok(service.likeHeart(request, member)) } + + @GetMapping("/{id}/heart-total") + fun getTotalHeartCount( + @PathVariable("id") roomId: Long, + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getTotalHeartCount(roomId)) + } } 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 6d2eb3d..7348403 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 @@ -53,6 +53,7 @@ interface LiveRoomQueryRepository { fun getDonationList(roomId: Long, isLiveCreator: Boolean): List fun getRoomActiveAndChannelNameIsNotNull(memberId: Long): List fun getActiveRoomIdList(memberId: Long): Int + fun getTotalHeartCount(roomId: Long): Int? } class LiveRoomQueryRepositoryImpl( @@ -297,4 +298,18 @@ class LiveRoomQueryRepositoryImpl( .fetch() .size } + + override fun getTotalHeartCount(roomId: Long): Int? { + val where = liveRoom.id.eq(roomId) + .and(useCan.canUsage.eq(CanUsage.HEART)) + .and(useCan.isRefund.isFalse) + + return queryFactory + .select(useCanCalculate.can.sum()) + .from(useCanCalculate) + .innerJoin(useCanCalculate.useCan, useCan) + .innerJoin(useCan.room, liveRoom) + .where(where) + .fetchOne() + } } 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 e78fafb..8d4fcf0 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 @@ -39,6 +39,7 @@ import kr.co.vividnext.sodalive.live.room.info.LiveRoomInfo import kr.co.vividnext.sodalive.live.room.info.LiveRoomInfoRedisRepository import kr.co.vividnext.sodalive.live.room.info.LiveRoomMember import kr.co.vividnext.sodalive.live.room.kickout.LiveRoomKickOutService +import kr.co.vividnext.sodalive.live.room.like.GetLiveRoomHeartTotalResponse import kr.co.vividnext.sodalive.live.room.like.LiveRoomLikeHeartRequest import kr.co.vividnext.sodalive.live.room.menu.CreateLiveMenuRequest import kr.co.vividnext.sodalive.live.room.menu.LiveRoomMenuService @@ -1243,4 +1244,8 @@ class LiveRoomService( container = request.container ) } + + fun getTotalHeartCount(roomId: Long): GetLiveRoomHeartTotalResponse { + return GetLiveRoomHeartTotalResponse(totalHeartCount = repository.getTotalHeartCount(roomId = roomId) ?: 0) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/like/GetLiveRoomHeartTotalResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/like/GetLiveRoomHeartTotalResponse.kt new file mode 100644 index 0000000..b3dbc9d --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/like/GetLiveRoomHeartTotalResponse.kt @@ -0,0 +1,5 @@ +package kr.co.vividnext.sodalive.live.room.like + +data class GetLiveRoomHeartTotalResponse( + val totalHeartCount: Int +)