From 9f2b43ea0cbde1bf7df91dfd44dc5f8e36b160ab Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 25 Sep 2024 14:16:16 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20-=20=EC=98=88?= =?UTF-8?q?=EC=95=BD=20=EA=B0=9C=EC=88=98=20=EC=B5=9C=EB=8C=80=203?= =?UTF-8?q?=EA=B0=9C=EA=B9=8C=EC=A7=80=EB=A1=9C=20=ED=95=9C=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/room/LiveRoomRepository.kt | 13 +++++++++++++ .../vividnext/sodalive/live/room/LiveRoomService.kt | 4 ++++ 2 files changed, 17 insertions(+) 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 5964b99..ed147f8 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,6 +52,7 @@ interface LiveRoomQueryRepository { fun getDonationTotal(roomId: Long, isLiveCreator: Boolean): Int? fun getDonationList(roomId: Long, isLiveCreator: Boolean): List fun getRoomActiveAndChannelNameIsNotNull(memberId: Long): List + fun getActiveRoomIdList(memberId: Long): Int } class LiveRoomQueryRepositoryImpl( @@ -283,4 +284,16 @@ class LiveRoomQueryRepositoryImpl( ) .fetch() } + + override fun getActiveRoomIdList(memberId: Long): Int { + return queryFactory + .select(liveRoom.id) + .from(liveRoom) + .where( + liveRoom.isActive.isTrue + .and(liveRoom.member.id.eq(memberId)) + ) + .fetch() + .size + } } 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 a3e682b..215143d 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 @@ -247,6 +247,10 @@ class LiveRoomService( @Transactional fun createLiveRoom(coverImage: MultipartFile?, requestString: String, member: Member): CreateLiveRoomResponse { + if (repository.getActiveRoomIdList(memberId = member.id!!) >= 3) { + throw SodaException("라이브 예약은 최대 3개까지 가능합니다.") + } + val request = objectMapper.readValue(requestString, CreateLiveRoomRequest::class.java) if (request.coverImageUrl == null && coverImage == null) { throw SodaException("커버이미지를 선택해 주세요.")