라이브 방 강퇴 정보 처리 및 저장
- Redis -> Valkey로 이전되도록 수정
This commit is contained in:
		| @@ -1,5 +1,6 @@ | ||||
| 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.redis.core.RedisHash | ||||
|  | ||||
| @@ -20,6 +21,13 @@ data class LiveRoomKickOut( | ||||
|         userList.removeIf { it.userId == userId } | ||||
|         userList.add(liveRoomKickOutUser) | ||||
|     } | ||||
|  | ||||
|     fun convertV2(): LiveRoomKickOutV2 { | ||||
|         return LiveRoomKickOutV2( | ||||
|             roomId = roomId, | ||||
|             userList = userList | ||||
|         ) | ||||
|     } | ||||
| } | ||||
|  | ||||
| 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.v2.LiveRoomInfoRedisRepositoryV2 | ||||
| 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.data.repository.findByIdOrNull | ||||
| import org.springframework.stereotype.Service | ||||
| @@ -17,6 +19,7 @@ class LiveRoomKickOutService( | ||||
|     private val roomInfoRepository: LiveRoomInfoRedisRepository, | ||||
|     private val roomInfoRepositoryV2: LiveRoomInfoRedisRepositoryV2, | ||||
|     private val repository: LiveRoomKickOutRedisRepository, | ||||
|     private val repositoryV2: LiveRoomKickOutRedisRepositoryV2, | ||||
|     private val memberRepository: MemberRepository, | ||||
|     private val roomRepository: LiveRoomRepository, | ||||
|  | ||||
| @@ -39,6 +42,22 @@ class LiveRoomKickOutService( | ||||
|         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) { | ||||
|         val room = roomRepository.findByIdOrNull(request.roomId) | ||||
|             ?: throw SodaException("해당하는 라이브가 없습니다.") | ||||
| @@ -54,13 +73,13 @@ class LiveRoomKickOutService( | ||||
|             throw SodaException("권한이 없습니다.") | ||||
|         } | ||||
|  | ||||
|         var liveRoomKickOut = repository.findByIdOrNull(request.roomId) | ||||
|         var liveRoomKickOut = getLiveRoomKickOut(request.roomId) | ||||
|         if (liveRoomKickOut == null) { | ||||
|             liveRoomKickOut = repository.save(LiveRoomKickOut(roomId = request.roomId)) | ||||
|             liveRoomKickOut = repositoryV2.save(LiveRoomKickOutV2(roomId = request.roomId)) | ||||
|         } | ||||
|  | ||||
|         liveRoomKickOut.kickOut(request.userId) | ||||
|         repository.save(liveRoomKickOut) | ||||
|         repositoryV2.save(liveRoomKickOut) | ||||
|  | ||||
|         val kickOutUser = memberRepository.findByIdOrNull(request.userId) | ||||
|         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) | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user