From 3ad2256a667b1cc7589ed0859821c5c22325d91d Mon Sep 17 00:00:00 2001
From: Klaus <klaus@vividnext.co.kr>
Date: Sun, 20 Aug 2023 22:42:35 +0900
Subject: [PATCH 1/3] =?UTF-8?q?=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4?=
 =?UTF-8?q?=EC=A7=80=20-=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EC=98=88?=
 =?UTF-8?q?=EC=95=BD=20=EC=88=98,=20=EA=B5=AC=EB=A7=A4=EB=82=B4=EC=97=AD?=
 =?UTF-8?q?=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../reservation/LiveReservationRepository.kt    | 14 ++++++++++++++
 .../vividnext/sodalive/member/MemberService.kt  | 17 +++++++++++++++--
 .../sodalive/member/myPage/MyPageResponse.kt    |  5 ++++-
 3 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/reservation/LiveReservationRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/reservation/LiveReservationRepository.kt
index 07a396f..4191d46 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/live/reservation/LiveReservationRepository.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/reservation/LiveReservationRepository.kt
@@ -25,6 +25,8 @@ interface LiveReservationQueryRepository {
         reservationId: Long,
         memberId: Long
     ): LiveReservation?
+
+    fun getReservationCount(memberId: Long): Int
 }
 
 @Repository
@@ -97,4 +99,16 @@ class LiveReservationQueryRepositoryImpl(private val queryFactory: JPAQueryFacto
             )
             .fetchFirst()
     }
+
+    override fun getReservationCount(memberId: Long): Int {
+        return queryFactory
+            .selectFrom(liveReservation)
+            .where(
+                liveReservation.member.id.eq(memberId)
+                    .and(liveReservation.isActive.isTrue)
+                    .and(liveReservation.room.isActive.isTrue)
+            )
+            .fetch()
+            .size
+    }
 }
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 db4564a..743d2c2 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt
@@ -7,8 +7,10 @@ import kr.co.vividnext.sodalive.can.payment.CanPaymentService
 import kr.co.vividnext.sodalive.can.use.CanUsage
 import kr.co.vividnext.sodalive.common.ApiResponse
 import kr.co.vividnext.sodalive.common.SodaException
+import kr.co.vividnext.sodalive.content.order.OrderService
 import kr.co.vividnext.sodalive.email.SendEmailService
 import kr.co.vividnext.sodalive.jwt.TokenProvider
+import kr.co.vividnext.sodalive.live.reservation.LiveReservationRepository
 import kr.co.vividnext.sodalive.live.room.detail.GetRoomDetailUser
 import kr.co.vividnext.sodalive.member.block.BlockMember
 import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
@@ -66,7 +68,9 @@ class MemberService(
     private val signOutRepository: SignOutRepository,
     private val nicknameChangeLogRepository: NicknameChangeLogRepository,
     private val memberTagRepository: MemberTagRepository,
+    private val liveReservationRepository: LiveReservationRepository,
 
+    private val orderService: OrderService,
     private val emailService: SendEmailService,
     private val canPaymentService: CanPaymentService,
     private val memberNotificationService: MemberNotificationService,
@@ -165,6 +169,14 @@ class MemberService(
     }
 
     fun getMyPage(member: Member, container: String): MyPageResponse {
+        val liveReservationCount = liveReservationRepository.getReservationCount(memberId = member.id!!)
+
+        val orderList = orderService.getAudioContentOrderList(
+            member = member,
+            offset = 0,
+            limit = 4
+        )
+
         return MyPageResponse(
             nickname = member.nickname,
             profileUrl = if (member.profileImage != null) {
@@ -178,8 +190,9 @@ class MemberService(
             instagramUrl = member.instagramUrl,
             websiteUrl = member.websiteUrl,
             blogUrl = member.blogUrl,
-            liveReservationCount = 0,
-            isAuth = member.auth != null
+            liveReservationCount = liveReservationCount,
+            isAuth = member.auth != null,
+            orderList = orderList
         )
     }
 
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/myPage/MyPageResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/myPage/MyPageResponse.kt
index d357f34..54d7a33 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/member/myPage/MyPageResponse.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/myPage/MyPageResponse.kt
@@ -1,5 +1,7 @@
 package kr.co.vividnext.sodalive.member.myPage
 
+import kr.co.vividnext.sodalive.content.order.GetAudioContentOrderListResponse
+
 data class MyPageResponse(
     val nickname: String,
     val profileUrl: String,
@@ -10,5 +12,6 @@ data class MyPageResponse(
     val websiteUrl: String? = null,
     val blogUrl: String? = null,
     val liveReservationCount: Int,
-    val isAuth: Boolean
+    val isAuth: Boolean,
+    val orderList: GetAudioContentOrderListResponse
 )

From 1d217b9f7545d5ed467a0b55408e91be3a48887a Mon Sep 17 00:00:00 2001
From: Klaus <klaus@vividnext.co.kr>
Date: Sun, 20 Aug 2023 22:51:06 +0900
Subject: [PATCH 2/3] =?UTF-8?q?fcm=20-=20ios=20=EC=9D=BC=20=EA=B2=BD?=
 =?UTF-8?q?=EC=9A=B0=20notification=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../kr/co/vividnext/sodalive/fcm/FcmService.kt  | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 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 7a678fa..0f27f69 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/fcm/FcmService.kt
@@ -2,6 +2,7 @@ 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.springframework.scheduling.annotation.Async
 import org.springframework.stereotype.Service
 
@@ -18,10 +19,22 @@ class FcmService {
         contentId: Long? = null
     ) {
         val multicastMessage = MulticastMessage.builder()
-            .putData("title", title)
-            .putData("message", message)
             .addAllTokens(tokens)
 
+        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())
         }

From 73988d7b2c743894a7ab3a65bab88849a27d3eaa Mon Sep 17 00:00:00 2001
From: Klaus <klaus@vividnext.co.kr>
Date: Sun, 20 Aug 2023 23:27:42 +0900
Subject: [PATCH 3/3] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EC=A0=95?=
 =?UTF-8?q?=EB=B3=B4=20-=2019=EA=B8=88=20=EC=97=AC=EB=B6=80=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

---
 .../kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt | 1 +
 .../co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.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 6f04a46..0c00ffe 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
@@ -672,6 +672,7 @@ class LiveRoomService(
                 "$cloudFrontHost/profile/default-profile.png"
             },
             isFollowing = isFollowing,
+            isAdult = room.isAdult,
             participantsCount = roomInfo.listenerCount + roomInfo.speakerCount + roomInfo.managerCount,
             totalAvailableParticipantsCount = room.numberOfPeople,
             speakerList = roomInfo.speakerList,
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt
index 69ad47d..04c04f9 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt
@@ -12,6 +12,7 @@ data class GetRoomInfoResponse(
     val creatorNickname: String,
     val creatorProfileUrl: String,
     val isFollowing: Boolean,
+    val isAdult: Boolean,
     val participantsCount: Int,
     val totalAvailableParticipantsCount: Int,
     val speakerList: List<LiveRoomMember>,