라이브 방 정보 처리 및 저장

- Redis -> Valkey로 이전되도록 수정
This commit is contained in:
2024-11-23 00:05:27 +09:00
parent 68472b234e
commit 2d0492cafa
7 changed files with 225 additions and 30 deletions

View File

@@ -0,0 +1,5 @@
package kr.co.vividnext.sodalive.v2
import org.springframework.data.repository.CrudRepository
interface LiveRoomInfoRedisRepositoryV2 : CrudRepository<LiveRoomInfoV2, Long>

View File

@@ -0,0 +1,123 @@
package kr.co.vividnext.sodalive.v2
import kr.co.vividnext.sodalive.live.room.donation.LiveRoomDonationMessage
import kr.co.vividnext.sodalive.live.room.info.LiveRoomMember
import kr.co.vividnext.sodalive.live.room.info.LiveRoomMemberRole
import kr.co.vividnext.sodalive.member.Member
import org.springframework.data.annotation.Id
import org.springframework.data.redis.core.RedisHash
@RedisHash("LiveRoomInfo")
data class LiveRoomInfoV2(
@Id
val roomId: Long,
var speakerList: List<LiveRoomMember> = mutableListOf(),
var listenerList: List<LiveRoomMember> = mutableListOf(),
var managerList: List<LiveRoomMember> = mutableListOf(),
var donationMessageList: List<LiveRoomDonationMessage> = mutableListOf()
) {
var speakerCount = 0
private set
var listenerCount = 0
private set
var managerCount = 0
private set
fun addSpeaker(member: Member, cloudFrontHost: String) {
val liveRoomMember = LiveRoomMember(member, cloudFrontHost)
liveRoomMember.role = LiveRoomMemberRole.SPEAKER
val speakerSet = speakerList.toMutableSet()
speakerSet.add(liveRoomMember)
speakerList = speakerSet.toList()
setSpeakerCount()
}
fun removeSpeaker(member: Member) {
(speakerList as MutableList).removeIf { it.id == member.id!! }
setSpeakerCount()
}
private fun setSpeakerCount() {
speakerCount = speakerList.size
}
fun addListener(member: Member, cloudFrontHost: String) {
val liveRoomMember = LiveRoomMember(member, cloudFrontHost)
liveRoomMember.role = LiveRoomMemberRole.LISTENER
val listenerSet = listenerList.toMutableSet()
listenerSet.add(liveRoomMember)
listenerList = listenerSet.toList()
setListenerCount()
}
fun removeListener(member: Member) {
(listenerList as MutableList).removeIf { it.id == member.id!! }
setListenerCount()
}
private fun setListenerCount() {
listenerCount = listenerList.size
}
fun addManager(member: Member, cloudFrontHost: String) {
val liveRoomMember = LiveRoomMember(member, cloudFrontHost)
liveRoomMember.role = LiveRoomMemberRole.MANAGER
val managerSet = managerList.toMutableSet()
managerSet.add(liveRoomMember)
managerList = managerSet.toList()
setManagerCount()
}
fun removeManager(member: Member) {
(managerList as MutableList).removeIf { it.id == member.id!! }
setManagerCount()
}
private fun setManagerCount() {
managerCount = managerList.size
}
fun addDonationMessage(memberId: Long, nickname: String, isSecret: Boolean, can: Int, donationMessage: String) {
val donationMessageSet = donationMessageList.toMutableSet()
donationMessageSet.add(
LiveRoomDonationMessage(
memberId = memberId,
nickname = nickname,
isSecret = isSecret,
canMessage = if (isSecret) {
"${can}캔으로 비밀미션을 보냈습니다."
} else {
"${can}캔을 후원하셨습니다."
},
donationMessage = donationMessage
)
)
donationMessageList = donationMessageSet.toList()
}
fun addRouletteMessage(memberId: Long, nickname: String, donationMessage: String) {
val donationMessageSet = donationMessageList.toMutableSet()
donationMessageSet.add(
LiveRoomDonationMessage(
memberId = memberId,
nickname = nickname,
isSecret = false,
canMessage = "",
donationMessage = donationMessage
)
)
donationMessageList = donationMessageSet.toList()
}
fun removeDonationMessage(uuid: String) {
(donationMessageList as MutableList).removeIf { it.uuid == uuid }
}
}