parent
2d0492cafa
commit
695ccf975b
|
@ -1,5 +1,6 @@
|
||||||
package kr.co.vividnext.sodalive.live.room.kickout
|
package kr.co.vividnext.sodalive.live.room.kickout
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.v2.LiveRoomKickOutV2
|
||||||
import org.springframework.data.annotation.Id
|
import org.springframework.data.annotation.Id
|
||||||
import org.springframework.data.redis.core.RedisHash
|
import org.springframework.data.redis.core.RedisHash
|
||||||
|
|
||||||
|
@ -20,6 +21,13 @@ data class LiveRoomKickOut(
|
||||||
userList.removeIf { it.userId == userId }
|
userList.removeIf { it.userId == userId }
|
||||||
userList.add(liveRoomKickOutUser)
|
userList.add(liveRoomKickOutUser)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun convertV2(): LiveRoomKickOutV2 {
|
||||||
|
return LiveRoomKickOutV2(
|
||||||
|
roomId = roomId,
|
||||||
|
userList = userList
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class LiveRoomKickOutUser(
|
data class LiveRoomKickOutUser(
|
||||||
|
|
|
@ -8,6 +8,8 @@ import kr.co.vividnext.sodalive.member.Member
|
||||||
import kr.co.vividnext.sodalive.member.MemberRepository
|
import kr.co.vividnext.sodalive.member.MemberRepository
|
||||||
import kr.co.vividnext.sodalive.v2.LiveRoomInfoRedisRepositoryV2
|
import kr.co.vividnext.sodalive.v2.LiveRoomInfoRedisRepositoryV2
|
||||||
import kr.co.vividnext.sodalive.v2.LiveRoomInfoV2
|
import kr.co.vividnext.sodalive.v2.LiveRoomInfoV2
|
||||||
|
import kr.co.vividnext.sodalive.v2.LiveRoomKickOutRedisRepositoryV2
|
||||||
|
import kr.co.vividnext.sodalive.v2.LiveRoomKickOutV2
|
||||||
import org.springframework.beans.factory.annotation.Value
|
import org.springframework.beans.factory.annotation.Value
|
||||||
import org.springframework.data.repository.findByIdOrNull
|
import org.springframework.data.repository.findByIdOrNull
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
@ -17,6 +19,7 @@ class LiveRoomKickOutService(
|
||||||
private val roomInfoRepository: LiveRoomInfoRedisRepository,
|
private val roomInfoRepository: LiveRoomInfoRedisRepository,
|
||||||
private val roomInfoRepositoryV2: LiveRoomInfoRedisRepositoryV2,
|
private val roomInfoRepositoryV2: LiveRoomInfoRedisRepositoryV2,
|
||||||
private val repository: LiveRoomKickOutRedisRepository,
|
private val repository: LiveRoomKickOutRedisRepository,
|
||||||
|
private val repositoryV2: LiveRoomKickOutRedisRepositoryV2,
|
||||||
private val memberRepository: MemberRepository,
|
private val memberRepository: MemberRepository,
|
||||||
private val roomRepository: LiveRoomRepository,
|
private val roomRepository: LiveRoomRepository,
|
||||||
|
|
||||||
|
@ -39,6 +42,22 @@ class LiveRoomKickOutService(
|
||||||
return roomInfoV2
|
return roomInfoV2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getLiveRoomKickOut(roomId: Long): LiveRoomKickOutV2? {
|
||||||
|
var liveRoomKickOutV2 = repositoryV2.findByIdOrNull(roomId)
|
||||||
|
|
||||||
|
if (liveRoomKickOutV2 == null) {
|
||||||
|
val liveRoomKickOutV1 = repository.findByIdOrNull(roomId)
|
||||||
|
|
||||||
|
if (liveRoomKickOutV1 != null) {
|
||||||
|
liveRoomKickOutV2 = liveRoomKickOutV1.convertV2()
|
||||||
|
repositoryV2.save(liveRoomKickOutV2)
|
||||||
|
repository.delete(liveRoomKickOutV1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return liveRoomKickOutV2
|
||||||
|
}
|
||||||
|
|
||||||
fun kickOut(request: LiveRoomKickOutRequest, member: Member) {
|
fun kickOut(request: LiveRoomKickOutRequest, member: Member) {
|
||||||
val room = roomRepository.findByIdOrNull(request.roomId)
|
val room = roomRepository.findByIdOrNull(request.roomId)
|
||||||
?: throw SodaException("해당하는 라이브가 없습니다.")
|
?: throw SodaException("해당하는 라이브가 없습니다.")
|
||||||
|
@ -54,13 +73,13 @@ class LiveRoomKickOutService(
|
||||||
throw SodaException("권한이 없습니다.")
|
throw SodaException("권한이 없습니다.")
|
||||||
}
|
}
|
||||||
|
|
||||||
var liveRoomKickOut = repository.findByIdOrNull(request.roomId)
|
var liveRoomKickOut = getLiveRoomKickOut(request.roomId)
|
||||||
if (liveRoomKickOut == null) {
|
if (liveRoomKickOut == null) {
|
||||||
liveRoomKickOut = repository.save(LiveRoomKickOut(roomId = request.roomId))
|
liveRoomKickOut = repositoryV2.save(LiveRoomKickOutV2(roomId = request.roomId))
|
||||||
}
|
}
|
||||||
|
|
||||||
liveRoomKickOut.kickOut(request.userId)
|
liveRoomKickOut.kickOut(request.userId)
|
||||||
repository.save(liveRoomKickOut)
|
repositoryV2.save(liveRoomKickOut)
|
||||||
|
|
||||||
val kickOutUser = memberRepository.findByIdOrNull(request.userId)
|
val kickOutUser = memberRepository.findByIdOrNull(request.userId)
|
||||||
if (kickOutUser != null) {
|
if (kickOutUser != null) {
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package kr.co.vividnext.sodalive.v2
|
||||||
|
|
||||||
|
import org.springframework.data.repository.CrudRepository
|
||||||
|
|
||||||
|
interface LiveRoomKickOutRedisRepositoryV2 : CrudRepository<LiveRoomKickOutV2, Long>
|
|
@ -0,0 +1,24 @@
|
||||||
|
package kr.co.vividnext.sodalive.v2
|
||||||
|
|
||||||
|
import kr.co.vividnext.sodalive.live.room.kickout.LiveRoomKickOutUser
|
||||||
|
import org.springframework.data.annotation.Id
|
||||||
|
import org.springframework.data.redis.core.RedisHash
|
||||||
|
|
||||||
|
@RedisHash("LiveRoomKickOut")
|
||||||
|
data class LiveRoomKickOutV2(
|
||||||
|
@Id
|
||||||
|
val roomId: Long,
|
||||||
|
var userList: MutableList<LiveRoomKickOutUser> = mutableListOf()
|
||||||
|
) {
|
||||||
|
fun kickOut(userId: Long) {
|
||||||
|
var liveRoomKickOutUser = userList.find { it.userId == userId }
|
||||||
|
if (liveRoomKickOutUser == null) {
|
||||||
|
liveRoomKickOutUser = LiveRoomKickOutUser(userId)
|
||||||
|
} else {
|
||||||
|
liveRoomKickOutUser.plusCount()
|
||||||
|
}
|
||||||
|
|
||||||
|
userList.removeIf { it.userId == userId }
|
||||||
|
userList.add(liveRoomKickOutUser)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue