diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt index 994a7cb..4f7fd58 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt @@ -223,9 +223,10 @@ class LiveRoomController(private val service: LiveRoomService) { @PostMapping("/quit") fun quitRoom( + @RequestParam("id") roomId: Long, @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? ) = run { if (member == null) throw SodaException("로그인 정보를 확인해주세요.") - ApiResponse.ok(service.quitRoom(member)) + ApiResponse.ok(service.quitRoom(roomId, member)) } } 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 f997c90..3938006 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 @@ -865,27 +865,22 @@ class LiveRoomService( ) } - fun quitRoom(member: Member) { - val roomVisit = roomVisitService.getLatestRoomVisit(member.id!!) - - val roomId = roomVisit?.room?.id - if (roomId != null) { - val lock = getOrCreateLock(memberId = member.id!!) - lock.write { - val roomInfo = roomInfoRepository.findByIdOrNull(roomId) - if (roomInfo != null) { - val room = repository.getLiveRoom(roomId) ?: return - println(room) - if (room.member != null && room.member!!.id!! == member.id!!) { - room.isActive = false - kickOutService.deleteKickOutData(roomId = room.id!!) - roomInfoRepository.deleteById(roomInfo.roomId) - } else { - roomInfo.removeSpeaker(member) - roomInfo.removeListener(member) - roomInfo.removeManager(member) - roomInfoRepository.save(roomInfo) - } + @Transactional + fun quitRoom(roomId: Long, member: Member) { + val room = repository.getLiveRoom(roomId) + val lock = getOrCreateLock(memberId = member.id!!) + lock.write { + val roomInfo = roomInfoRepository.findByIdOrNull(roomId) + if (roomInfo != null) { + if (room?.member != null && room.member!! == member) { + room.isActive = false + kickOutService.deleteKickOutData(roomId = room.id!!) + roomInfoRepository.deleteById(roomInfo.roomId) + } else { + roomInfo.removeSpeaker(member) + roomInfo.removeListener(member) + roomInfo.removeManager(member) + roomInfoRepository.save(roomInfo) } } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitRepository.kt index 2eed38f..b90ce96 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitRepository.kt @@ -13,7 +13,6 @@ interface LiveRoomVisitRepository : JpaRepository, LiveRoom interface LiveRoomVisitQueryRepository { fun findByRoomIdAndMemberId(roomId: Long, memberId: Long): LiveRoomVisit? fun findFirstByMemberIdOrderByUpdatedAtDesc(memberId: Long): LiveRoomVisit? - fun getLatestRoomVisit(memberId: Long): LiveRoomVisit? } @Repository @@ -39,13 +38,4 @@ class LiveRoomVisitQueryRepositoryImpl(private val queryFactory: JPAQueryFactory .orderBy(liveRoomVisit.updatedAt.desc()) .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() - } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitService.kt index a0cda13..df18ba1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitService.kt @@ -22,8 +22,4 @@ class LiveRoomVisitService(private val repository: LiveRoomVisitRepository) { repository.save(roomVisit) } - - fun getLatestRoomVisit(memberId: Long): LiveRoomVisit? { - return repository.getLatestRoomVisit(memberId) - } }