From 7fefc9b0a6595db3886a220c18befe3ce9f61b28 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 20 Nov 2023 14:30:01 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B5=9C=EA=B7=BC=20=EB=B0=A9=EB=AC=B8?= =?UTF-8?q?=ED=95=9C=20=EB=B0=A9=20=EC=9C=A0=EC=A0=80=EA=B2=80=EC=83=89=20?= =?UTF-8?q?-=20=EC=9C=A0=EC=A0=80=20=EA=B6=8C=ED=95=9C=20=EB=B4=87=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20-=20=EA=B6=8C=ED=95=9C=EC=9D=B4=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=EC=9D=B8=20=EA=B2=BD=EC=9A=B0=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=EC=97=90=EA=B2=8C=20=EC=95=88=EB=B3=B4=EC=9D=B4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/room/LiveRoomController.kt | 2 +- .../room/visit/LiveRoomVisitRepository.kt | 29 ++++++++++++------- .../live/room/visit/LiveRoomVisitService.kt | 6 ++-- 3 files changed, 22 insertions(+), 15 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 6d8daac..b034601 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 @@ -240,6 +240,6 @@ class LiveRoomController( ) = run { if (member == null) throw SodaException("로그인 정보를 확인해주세요.") - ApiResponse.ok(visitService.getRecentVisitRoomUsers(member.id!!)) + ApiResponse.ok(visitService.getRecentVisitRoomUsers(member)) } } 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 bbf9f90..3ab4ce0 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 @@ -5,6 +5,7 @@ import kr.co.vividnext.sodalive.live.room.QLiveRoom.liveRoom import kr.co.vividnext.sodalive.live.room.visit.QLiveRoomVisit.liveRoomVisit import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.MemberRole +import kr.co.vividnext.sodalive.member.QMember import kr.co.vividnext.sodalive.member.QMember.member import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @@ -15,7 +16,7 @@ interface LiveRoomVisitRepository : JpaRepository, LiveRoom interface LiveRoomVisitQueryRepository { fun findByRoomIdAndMemberId(roomId: Long, memberId: Long): LiveRoomVisit? fun findFirstByMemberIdOrderByUpdatedAtDesc(memberId: Long): LiveRoomVisit? - fun getRecentVisitRoomUsers(roomId: Long, memberId: Long): List + fun getRecentVisitRoomUsers(roomId: Long, member: Member): List } @Repository @@ -43,19 +44,25 @@ class LiveRoomVisitQueryRepositoryImpl(private val queryFactory: JPAQueryFactory .fetchFirst() } - override fun getRecentVisitRoomUsers(roomId: Long, memberId: Long): List { + override fun getRecentVisitRoomUsers(roomId: Long, member: Member): List { + var where = liveRoomVisit.room.id.eq(roomId) + .and(liveRoomVisit.member.isActive.isTrue) + .and(liveRoomVisit.member.id.ne(member.id)) + .and(liveRoomVisit.member.role.ne(MemberRole.ADMIN)) + .and(liveRoomVisit.member.role.ne(MemberRole.AGENT)) + .and(liveRoomVisit.member.role.ne(MemberRole.BOT)) + + if (member.role == MemberRole.USER) { + where = where + .and(liveRoomVisit.member.role.ne(MemberRole.USER)) + } + return queryFactory - .select(member) + .select(QMember.member) .from(liveRoomVisit) - .innerJoin(liveRoomVisit.member, member) + .innerJoin(liveRoomVisit.member, QMember.member) .innerJoin(liveRoomVisit.room, liveRoom) - .where( - liveRoomVisit.room.id.eq(roomId) - .and(liveRoomVisit.member.isActive.isTrue) - .and(liveRoomVisit.member.id.ne(memberId)) - .and(liveRoomVisit.member.role.ne(MemberRole.ADMIN)) - .and(liveRoomVisit.member.role.ne(MemberRole.AGENT)) - ) + .where(where) .fetch() } } 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 0e89fd0..9beb448 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 @@ -30,11 +30,11 @@ class LiveRoomVisitService( repository.save(roomVisit) } - fun getRecentVisitRoomUsers(memberId: Long): List { - val roomVisit = repository.findFirstByMemberIdOrderByUpdatedAtDesc(memberId) + fun getRecentVisitRoomUsers(member: Member): List { + val roomVisit = repository.findFirstByMemberIdOrderByUpdatedAtDesc(member.id!!) ?: return emptyList() - return repository.getRecentVisitRoomUsers(roomVisit.room!!.id!!, memberId) + return repository.getRecentVisitRoomUsers(roomVisit.room!!.id!!, member) .asSequence() .map { GetRoomDetailUser(it, cloudFrontHost) } .toList()