From 13761a41306609dd21efb12479efa722cf188d23 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 30 Aug 2023 12:06:33 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=ED=91=B8=EC=8B=9C=20-=20=ED=8C=94=EB=A1=9C?= =?UTF-8?q?=EC=9E=89=20=EC=83=81=ED=83=9C=EA=B0=80=20=EC=95=84=EB=8B=88?= =?UTF-8?q?=EC=97=AC=EB=8F=84=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=A5=BC=20?= =?UTF-8?q?=EC=98=88=EC=95=BD=ED=95=98=EB=A9=B4=20=ED=91=B8=EC=8B=9C?= =?UTF-8?q?=EB=A5=BC=20=EB=B0=9C=EC=86=A1=ED=95=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 --- .../kr/co/vividnext/sodalive/fcm/FcmEvent.kt | 2 +- .../sodalive/member/MemberRepository.kt | 73 +++++++++++++++++++ 2 files changed, 74 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 295e592..e766c32 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt @@ -113,7 +113,7 @@ class FcmSendListener( FcmEventType.START_LIVE -> { if (fcmEvent.container.isNotBlank()) { - val pushTokens = memberRepository.getCreateLiveRoomNotificationRecipientPushTokens( + val pushTokens = memberRepository.getStartLiveRoomNotificationRecipientPushTokens( creatorId = fcmEvent.creatorId!!, isAuth = fcmEvent.isAuth, container = fcmEvent.container 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 b846bac..3a60039 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -3,6 +3,8 @@ package kr.co.vividnext.sodalive.member import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.fcm.GetMessageRecipientPushTokenResponse import kr.co.vividnext.sodalive.fcm.QGetMessageRecipientPushTokenResponse +import kr.co.vividnext.sodalive.live.reservation.QLiveReservation.liveReservation +import kr.co.vividnext.sodalive.live.room.QLiveRoom.liveRoom import kr.co.vividnext.sodalive.member.QMember.member import kr.co.vividnext.sodalive.member.auth.QAuth.auth import kr.co.vividnext.sodalive.member.block.BlockMemberRepository @@ -30,6 +32,12 @@ interface MemberQueryRepository { container: String ): List> + fun getStartLiveRoomNotificationRecipientPushTokens( + creatorId: Long, + isAuth: Boolean, + container: String + ): List> + fun getUploadContentNotificationRecipientPushTokens( creatorId: Long, isAuth: Boolean, @@ -135,6 +143,71 @@ class MemberQueryRepositoryImpl( .chunked(500) } + override fun getStartLiveRoomNotificationRecipientPushTokens( + creatorId: Long, + isAuth: Boolean, + container: String + ): List> { + val member = QMember.member + val creator = QMember.member + + var where = creatorFollowing.isActive.isTrue + .and(creatorFollowing.creator.id.eq(creatorId)) + .and(creatorFollowing.member.notification.live.isTrue) + .and(creatorFollowing.member.container.eq(container)) + .and(creatorFollowing.member.email.notIn("admin@sodalive.net")) + .and( + creatorFollowing.member.id.notIn( + blockMemberRepository.getBlockedMemberList(creatorId) + ) + ) + .and(creatorFollowing.member.pushToken.isNotNull) + + if (isAuth) { + where = where.and(member.auth.isNotNull) + } + + val followingMemberPushToken = queryFactory + .select(creatorFollowing.member.pushToken) + .from(creatorFollowing) + .innerJoin(creatorFollowing.creator, creator) + .innerJoin(creatorFollowing.member, member) + .innerJoin(member.notification, memberNotification) + .leftJoin(member.auth, auth) + .where(where) + .fetch() + .toSet() + .chunked(500) + + where = liveReservation.isActive.isTrue + .and(liveReservation.member.notification.live.isTrue) + .and(liveReservation.member.container.eq(container)) + .and(liveReservation.member.email.notIn("admin@sodalive.net")) + .and(liveReservation.member.pushToken.isNotNull) + .and( + liveReservation.member.id.notIn( + blockMemberRepository.getBlockedMemberList(creatorId) + ) + ) + + if (isAuth) { + where = where.and(member.auth.isNotNull) + } + + val reservationMemberPushToken = queryFactory + .select(liveReservation.member.pushToken) + .from(liveReservation) + .innerJoin(liveReservation.member, member) + .innerJoin(liveReservation.room, liveRoom) + .innerJoin(liveRoom.member, creator) + .where(where) + .fetch() + .toSet() + .chunked(500) + + return followingMemberPushToken + reservationMemberPushToken + } + override fun getUploadContentNotificationRecipientPushTokens( creatorId: Long, isAuth: Boolean, -- 2.40.1 From 6cf401539f4535d3babc5ac4c80a54968c6b0933 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 30 Aug 2023 12:39:05 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EC=B0=A8=EB=8B=A8/?= =?UTF-8?q?=EC=B0=A8=EB=8B=A8=ED=95=B4=EC=A0=9C=20-=20=ED=8A=B8=EB=9E=9C?= =?UTF-8?q?=EC=A0=9D=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kr/co/vividnext/sodalive/member/MemberService.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt index 743d2c2..42e33c2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -349,6 +349,7 @@ class MemberService( } } + @Transactional fun memberBlock(request: MemberBlockRequest, memberId: Long) { var blockMember = blockMemberRepository.getBlockAccount( blockedMemberId = request.blockMemberId, @@ -367,6 +368,7 @@ class MemberService( } } + @Transactional fun memberUnBlock(request: MemberBlockRequest, memberId: Long) { val blockMember = blockMemberRepository.getBlockAccount( blockedMemberId = request.blockMemberId, -- 2.40.1