From df861bf8a1e90db75be762a5c2cc3744dd85955e Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 1 Aug 2023 06:32:21 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20-=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EB=A1=9C=EC=A7=81=20@Transactional=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/room/LiveRoomController.kt | 3 +- .../sodalive/live/room/LiveRoomService.kt | 37 ++++++++----------- .../room/visit/LiveRoomVisitRepository.kt | 10 ----- .../live/room/visit/LiveRoomVisitService.kt | 4 -- 4 files changed, 18 insertions(+), 36 deletions(-) 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) - } }