From 33130140fd9fecd929c845683795790889ab2ef0 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 14 May 2024 15:16:04 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20-?= =?UTF-8?q?=20=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 From ae4a79023655f41e86427bb6feb6b18e65b3961f Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 14 May 2024 16:00:54 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20-=20=EC=A1=B0=ED=9A=8C=ED=95=98=EB=8A=94?= =?UTF-8?q?=20=EC=82=AC=EB=9E=8C=EC=9D=B4=20=ED=81=AC=EB=A6=AC=EC=97=90?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=EC=9D=B4=EB=A9=B4=20=EB=82=B4=EA=B0=80=20?= =?UTF-8?q?=EB=A7=8C=EB=93=A0=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=EC=99=80=20?= =?UTF-8?q?=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0=EA=B0=80=20?= =?UTF-8?q?=EB=93=A4=EC=96=B4=EC=99=80=EB=8F=84=20=EB=90=9C=EB=8B=A4?= =?UTF-8?q?=EA=B3=A0=20=EC=84=A4=EC=A0=95=ED=95=9C=20=EB=B0=A9=EB=A7=8C=20?= =?UTF-8?q?=EB=B3=B4=EC=9D=B4=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/room/LiveRoomRepository.kt | 19 ++++++++++++++++--- .../sodalive/live/room/LiveRoomService.kt | 6 ++++++ 2 files changed, 22 insertions(+), 3 deletions(-) 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 3d9de88..9b19673 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 @@ -24,6 +24,7 @@ interface LiveRoomQueryRepository { offset: Long, limit: Long, timezone: String, + memberId: Long, isCreator: Boolean, isAdult: Boolean ): List @@ -32,6 +33,7 @@ interface LiveRoomQueryRepository { date: LocalDateTime, offset: Long, limit: Long, + memberId: Long, isCreator: Boolean, isAdult: Boolean ): List @@ -56,6 +58,7 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L offset: Long, limit: Long, timezone: String, + memberId: Long, isCreator: Boolean, isAdult: Boolean ): List { @@ -69,7 +72,10 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L } if (isCreator) { - where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + where = where.and( + liveRoom.isAvailableJoinCreator.isTrue + .or(liveRoom.member.id.eq(memberId)) + ) } return queryFactory @@ -92,6 +98,7 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L date: LocalDateTime, offset: Long, limit: Long, + memberId: Long, isCreator: Boolean, isAdult: Boolean ): List { @@ -109,7 +116,10 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L } if (isCreator) { - where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + where = where.and( + liveRoom.isAvailableJoinCreator.isTrue + .or(liveRoom.member.id.eq(memberId)) + ) } return queryFactory @@ -146,7 +156,10 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L } if (isCreator) { - where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + where = where.and( + liveRoom.isAvailableJoinCreator.isTrue + .or(liveRoom.member.id.eq(memberId)) + ) } return queryFactory 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 fa090d4..66e9d38 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 @@ -121,6 +121,7 @@ class LiveRoomService( getLiveRoomListNow( pageable, timezone, + memberId = member.id!!, isCreator = member.role == MemberRole.CREATOR, isAdult = member.auth != null ) @@ -129,6 +130,7 @@ class LiveRoomService( dateString, pageable, timezone, + memberId = member.id!!, isCreator = member.role == MemberRole.CREATOR, isAdult = member.auth != null ) @@ -196,6 +198,7 @@ class LiveRoomService( private fun getLiveRoomListNow( pageable: Pageable, timezone: String, + memberId: Long, isCreator: Boolean, isAdult: Boolean ): List { @@ -203,6 +206,7 @@ class LiveRoomService( offset = pageable.offset, limit = pageable.pageSize.toLong(), timezone = timezone, + memberId = memberId, isCreator = isCreator, isAdult = isAdult ) @@ -212,6 +216,7 @@ class LiveRoomService( dateString: String, pageable: Pageable, timezone: String, + memberId: Long, isCreator: Boolean, isAdult: Boolean ): List { @@ -225,6 +230,7 @@ class LiveRoomService( date = date, offset = pageable.offset, limit = pageable.pageSize.toLong(), + memberId = memberId, isCreator = isCreator, isAdult = isAdult ) From 39b27b2a17d68f856b18d51c5338990db3a848b7 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 14 May 2024 17:13:36 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1,=20=EC=8B=9C=EC=9E=91=20-=20=ED=81=AC?= =?UTF-8?q?=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0=EA=B0=80=20=EC=9E=85?= =?UTF-8?q?=EC=9E=A5=20=EB=B6=88=EA=B0=80=EB=8A=A5=ED=95=9C=20=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=EB=B8=8C=EC=9D=98=20=EA=B2=BD=EC=9A=B0=20=ED=81=AC?= =?UTF-8?q?=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0=EC=97=90=EA=B2=8C=EB=8A=94?= =?UTF-8?q?=20=ED=91=B8=EC=8B=9C=EB=B0=9C=EC=86=A1=EC=9D=B4=20=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt | 5 ++++- .../vividnext/sodalive/live/room/LiveRoomService.kt | 4 ++++ .../co/vividnext/sodalive/member/MemberRepository.kt | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt index 833a825..8330a24 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt @@ -26,7 +26,8 @@ class FcmEvent( val messageId: Long? = null, val creatorId: Long? = null, val commentParentId: Long? = null, - val myMemberId: Long? = null + val myMemberId: Long? = null, + val isAvailableJoinCreator: Boolean? = null ) @Component @@ -99,6 +100,7 @@ class FcmSendListener( val pushTokens = memberRepository.getCreateLiveRoomNotificationRecipientPushTokens( creatorId = fcmEvent.creatorId!!, isAuth = fcmEvent.isAuth ?: false, + isAvailableJoinCreator = fcmEvent.isAvailableJoinCreator ?: false, container = fcmEvent.container ) @@ -120,6 +122,7 @@ class FcmSendListener( creatorId = fcmEvent.creatorId!!, roomId = fcmEvent.roomId!!, isAuth = fcmEvent.isAuth ?: false, + isAvailableJoinCreator = fcmEvent.isAvailableJoinCreator ?: false, container = fcmEvent.container ) 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 66e9d38..3bb8df2 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 @@ -376,6 +376,7 @@ class LiveRoomService( "라이브를 예약했습니다. - ${createdRoom.title}" }, isAuth = createdRoom.isAdult, + isAvailableJoinCreator = createdRoom.isAvailableJoinCreator, roomId = createdRoom.id, creatorId = createdRoom.member!!.id, container = "ios" @@ -392,6 +393,7 @@ class LiveRoomService( "라이브를 예약했습니다. - ${createdRoom.title}" }, isAuth = createdRoom.isAdult, + isAvailableJoinCreator = createdRoom.isAvailableJoinCreator, roomId = createdRoom.id, creatorId = createdRoom.member!!.id, container = "aos" @@ -534,6 +536,7 @@ class LiveRoomService( title = room.member!!.nickname, message = "라이브를 시작했습니다 - ${room.title}", isAuth = room.isAdult, + isAvailableJoinCreator = room.isAvailableJoinCreator, roomId = room.id, creatorId = room.member!!.id, container = "ios" @@ -546,6 +549,7 @@ class LiveRoomService( title = room.member!!.nickname, message = "라이브를 시작했습니다 - ${room.title}", isAuth = room.isAdult, + isAvailableJoinCreator = room.isAvailableJoinCreator, roomId = room.id, creatorId = room.member!!.id, container = "aos" diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt index 9839c64..364f2e4 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -29,6 +29,7 @@ interface MemberQueryRepository { fun getCreateLiveRoomNotificationRecipientPushTokens( creatorId: Long, isAuth: Boolean, + isAvailableJoinCreator: Boolean, container: String ): List> @@ -36,6 +37,7 @@ interface MemberQueryRepository { creatorId: Long, roomId: Long, isAuth: Boolean, + isAvailableJoinCreator: Boolean, container: String ): List> @@ -120,6 +122,7 @@ class MemberQueryRepositoryImpl( override fun getCreateLiveRoomNotificationRecipientPushTokens( creatorId: Long, isAuth: Boolean, + isAvailableJoinCreator: Boolean, container: String ): List> { val member = QMember.member @@ -142,6 +145,10 @@ class MemberQueryRepositoryImpl( where = where.and(auth.isNotNull) } + if (!isAvailableJoinCreator) { + where = where.and(creatorFollowing.member.role.ne(MemberRole.CREATOR)) + } + return queryFactory .select(creatorFollowing.member.pushToken) .from(creatorFollowing) @@ -159,6 +166,7 @@ class MemberQueryRepositoryImpl( creatorId: Long, roomId: Long, isAuth: Boolean, + isAvailableJoinCreator: Boolean, container: String ): List> { val member = QMember.member @@ -181,6 +189,10 @@ class MemberQueryRepositoryImpl( where = where.and(auth.isNotNull) } + if (!isAvailableJoinCreator) { + where = where.and(creatorFollowing.member.role.ne(MemberRole.CREATOR)) + } + val followingMemberPushToken = queryFactory .select(creatorFollowing.member.pushToken) .from(creatorFollowing) From c63949992ff638946a07b9d06c486055fe0a47b0 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 14 May 2024 17:44:32 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EC=B6=94?= =?UTF-8?q?=EC=B2=9C/=ED=8C=94=EB=A1=9C=EC=9E=89=20=EC=B1=84=EB=84=90=20-?= =?UTF-8?q?=20=EC=9E=85=EC=9E=A5=20=EA=B0=80=EB=8A=A5=ED=95=9C=20=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=EB=B8=8C=EA=B0=80=20=EC=9E=88=EC=9D=84=20=EB=96=84?= =?UTF-8?q?=EB=A7=8C=20OnAir=EB=A5=BC=20=ED=91=9C=EC=8B=9C=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/recommend/LiveRecommendRepository.kt | 12 ++++++++++-- .../sodalive/live/recommend/LiveRecommendService.kt | 11 +++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt index e6ece32..6cb0357 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt @@ -53,6 +53,7 @@ class LiveRecommendRepository( fun getOnAirRecommendChannelList( memberId: Long, isBlocked: (Long) -> Boolean, + isCreator: Boolean, isAdult: Boolean ): List { var where = member.role.eq(MemberRole.CREATOR) @@ -62,6 +63,10 @@ class LiveRecommendRepository( where = where.and(liveRoom.isAdult.isFalse) } + if (isCreator) { + where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + } + return queryFactory .select( Projections.constructor( @@ -113,14 +118,13 @@ class LiveRecommendRepository( .orderBy(Expressions.numberTemplate(Double::class.java, "function('rand')").asc()) .limit(limit) .fetch() - .asSequence() .filter { !isBlocked(it.creatorId) } - .toList() } fun getOnAirFollowingChannelList( memberId: Long, isBlocked: (Long) -> Boolean, + isCreator: Boolean, isAdult: Boolean ): List { var where = member.role.eq(MemberRole.CREATOR) @@ -130,6 +134,10 @@ class LiveRecommendRepository( where = where.and(liveRoom.isAdult.isFalse) } + if (isCreator) { + where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + } + return queryFactory .select( Projections.constructor( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt index 1c6e486..5ec9478 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendService.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.live.recommend import kr.co.vividnext.sodalive.member.Member +import kr.co.vividnext.sodalive.member.MemberRole import kr.co.vividnext.sodalive.member.block.BlockMemberRepository import org.springframework.data.domain.Pageable import org.springframework.stereotype.Service @@ -23,6 +24,7 @@ class LiveRecommendService( val onAirChannelList = repository.getOnAirRecommendChannelList( member.id!!, isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, + isCreator = member.role == MemberRole.CREATOR, isAdult = member.auth != null ) @@ -30,9 +32,7 @@ class LiveRecommendService( return onAirChannelList } - val onAirCreatorIdList = onAirChannelList.asSequence() - .map { it.creatorId } - .toList() + val onAirCreatorIdList = onAirChannelList.map { it.creatorId } val notOnAirCreatorList = repository.getRecommendChannelList( member.id!!, @@ -48,6 +48,7 @@ class LiveRecommendService( val onAirFollowingChannelList = repository.getOnAirFollowingChannelList( memberId = member.id!!, isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, + isCreator = member.role == MemberRole.CREATOR, isAdult = member.auth != null ) @@ -55,9 +56,7 @@ class LiveRecommendService( return onAirFollowingChannelList } - val onAirCreatorIdList = onAirFollowingChannelList.asSequence() - .map { it.creatorId } - .toList() + val onAirCreatorIdList = onAirFollowingChannelList.map { it.creatorId } val notOnAirFollowingChannelList = repository.getFollowingChannelList( memberId = member.id!!, From fc6916fc2de4c28203b5aa6ecb9426819914365f Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 14 May 2024 17:46:51 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=B1=84=EB=84=90=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20-=20=EC=9E=85=EC=9E=A5=20?= =?UTF-8?q?=EA=B0=80=EB=8A=A5=ED=95=9C=20=EB=9D=BC=EC=9D=B4=EB=B8=8C?= =?UTF-8?q?=EB=A7=8C=20=EC=A1=B0=ED=9A=8C=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt index b718247..afb8628 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/explorer/ExplorerQueryRepository.kt @@ -351,6 +351,10 @@ class ExplorerQueryRepository( where = where.and(liveRoom.isAdult.isFalse) } + if (userMember.role == MemberRole.CREATOR) { + where = where.and(liveRoom.isAvailableJoinCreator.isTrue) + } + val result = mutableListOf() if (offset == 0L) {