라이브 방 정보 - 방 나가기 로직 @Transactional 추가
This commit is contained in:
parent
7d904067fe
commit
df861bf8a1
|
@ -223,9 +223,10 @@ class LiveRoomController(private val service: LiveRoomService) {
|
||||||
|
|
||||||
@PostMapping("/quit")
|
@PostMapping("/quit")
|
||||||
fun quitRoom(
|
fun quitRoom(
|
||||||
|
@RequestParam("id") roomId: Long,
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
) = run {
|
) = run {
|
||||||
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
ApiResponse.ok(service.quitRoom(member))
|
ApiResponse.ok(service.quitRoom(roomId, member))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -865,27 +865,22 @@ class LiveRoomService(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun quitRoom(member: Member) {
|
@Transactional
|
||||||
val roomVisit = roomVisitService.getLatestRoomVisit(member.id!!)
|
fun quitRoom(roomId: Long, member: Member) {
|
||||||
|
val room = repository.getLiveRoom(roomId)
|
||||||
val roomId = roomVisit?.room?.id
|
val lock = getOrCreateLock(memberId = member.id!!)
|
||||||
if (roomId != null) {
|
lock.write {
|
||||||
val lock = getOrCreateLock(memberId = member.id!!)
|
val roomInfo = roomInfoRepository.findByIdOrNull(roomId)
|
||||||
lock.write {
|
if (roomInfo != null) {
|
||||||
val roomInfo = roomInfoRepository.findByIdOrNull(roomId)
|
if (room?.member != null && room.member!! == member) {
|
||||||
if (roomInfo != null) {
|
room.isActive = false
|
||||||
val room = repository.getLiveRoom(roomId) ?: return
|
kickOutService.deleteKickOutData(roomId = room.id!!)
|
||||||
println(room)
|
roomInfoRepository.deleteById(roomInfo.roomId)
|
||||||
if (room.member != null && room.member!!.id!! == member.id!!) {
|
} else {
|
||||||
room.isActive = false
|
roomInfo.removeSpeaker(member)
|
||||||
kickOutService.deleteKickOutData(roomId = room.id!!)
|
roomInfo.removeListener(member)
|
||||||
roomInfoRepository.deleteById(roomInfo.roomId)
|
roomInfo.removeManager(member)
|
||||||
} else {
|
roomInfoRepository.save(roomInfo)
|
||||||
roomInfo.removeSpeaker(member)
|
|
||||||
roomInfo.removeListener(member)
|
|
||||||
roomInfo.removeManager(member)
|
|
||||||
roomInfoRepository.save(roomInfo)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ interface LiveRoomVisitRepository : JpaRepository<LiveRoomVisit, Long>, LiveRoom
|
||||||
interface LiveRoomVisitQueryRepository {
|
interface LiveRoomVisitQueryRepository {
|
||||||
fun findByRoomIdAndMemberId(roomId: Long, memberId: Long): LiveRoomVisit?
|
fun findByRoomIdAndMemberId(roomId: Long, memberId: Long): LiveRoomVisit?
|
||||||
fun findFirstByMemberIdOrderByUpdatedAtDesc(memberId: Long): LiveRoomVisit?
|
fun findFirstByMemberIdOrderByUpdatedAtDesc(memberId: Long): LiveRoomVisit?
|
||||||
fun getLatestRoomVisit(memberId: Long): LiveRoomVisit?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
|
@ -39,13 +38,4 @@ class LiveRoomVisitQueryRepositoryImpl(private val queryFactory: JPAQueryFactory
|
||||||
.orderBy(liveRoomVisit.updatedAt.desc())
|
.orderBy(liveRoomVisit.updatedAt.desc())
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getLatestRoomVisit(memberId: Long): LiveRoomVisit? {
|
|
||||||
return queryFactory
|
|
||||||
.selectFrom(liveRoomVisit)
|
|
||||||
.innerJoin(liveRoomVisit.member, member)
|
|
||||||
.where(member.id.eq(memberId))
|
|
||||||
.orderBy(liveRoomVisit.updatedAt.desc())
|
|
||||||
.fetchFirst()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,4 @@ class LiveRoomVisitService(private val repository: LiveRoomVisitRepository) {
|
||||||
|
|
||||||
repository.save(roomVisit)
|
repository.save(roomVisit)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getLatestRoomVisit(memberId: Long): LiveRoomVisit? {
|
|
||||||
return repository.getLatestRoomVisit(memberId)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue