Merge pull request '라이브 방 - 크리에이터 입장 가능 설정 추가' (#179) from test into main
Reviewed-on: #179
This commit is contained in:
		| @@ -351,6 +351,10 @@ class ExplorerQueryRepository( | |||||||
|             where = where.and(liveRoom.isAdult.isFalse) |             where = where.and(liveRoom.isAdult.isFalse) | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (userMember.role == MemberRole.CREATOR) { | ||||||
|  |             where = where.and(liveRoom.isAvailableJoinCreator.isTrue) | ||||||
|  |         } | ||||||
|  |  | ||||||
|         val result = mutableListOf<LiveRoom>() |         val result = mutableListOf<LiveRoom>() | ||||||
|  |  | ||||||
|         if (offset == 0L) { |         if (offset == 0L) { | ||||||
|   | |||||||
| @@ -26,7 +26,8 @@ class FcmEvent( | |||||||
|     val messageId: Long? = null, |     val messageId: Long? = null, | ||||||
|     val creatorId: Long? = null, |     val creatorId: Long? = null, | ||||||
|     val commentParentId: Long? = null, |     val commentParentId: Long? = null, | ||||||
|     val myMemberId: Long? = null |     val myMemberId: Long? = null, | ||||||
|  |     val isAvailableJoinCreator: Boolean? = null | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @Component | @Component | ||||||
| @@ -99,6 +100,7 @@ class FcmSendListener( | |||||||
|                     val pushTokens = memberRepository.getCreateLiveRoomNotificationRecipientPushTokens( |                     val pushTokens = memberRepository.getCreateLiveRoomNotificationRecipientPushTokens( | ||||||
|                         creatorId = fcmEvent.creatorId!!, |                         creatorId = fcmEvent.creatorId!!, | ||||||
|                         isAuth = fcmEvent.isAuth ?: false, |                         isAuth = fcmEvent.isAuth ?: false, | ||||||
|  |                         isAvailableJoinCreator = fcmEvent.isAvailableJoinCreator ?: false, | ||||||
|                         container = fcmEvent.container |                         container = fcmEvent.container | ||||||
|                     ) |                     ) | ||||||
|  |  | ||||||
| @@ -120,6 +122,7 @@ class FcmSendListener( | |||||||
|                         creatorId = fcmEvent.creatorId!!, |                         creatorId = fcmEvent.creatorId!!, | ||||||
|                         roomId = fcmEvent.roomId!!, |                         roomId = fcmEvent.roomId!!, | ||||||
|                         isAuth = fcmEvent.isAuth ?: false, |                         isAuth = fcmEvent.isAuth ?: false, | ||||||
|  |                         isAvailableJoinCreator = fcmEvent.isAvailableJoinCreator ?: false, | ||||||
|                         container = fcmEvent.container |                         container = fcmEvent.container | ||||||
|                     ) |                     ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -53,6 +53,7 @@ class LiveRecommendRepository( | |||||||
|     fun getOnAirRecommendChannelList( |     fun getOnAirRecommendChannelList( | ||||||
|         memberId: Long, |         memberId: Long, | ||||||
|         isBlocked: (Long) -> Boolean, |         isBlocked: (Long) -> Boolean, | ||||||
|  |         isCreator: Boolean, | ||||||
|         isAdult: Boolean |         isAdult: Boolean | ||||||
|     ): List<GetRecommendChannelResponse> { |     ): List<GetRecommendChannelResponse> { | ||||||
|         var where = member.role.eq(MemberRole.CREATOR) |         var where = member.role.eq(MemberRole.CREATOR) | ||||||
| @@ -62,6 +63,10 @@ class LiveRecommendRepository( | |||||||
|             where = where.and(liveRoom.isAdult.isFalse) |             where = where.and(liveRoom.isAdult.isFalse) | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (isCreator) { | ||||||
|  |             where = where.and(liveRoom.isAvailableJoinCreator.isTrue) | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return queryFactory |         return queryFactory | ||||||
|             .select( |             .select( | ||||||
|                 Projections.constructor( |                 Projections.constructor( | ||||||
| @@ -113,14 +118,13 @@ class LiveRecommendRepository( | |||||||
|             .orderBy(Expressions.numberTemplate(Double::class.java, "function('rand')").asc()) |             .orderBy(Expressions.numberTemplate(Double::class.java, "function('rand')").asc()) | ||||||
|             .limit(limit) |             .limit(limit) | ||||||
|             .fetch() |             .fetch() | ||||||
|             .asSequence() |  | ||||||
|             .filter { !isBlocked(it.creatorId) } |             .filter { !isBlocked(it.creatorId) } | ||||||
|             .toList() |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fun getOnAirFollowingChannelList( |     fun getOnAirFollowingChannelList( | ||||||
|         memberId: Long, |         memberId: Long, | ||||||
|         isBlocked: (Long) -> Boolean, |         isBlocked: (Long) -> Boolean, | ||||||
|  |         isCreator: Boolean, | ||||||
|         isAdult: Boolean |         isAdult: Boolean | ||||||
|     ): List<GetRecommendChannelResponse> { |     ): List<GetRecommendChannelResponse> { | ||||||
|         var where = member.role.eq(MemberRole.CREATOR) |         var where = member.role.eq(MemberRole.CREATOR) | ||||||
| @@ -130,6 +134,10 @@ class LiveRecommendRepository( | |||||||
|             where = where.and(liveRoom.isAdult.isFalse) |             where = where.and(liveRoom.isAdult.isFalse) | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (isCreator) { | ||||||
|  |             where = where.and(liveRoom.isAvailableJoinCreator.isTrue) | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return queryFactory |         return queryFactory | ||||||
|             .select( |             .select( | ||||||
|                 Projections.constructor( |                 Projections.constructor( | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| package kr.co.vividnext.sodalive.live.recommend | package kr.co.vividnext.sodalive.live.recommend | ||||||
|  |  | ||||||
| import kr.co.vividnext.sodalive.member.Member | import kr.co.vividnext.sodalive.member.Member | ||||||
|  | import kr.co.vividnext.sodalive.member.MemberRole | ||||||
| import kr.co.vividnext.sodalive.member.block.BlockMemberRepository | import kr.co.vividnext.sodalive.member.block.BlockMemberRepository | ||||||
| import org.springframework.data.domain.Pageable | import org.springframework.data.domain.Pageable | ||||||
| import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||||
| @@ -23,6 +24,7 @@ class LiveRecommendService( | |||||||
|         val onAirChannelList = repository.getOnAirRecommendChannelList( |         val onAirChannelList = repository.getOnAirRecommendChannelList( | ||||||
|             member.id!!, |             member.id!!, | ||||||
|             isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, |             isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, | ||||||
|  |             isCreator = member.role == MemberRole.CREATOR, | ||||||
|             isAdult = member.auth != null |             isAdult = member.auth != null | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
| @@ -30,9 +32,7 @@ class LiveRecommendService( | |||||||
|             return onAirChannelList |             return onAirChannelList | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         val onAirCreatorIdList = onAirChannelList.asSequence() |         val onAirCreatorIdList = onAirChannelList.map { it.creatorId } | ||||||
|             .map { it.creatorId } |  | ||||||
|             .toList() |  | ||||||
|  |  | ||||||
|         val notOnAirCreatorList = repository.getRecommendChannelList( |         val notOnAirCreatorList = repository.getRecommendChannelList( | ||||||
|             member.id!!, |             member.id!!, | ||||||
| @@ -48,6 +48,7 @@ class LiveRecommendService( | |||||||
|         val onAirFollowingChannelList = repository.getOnAirFollowingChannelList( |         val onAirFollowingChannelList = repository.getOnAirFollowingChannelList( | ||||||
|             memberId = member.id!!, |             memberId = member.id!!, | ||||||
|             isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, |             isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, | ||||||
|  |             isCreator = member.role == MemberRole.CREATOR, | ||||||
|             isAdult = member.auth != null |             isAdult = member.auth != null | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
| @@ -55,9 +56,7 @@ class LiveRecommendService( | |||||||
|             return onAirFollowingChannelList |             return onAirFollowingChannelList | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         val onAirCreatorIdList = onAirFollowingChannelList.asSequence() |         val onAirCreatorIdList = onAirFollowingChannelList.map { it.creatorId } | ||||||
|             .map { it.creatorId } |  | ||||||
|             .toList() |  | ||||||
|  |  | ||||||
|         val notOnAirFollowingChannelList = repository.getFollowingChannelList( |         val notOnAirFollowingChannelList = repository.getFollowingChannelList( | ||||||
|             memberId = member.id!!, |             memberId = member.id!!, | ||||||
|   | |||||||
| @@ -14,5 +14,6 @@ data class CreateLiveRoomRequest( | |||||||
|     val password: String? = null, |     val password: String? = null, | ||||||
|     val menuPanId: Long = 0, |     val menuPanId: Long = 0, | ||||||
|     val menuPan: String = "", |     val menuPan: String = "", | ||||||
|     val isActiveMenuPan: Boolean = false |     val isActiveMenuPan: Boolean = false, | ||||||
|  |     val isAvailableJoinCreator: Boolean = true | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -28,6 +28,7 @@ data class LiveRoom( | |||||||
|     var bgImage: String? = null, |     var bgImage: String? = null, | ||||||
|     var isAdult: Boolean, |     var isAdult: Boolean, | ||||||
|     val price: Int = 0, |     val price: Int = 0, | ||||||
|  |     val isAvailableJoinCreator: Boolean = true, | ||||||
|     @Enumerated(value = EnumType.STRING) |     @Enumerated(value = EnumType.STRING) | ||||||
|     val type: LiveRoomType = LiveRoomType.OPEN, |     val type: LiveRoomType = LiveRoomType.OPEN, | ||||||
|     @Column(nullable = true) |     @Column(nullable = true) | ||||||
|   | |||||||
| @@ -20,16 +20,30 @@ import java.time.ZoneId | |||||||
| interface LiveRoomRepository : JpaRepository<LiveRoom, Long>, LiveRoomQueryRepository | interface LiveRoomRepository : JpaRepository<LiveRoom, Long>, LiveRoomQueryRepository | ||||||
|  |  | ||||||
| interface LiveRoomQueryRepository { | interface LiveRoomQueryRepository { | ||||||
|     fun getLiveRoomListNow(offset: Long, limit: Long, timezone: String, isAdult: Boolean): List<LiveRoom> |     fun getLiveRoomListNow( | ||||||
|  |         offset: Long, | ||||||
|  |         limit: Long, | ||||||
|  |         timezone: String, | ||||||
|  |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|  |         isAdult: Boolean | ||||||
|  |     ): List<LiveRoom> | ||||||
|  |  | ||||||
|     fun getLiveRoomListReservationWithDate( |     fun getLiveRoomListReservationWithDate( | ||||||
|         date: LocalDateTime, |         date: LocalDateTime, | ||||||
|         offset: Long, |         offset: Long, | ||||||
|         limit: Long, |         limit: Long, | ||||||
|  |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|         isAdult: Boolean |         isAdult: Boolean | ||||||
|     ): List<LiveRoom> |     ): List<LiveRoom> | ||||||
|  |  | ||||||
|     fun getLiveRoomListReservationWithoutDate(timezone: String, memberId: Long, isAdult: Boolean): List<LiveRoom> |     fun getLiveRoomListReservationWithoutDate( | ||||||
|  |         timezone: String, | ||||||
|  |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|  |         isAdult: Boolean | ||||||
|  |     ): List<LiveRoom> | ||||||
|  |  | ||||||
|     fun getLiveRoom(id: Long): LiveRoom? |     fun getLiveRoom(id: Long): LiveRoom? | ||||||
|     fun getLiveRoomAndAccountId(roomId: Long, memberId: Long): LiveRoom? |     fun getLiveRoomAndAccountId(roomId: Long, memberId: Long): LiveRoom? | ||||||
| @@ -40,7 +54,14 @@ interface LiveRoomQueryRepository { | |||||||
| } | } | ||||||
|  |  | ||||||
| class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : LiveRoomQueryRepository { | class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : LiveRoomQueryRepository { | ||||||
|     override fun getLiveRoomListNow(offset: Long, limit: Long, timezone: String, isAdult: Boolean): List<LiveRoom> { |     override fun getLiveRoomListNow( | ||||||
|  |         offset: Long, | ||||||
|  |         limit: Long, | ||||||
|  |         timezone: String, | ||||||
|  |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|  |         isAdult: Boolean | ||||||
|  |     ): List<LiveRoom> { | ||||||
|         var where = liveRoom.channelName.isNotNull |         var where = liveRoom.channelName.isNotNull | ||||||
|             .and(liveRoom.channelName.isNotEmpty) |             .and(liveRoom.channelName.isNotEmpty) | ||||||
|             .and(liveRoom.isActive.isTrue) |             .and(liveRoom.isActive.isTrue) | ||||||
| @@ -50,6 +71,13 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L | |||||||
|             where = where.and(liveRoom.isAdult.isFalse) |             where = where.and(liveRoom.isAdult.isFalse) | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (isCreator) { | ||||||
|  |             where = where.and( | ||||||
|  |                 liveRoom.isAvailableJoinCreator.isTrue | ||||||
|  |                     .or(liveRoom.member.id.eq(memberId)) | ||||||
|  |             ) | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return queryFactory |         return queryFactory | ||||||
|             .selectFrom(liveRoom) |             .selectFrom(liveRoom) | ||||||
|             .innerJoin(liveRoom.member, member) |             .innerJoin(liveRoom.member, member) | ||||||
| @@ -70,6 +98,8 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L | |||||||
|         date: LocalDateTime, |         date: LocalDateTime, | ||||||
|         offset: Long, |         offset: Long, | ||||||
|         limit: Long, |         limit: Long, | ||||||
|  |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|         isAdult: Boolean |         isAdult: Boolean | ||||||
|     ): List<LiveRoom> { |     ): List<LiveRoom> { | ||||||
|         var where = liveRoom.beginDateTime.goe(date) |         var where = liveRoom.beginDateTime.goe(date) | ||||||
| @@ -85,6 +115,13 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L | |||||||
|             where = where.and(liveRoom.isAdult.isFalse) |             where = where.and(liveRoom.isAdult.isFalse) | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (isCreator) { | ||||||
|  |             where = where.and( | ||||||
|  |                 liveRoom.isAvailableJoinCreator.isTrue | ||||||
|  |                     .or(liveRoom.member.id.eq(memberId)) | ||||||
|  |             ) | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return queryFactory |         return queryFactory | ||||||
|             .selectFrom(liveRoom) |             .selectFrom(liveRoom) | ||||||
|             .innerJoin(liveRoom.member, member) |             .innerJoin(liveRoom.member, member) | ||||||
| @@ -98,6 +135,7 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L | |||||||
|     override fun getLiveRoomListReservationWithoutDate( |     override fun getLiveRoomListReservationWithoutDate( | ||||||
|         timezone: String, |         timezone: String, | ||||||
|         memberId: Long, |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|         isAdult: Boolean |         isAdult: Boolean | ||||||
|     ): List<LiveRoom> { |     ): List<LiveRoom> { | ||||||
|         var where = liveRoom.beginDateTime.gt( |         var where = liveRoom.beginDateTime.gt( | ||||||
| @@ -117,6 +155,13 @@ class LiveRoomQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : L | |||||||
|             where = where.and(liveRoom.isAdult.isFalse) |             where = where.and(liveRoom.isAdult.isFalse) | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (isCreator) { | ||||||
|  |             where = where.and( | ||||||
|  |                 liveRoom.isAvailableJoinCreator.isTrue | ||||||
|  |                     .or(liveRoom.member.id.eq(memberId)) | ||||||
|  |             ) | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return queryFactory |         return queryFactory | ||||||
|             .selectFrom(liveRoom) |             .selectFrom(liveRoom) | ||||||
|             .innerJoin(liveRoom.member, member) |             .innerJoin(liveRoom.member, member) | ||||||
|   | |||||||
| @@ -118,17 +118,26 @@ class LiveRoomService( | |||||||
|         timezone: String |         timezone: String | ||||||
|     ): List<GetRoomListResponse> { |     ): List<GetRoomListResponse> { | ||||||
|         val roomList = if (status == LiveRoomStatus.NOW) { |         val roomList = if (status == LiveRoomStatus.NOW) { | ||||||
|             getLiveRoomListNow(pageable, timezone, isAdult = member.auth != null) |             getLiveRoomListNow( | ||||||
|  |                 pageable, | ||||||
|  |                 timezone, | ||||||
|  |                 memberId = member.id!!, | ||||||
|  |                 isCreator = member.role == MemberRole.CREATOR, | ||||||
|  |                 isAdult = member.auth != null | ||||||
|  |             ) | ||||||
|         } else if (dateString != null) { |         } else if (dateString != null) { | ||||||
|             getLiveRoomListReservationWithDate( |             getLiveRoomListReservationWithDate( | ||||||
|                 dateString, |                 dateString, | ||||||
|                 pageable, |                 pageable, | ||||||
|                 timezone, |                 timezone, | ||||||
|  |                 memberId = member.id!!, | ||||||
|  |                 isCreator = member.role == MemberRole.CREATOR, | ||||||
|                 isAdult = member.auth != null |                 isAdult = member.auth != null | ||||||
|             ) |             ) | ||||||
|         } else { |         } else { | ||||||
|             getLiveRoomListReservationWithoutDate( |             getLiveRoomListReservationWithoutDate( | ||||||
|                 timezone, |                 timezone, | ||||||
|  |                 isCreator = member.role == MemberRole.CREATOR, | ||||||
|                 memberId = member.id!!, |                 memberId = member.id!!, | ||||||
|                 isAdult = member.auth != null |                 isAdult = member.auth != null | ||||||
|             ) |             ) | ||||||
| @@ -186,11 +195,19 @@ class LiveRoomService( | |||||||
|             } |             } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private fun getLiveRoomListNow(pageable: Pageable, timezone: String, isAdult: Boolean): List<LiveRoom> { |     private fun getLiveRoomListNow( | ||||||
|  |         pageable: Pageable, | ||||||
|  |         timezone: String, | ||||||
|  |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|  |         isAdult: Boolean | ||||||
|  |     ): List<LiveRoom> { | ||||||
|         return repository.getLiveRoomListNow( |         return repository.getLiveRoomListNow( | ||||||
|             offset = pageable.offset, |             offset = pageable.offset, | ||||||
|             limit = pageable.pageSize.toLong(), |             limit = pageable.pageSize.toLong(), | ||||||
|             timezone = timezone, |             timezone = timezone, | ||||||
|  |             memberId = memberId, | ||||||
|  |             isCreator = isCreator, | ||||||
|             isAdult = isAdult |             isAdult = isAdult | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| @@ -199,6 +216,8 @@ class LiveRoomService( | |||||||
|         dateString: String, |         dateString: String, | ||||||
|         pageable: Pageable, |         pageable: Pageable, | ||||||
|         timezone: String, |         timezone: String, | ||||||
|  |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|         isAdult: Boolean |         isAdult: Boolean | ||||||
|     ): List<LiveRoom> { |     ): List<LiveRoom> { | ||||||
|         val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") |         val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") | ||||||
| @@ -211,6 +230,8 @@ class LiveRoomService( | |||||||
|             date = date, |             date = date, | ||||||
|             offset = pageable.offset, |             offset = pageable.offset, | ||||||
|             limit = pageable.pageSize.toLong(), |             limit = pageable.pageSize.toLong(), | ||||||
|  |             memberId = memberId, | ||||||
|  |             isCreator = isCreator, | ||||||
|             isAdult = isAdult |             isAdult = isAdult | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| @@ -218,9 +239,10 @@ class LiveRoomService( | |||||||
|     private fun getLiveRoomListReservationWithoutDate( |     private fun getLiveRoomListReservationWithoutDate( | ||||||
|         timezone: String, |         timezone: String, | ||||||
|         memberId: Long, |         memberId: Long, | ||||||
|  |         isCreator: Boolean, | ||||||
|         isAdult: Boolean |         isAdult: Boolean | ||||||
|     ): List<LiveRoom> { |     ): List<LiveRoom> { | ||||||
|         return repository.getLiveRoomListReservationWithoutDate(timezone, memberId, isAdult) |         return repository.getLiveRoomListReservationWithoutDate(timezone, memberId, isCreator, isAdult) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Transactional |     @Transactional | ||||||
| @@ -277,7 +299,8 @@ class LiveRoomService( | |||||||
|                 request.price |                 request.price | ||||||
|             }, |             }, | ||||||
|             type = request.type, |             type = request.type, | ||||||
|             password = request.password |             password = request.password, | ||||||
|  |             isAvailableJoinCreator = request.isAvailableJoinCreator | ||||||
|         ) |         ) | ||||||
|         room.member = member |         room.member = member | ||||||
|  |  | ||||||
| @@ -353,6 +376,7 @@ class LiveRoomService( | |||||||
|                     "라이브를 예약했습니다. - ${createdRoom.title}" |                     "라이브를 예약했습니다. - ${createdRoom.title}" | ||||||
|                 }, |                 }, | ||||||
|                 isAuth = createdRoom.isAdult, |                 isAuth = createdRoom.isAdult, | ||||||
|  |                 isAvailableJoinCreator = createdRoom.isAvailableJoinCreator, | ||||||
|                 roomId = createdRoom.id, |                 roomId = createdRoom.id, | ||||||
|                 creatorId = createdRoom.member!!.id, |                 creatorId = createdRoom.member!!.id, | ||||||
|                 container = "ios" |                 container = "ios" | ||||||
| @@ -369,6 +393,7 @@ class LiveRoomService( | |||||||
|                     "라이브를 예약했습니다. - ${createdRoom.title}" |                     "라이브를 예약했습니다. - ${createdRoom.title}" | ||||||
|                 }, |                 }, | ||||||
|                 isAuth = createdRoom.isAdult, |                 isAuth = createdRoom.isAdult, | ||||||
|  |                 isAvailableJoinCreator = createdRoom.isAvailableJoinCreator, | ||||||
|                 roomId = createdRoom.id, |                 roomId = createdRoom.id, | ||||||
|                 creatorId = createdRoom.member!!.id, |                 creatorId = createdRoom.member!!.id, | ||||||
|                 container = "aos" |                 container = "aos" | ||||||
| @@ -511,6 +536,7 @@ class LiveRoomService( | |||||||
|                 title = room.member!!.nickname, |                 title = room.member!!.nickname, | ||||||
|                 message = "라이브를 시작했습니다 - ${room.title}", |                 message = "라이브를 시작했습니다 - ${room.title}", | ||||||
|                 isAuth = room.isAdult, |                 isAuth = room.isAdult, | ||||||
|  |                 isAvailableJoinCreator = room.isAvailableJoinCreator, | ||||||
|                 roomId = room.id, |                 roomId = room.id, | ||||||
|                 creatorId = room.member!!.id, |                 creatorId = room.member!!.id, | ||||||
|                 container = "ios" |                 container = "ios" | ||||||
| @@ -523,6 +549,7 @@ class LiveRoomService( | |||||||
|                 title = room.member!!.nickname, |                 title = room.member!!.nickname, | ||||||
|                 message = "라이브를 시작했습니다 - ${room.title}", |                 message = "라이브를 시작했습니다 - ${room.title}", | ||||||
|                 isAuth = room.isAdult, |                 isAuth = room.isAdult, | ||||||
|  |                 isAvailableJoinCreator = room.isAvailableJoinCreator, | ||||||
|                 roomId = room.id, |                 roomId = room.id, | ||||||
|                 creatorId = room.member!!.id, |                 creatorId = room.member!!.id, | ||||||
|                 container = "aos" |                 container = "aos" | ||||||
|   | |||||||
| @@ -29,6 +29,7 @@ interface MemberQueryRepository { | |||||||
|     fun getCreateLiveRoomNotificationRecipientPushTokens( |     fun getCreateLiveRoomNotificationRecipientPushTokens( | ||||||
|         creatorId: Long, |         creatorId: Long, | ||||||
|         isAuth: Boolean, |         isAuth: Boolean, | ||||||
|  |         isAvailableJoinCreator: Boolean, | ||||||
|         container: String |         container: String | ||||||
|     ): List<List<String>> |     ): List<List<String>> | ||||||
|  |  | ||||||
| @@ -36,6 +37,7 @@ interface MemberQueryRepository { | |||||||
|         creatorId: Long, |         creatorId: Long, | ||||||
|         roomId: Long, |         roomId: Long, | ||||||
|         isAuth: Boolean, |         isAuth: Boolean, | ||||||
|  |         isAvailableJoinCreator: Boolean, | ||||||
|         container: String |         container: String | ||||||
|     ): List<List<String>> |     ): List<List<String>> | ||||||
|  |  | ||||||
| @@ -120,6 +122,7 @@ class MemberQueryRepositoryImpl( | |||||||
|     override fun getCreateLiveRoomNotificationRecipientPushTokens( |     override fun getCreateLiveRoomNotificationRecipientPushTokens( | ||||||
|         creatorId: Long, |         creatorId: Long, | ||||||
|         isAuth: Boolean, |         isAuth: Boolean, | ||||||
|  |         isAvailableJoinCreator: Boolean, | ||||||
|         container: String |         container: String | ||||||
|     ): List<List<String>> { |     ): List<List<String>> { | ||||||
|         val member = QMember.member |         val member = QMember.member | ||||||
| @@ -142,6 +145,10 @@ class MemberQueryRepositoryImpl( | |||||||
|             where = where.and(auth.isNotNull) |             where = where.and(auth.isNotNull) | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (!isAvailableJoinCreator) { | ||||||
|  |             where = where.and(creatorFollowing.member.role.ne(MemberRole.CREATOR)) | ||||||
|  |         } | ||||||
|  |  | ||||||
|         return queryFactory |         return queryFactory | ||||||
|             .select(creatorFollowing.member.pushToken) |             .select(creatorFollowing.member.pushToken) | ||||||
|             .from(creatorFollowing) |             .from(creatorFollowing) | ||||||
| @@ -159,6 +166,7 @@ class MemberQueryRepositoryImpl( | |||||||
|         creatorId: Long, |         creatorId: Long, | ||||||
|         roomId: Long, |         roomId: Long, | ||||||
|         isAuth: Boolean, |         isAuth: Boolean, | ||||||
|  |         isAvailableJoinCreator: Boolean, | ||||||
|         container: String |         container: String | ||||||
|     ): List<List<String>> { |     ): List<List<String>> { | ||||||
|         val member = QMember.member |         val member = QMember.member | ||||||
| @@ -181,6 +189,10 @@ class MemberQueryRepositoryImpl( | |||||||
|             where = where.and(auth.isNotNull) |             where = where.and(auth.isNotNull) | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         if (!isAvailableJoinCreator) { | ||||||
|  |             where = where.and(creatorFollowing.member.role.ne(MemberRole.CREATOR)) | ||||||
|  |         } | ||||||
|  |  | ||||||
|         val followingMemberPushToken = queryFactory |         val followingMemberPushToken = queryFactory | ||||||
|             .select(creatorFollowing.member.pushToken) |             .select(creatorFollowing.member.pushToken) | ||||||
|             .from(creatorFollowing) |             .from(creatorFollowing) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user