From 629528b6cff3321c24a083ffee1398c1616b7c2a Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 21 Aug 2023 01:10:05 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=ED=91=B8=EC=8B=9C=20-=20=EB=B3=B4=EB=82=B4?= =?UTF-8?q?=EA=B8=B0=20=EC=84=B1=EA=B3=B5/=EC=8B=A4=ED=8C=A8=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt index 0f27f69..9bf8260 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt @@ -3,11 +3,14 @@ package kr.co.vividnext.sodalive.fcm import com.google.firebase.messaging.FirebaseMessaging import com.google.firebase.messaging.MulticastMessage import com.google.firebase.messaging.Notification +import org.slf4j.LoggerFactory import org.springframework.scheduling.annotation.Async import org.springframework.stereotype.Service @Service class FcmService { + private val logger = LoggerFactory.getLogger(this::class.java) + @Async fun send( tokens: List, @@ -47,6 +50,8 @@ class FcmService { multicastMessage.putData("content_id", contentId.toString()) } - FirebaseMessaging.getInstance().sendEachForMulticast(multicastMessage.build()) + val response = FirebaseMessaging.getInstance().sendEachForMulticast(multicastMessage.build()) + logger.info("보내기 성공: ${response.successCount}") + logger.info("보내기 실패: ${response.failureCount}") } } From 40bdd5ba1c3d963e8a26ff38f46f661fbcbf558d Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 21 Aug 2023 01:11:15 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=ED=91=B8=EC=8B=9C=20-=20os=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt index 9bf8260..99075b6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt @@ -51,6 +51,7 @@ class FcmService { } val response = FirebaseMessaging.getInstance().sendEachForMulticast(multicastMessage.build()) + logger.info("os: $container") logger.info("보내기 성공: ${response.successCount}") logger.info("보내기 실패: ${response.failureCount}") } From 2410d77cb7bce38d8731a22d519ceba0f422d870 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 21 Aug 2023 02:31:17 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=ED=91=B8=EC=8B=9C=20-=20=EA=B0=9C=EB=B3=84?= =?UTF-8?q?=EB=B0=9C=EC=86=A1=20=EB=A1=9C=EC=A7=81=20=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 | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) 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 721a8b7..1e9c196 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmEvent.kt @@ -65,7 +65,7 @@ class FcmSendListener( tokens = tokens, title = fcmEvent.title, message = fcmEvent.message, - container = fcmEvent.container + container = "ios" ) } } @@ -76,14 +76,34 @@ class FcmSendListener( tokens = tokens, title = fcmEvent.title, message = fcmEvent.message, - container = fcmEvent.container + container = "aos" ) } } } } - FcmEventType.CREATE_LIVE, FcmEventType.START_LIVE -> { + FcmEventType.CREATE_LIVE -> { + if (fcmEvent.container.isNotBlank()) { + val pushTokens = memberRepository.getCreateLiveRoomNotificationRecipientPushTokens( + creatorId = fcmEvent.creatorId!!, + isAuth = fcmEvent.isAuth, + container = fcmEvent.container + ) + + for (tokens in pushTokens) { + pushService.send( + tokens = tokens, + title = fcmEvent.title, + message = fcmEvent.message, + container = fcmEvent.container, + roomId = fcmEvent.roomId + ) + } + } + } + + FcmEventType.START_LIVE -> { if (fcmEvent.container.isNotBlank()) { val pushTokens = memberRepository.getCreateLiveRoomNotificationRecipientPushTokens( creatorId = fcmEvent.creatorId!!, From 498d9c4893e669958e6a12059dfca5cc3aaabe11 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 21 Aug 2023 03:15:04 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=ED=91=B8=EC=8B=9C=20=ED=86=A0=ED=81=B0=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20-=20=ED=91=B8=EC=8B=9C=20=ED=86=A0?= =?UTF-8?q?=ED=81=B0=20!=3D=20null=20=EB=A1=9C=EC=A7=81=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/member/MemberRepository.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 5a92a07..45fa78e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -80,6 +80,7 @@ class MemberQueryRepositoryImpl( var where = member.isActive.isTrue .and(member.email.notIn("admin@sodalive.net")) .and(member.container.eq(container)) + .and(member.pushToken.isNotNull) if (isAuth) { where = where.and(member.auth.isNotNull) @@ -113,6 +114,7 @@ class MemberQueryRepositoryImpl( blockMemberRepository.getBlockedMemberList(creatorId) ) ) + .and(creatorFollowing.member.pushToken.isNotNull) if (isAuth) { where = where.and(member.auth.isNotNull) @@ -149,6 +151,7 @@ class MemberQueryRepositoryImpl( blockMemberRepository.getBlockedMemberList(creatorId) ) ) + .and(creatorFollowing.member.pushToken.isNotNull) if (isAuth) { where = where.and(member.auth.isNotNull) @@ -177,7 +180,10 @@ class MemberQueryRepositoryImpl( ) .from(message) .innerJoin(message.recipient, member) - .where(message.id.eq(messageId)) + .where( + message.id.eq(messageId) + .and(member.pushToken.isNotNull) + ) .fetchFirst() } @@ -188,6 +194,7 @@ class MemberQueryRepositoryImpl( var where = member.isActive.isTrue .and(member.email.notIn("admin@sodalive.net")) .and(member.id.`in`(*recipients.toTypedArray())) + .and(member.pushToken.isNotNull) if (isAuth) { where = where.and(member.auth.isNotNull) From 077af3a46d4570cdd80cce49e06feb1ba506d363 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 21 Aug 2023 03:16:23 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=ED=91=B8=EC=8B=9C=20=EB=B0=9C=EC=86=A1=20-?= =?UTF-8?q?=20token=EC=9D=B4=20=EC=9E=88=EB=8A=94=20=EA=B2=BD=EC=9A=B0?= =?UTF-8?q?=EC=97=90=EB=A7=8C=20=EB=B0=9C=EC=86=A1=ED=95=98=EB=8F=84?= =?UTF-8?q?=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 --- .../co/vividnext/sodalive/fcm/FcmService.kt | 64 ++++++++++--------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt index 99075b6..1383185 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt @@ -21,38 +21,40 @@ class FcmService { messageId: Long? = null, contentId: Long? = null ) { - val multicastMessage = MulticastMessage.builder() - .addAllTokens(tokens) + if (tokens.isNotEmpty()) { + logger.info("os: $container") + val multicastMessage = MulticastMessage.builder() + .addAllTokens(tokens) - if (container == "ios") { - multicastMessage - .setNotification( - Notification.builder() - .setTitle(title) - .setBody(message) - .build() - ) - } else { - multicastMessage - .putData("title", title) - .putData("message", message) + if (container == "ios") { + multicastMessage + .setNotification( + Notification.builder() + .setTitle(title) + .setBody(message) + .build() + ) + } else { + multicastMessage + .putData("title", title) + .putData("message", message) + } + + if (roomId != null) { + multicastMessage.putData("room_id", roomId.toString()) + } + + if (messageId != null) { + multicastMessage.putData("message_id", messageId.toString()) + } + + if (contentId != null) { + multicastMessage.putData("content_id", contentId.toString()) + } + + val response = FirebaseMessaging.getInstance().sendEachForMulticast(multicastMessage.build()) + logger.info("보내기 성공: ${response.successCount}") + logger.info("보내기 실패: ${response.failureCount}") } - - if (roomId != null) { - multicastMessage.putData("room_id", roomId.toString()) - } - - if (messageId != null) { - multicastMessage.putData("message_id", messageId.toString()) - } - - if (contentId != null) { - multicastMessage.putData("content_id", contentId.toString()) - } - - val response = FirebaseMessaging.getInstance().sendEachForMulticast(multicastMessage.build()) - logger.info("os: $container") - logger.info("보내기 성공: ${response.successCount}") - logger.info("보내기 실패: ${response.failureCount}") } } From 82a6161abfc1060bb1cd685db6b41643f97ee8c1 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 21 Aug 2023 04:04:56 +0900 Subject: [PATCH 6/6] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20-=20=EC=9D=91=EB=8B=B5=EA=B0=92=2019=EA=B8=88=20?= =?UTF-8?q?=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 --- .../kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt | 1 + .../vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt | 1 + 2 files changed, 2 insertions(+) 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 0c00ffe..5d6c144 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 @@ -301,6 +301,7 @@ class LiveRoomService( channelName = room.channelName, beginDateTime = beginDateTime.format(DateTimeFormatter.ofPattern("yyyy.MM.dd E hh:mm a")), isPaid = false, + isAdult = room.isAdult, isPrivateRoom = room.type == LiveRoomType.PRIVATE, password = room.password ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt index be95f68..d3ca637 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt @@ -9,6 +9,7 @@ data class GetRoomDetailResponse( val title: String, val notice: String, var isPaid: Boolean, + val isAdult: Boolean, val isPrivateRoom: Boolean, val password: String?, val tags: List,