From 33130140fd9fecd929c845683795790889ab2ef0 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 14 May 2024 15:16:04 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20-=20?= =?UTF-8?q?=EC=97=94=ED=8B=B0=ED=8B=B0=20=ED=81=AC=EB=A6=AC=EC=97=90?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=9E=85=EC=9E=A5=20=EA=B0=80=EB=8A=A5=20?= =?UTF-8?q?=ED=94=8C=EB=9E=98=EA=B7=B8=20=EC=B6=94=EA=B0=80=20-=20?= =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EC=8B=9C=20=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EC=9E=85=EC=9E=A5=20=EA=B0=80=EB=8A=A5=20=EC=97=AC=EB=B6=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20?= =?UTF-8?q?=EB=B0=A9=20=EC=A1=B0=ED=9A=8C=EC=8B=9C=20=ED=81=AC=EB=A6=AC?= =?UTF-8?q?=EC=97=90=EC=9D=B4=ED=84=B0=20=EC=9E=85=EC=9E=A5=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=20=EC=97=AC=EB=B6=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/room/CreateLiveRoomRequest.kt | 3 +- .../vividnext/sodalive/live/room/LiveRoom.kt | 1 + .../sodalive/live/room/LiveRoomRepository.kt | 38 +++++++++++++++++-- .../sodalive/live/room/LiveRoomService.kt | 25 ++++++++++-- 4 files changed, 59 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/CreateLiveRoomRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/CreateLiveRoomRequest.kt index 9a50a39..08e1387 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/CreateLiveRoomRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/CreateLiveRoomRequest.kt @@ -14,5 +14,6 @@ data class CreateLiveRoomRequest( val password: String? = null, val menuPanId: Long = 0, val menuPan: String = "", - val isActiveMenuPan: Boolean = false + val isActiveMenuPan: Boolean = false, + val isAvailableJoinCreator: Boolean = true ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoom.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoom.kt index 3c95441..b65b6d0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoom.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoom.kt @@ -28,6 +28,7 @@ data class LiveRoom( var bgImage: String? = null, var isAdult: Boolean, val price: Int = 0, + val isAvailableJoinCreator: Boolean = true, @Enumerated(value = EnumType.STRING) val type: LiveRoomType = LiveRoomType.OPEN, @Column(nullable = true) 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 e70f705..3d9de88 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 @@ -20,16 +20,28 @@ import java.time.ZoneId interface LiveRoomRepository : JpaRepository, LiveRoomQueryRepository interface LiveRoomQueryRepository { - fun getLiveRoomListNow(offset: Long, limit: Long, timezone: String, isAdult: Boolean): List + fun getLiveRoomListNow( + offset: Long, + limit: Long, + timezone: String, + isCreator: Boolean, + isAdult: Boolean + ): List fun getLiveRoomListReservationWithDate( date: LocalDateTime, offset: Long, limit: Long, + isCreator: Boolean, isAdult: Boolean ): List - fun getLiveRoomListReservationWithoutDate(timezone: String, memberId: Long, isAdult: Boolean): List + fun getLiveRoomListReservationWithoutDate( + timezone: String, + memberId: Long, + isCreator: Boolean, + isAdult: Boolean + ): List fun getLiveRoom(id: Long): LiveRoom? fun getLiveRoomAndAccountId(roomId: Long, memberId: Long): LiveRoom? @@ -40,7 +52,13 @@ interface LiveRoomQueryRepository { } class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : LiveRoomQueryRepository { - override fun getLiveRoomListNow(offset: Long, limit: Long, timezone: String, isAdult: Boolean): List { + override fun getLiveRoomListNow( + offset: Long, + limit: Long, + timezone: String, + isCreator: Boolean, + isAdult: Boolean + ): List { var where = liveRoom.channelName.isNotNull .and(liveRoom.channelName.isNotEmpty) .and(liveRoom.isActive.isTrue) @@ -50,6 +68,10 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L where = where.and(liveRoom.isAdult.isFalse) } + if (isCreator) { + where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + } + return queryFactory .selectFrom(liveRoom) .innerJoin(liveRoom.member, member) @@ -70,6 +92,7 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L date: LocalDateTime, offset: Long, limit: Long, + isCreator: Boolean, isAdult: Boolean ): List { var where = liveRoom.beginDateTime.goe(date) @@ -85,6 +108,10 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L where = where.and(liveRoom.isAdult.isFalse) } + if (isCreator) { + where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + } + return queryFactory .selectFrom(liveRoom) .innerJoin(liveRoom.member, member) @@ -98,6 +125,7 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L override fun getLiveRoomListReservationWithoutDate( timezone: String, memberId: Long, + isCreator: Boolean, isAdult: Boolean ): List { var where = liveRoom.beginDateTime.gt( @@ -117,6 +145,10 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L where = where.and(liveRoom.isAdult.isFalse) } + if (isCreator) { + where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + } + return queryFactory .selectFrom(liveRoom) .innerJoin(liveRoom.member, member) 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 4f9edfe..fa090d4 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 @@ -118,17 +118,24 @@ class LiveRoomService( timezone: String ): List { val roomList = if (status == LiveRoomStatus.NOW) { - getLiveRoomListNow(pageable, timezone, isAdult = member.auth != null) + getLiveRoomListNow( + pageable, + timezone, + isCreator = member.role == MemberRole.CREATOR, + isAdult = member.auth != null + ) } else if (dateString != null) { getLiveRoomListReservationWithDate( dateString, pageable, timezone, + isCreator = member.role == MemberRole.CREATOR, isAdult = member.auth != null ) } else { getLiveRoomListReservationWithoutDate( timezone, + isCreator = member.role == MemberRole.CREATOR, memberId = member.id!!, isAdult = member.auth != null ) @@ -186,11 +193,17 @@ class LiveRoomService( } } - private fun getLiveRoomListNow(pageable: Pageable, timezone: String, isAdult: Boolean): List { + private fun getLiveRoomListNow( + pageable: Pageable, + timezone: String, + isCreator: Boolean, + isAdult: Boolean + ): List { return repository.getLiveRoomListNow( offset = pageable.offset, limit = pageable.pageSize.toLong(), timezone = timezone, + isCreator = isCreator, isAdult = isAdult ) } @@ -199,6 +212,7 @@ class LiveRoomService( dateString: String, pageable: Pageable, timezone: String, + isCreator: Boolean, isAdult: Boolean ): List { val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") @@ -211,6 +225,7 @@ class LiveRoomService( date = date, offset = pageable.offset, limit = pageable.pageSize.toLong(), + isCreator = isCreator, isAdult = isAdult ) } @@ -218,9 +233,10 @@ class LiveRoomService( private fun getLiveRoomListReservationWithoutDate( timezone: String, memberId: Long, + isCreator: Boolean, isAdult: Boolean ): List { - return repository.getLiveRoomListReservationWithoutDate(timezone, memberId, isAdult) + return repository.getLiveRoomListReservationWithoutDate(timezone, memberId, isCreator, isAdult) } @Transactional @@ -277,7 +293,8 @@ class LiveRoomService( request.price }, type = request.type, - password = request.password + password = request.password, + isAvailableJoinCreator = request.isAvailableJoinCreator ) room.member = member