최근 방문한 방 유저검색

- 유저 권한 봇 제거
- 권한이 유저인 경우 유저에게 안보이도록 수정
This commit is contained in:
Klaus 2023-11-20 14:30:01 +09:00
parent 5ce4078ba4
commit 7fefc9b0a6
3 changed files with 22 additions and 15 deletions

View File

@ -240,6 +240,6 @@ class LiveRoomController(
) = run {
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
ApiResponse.ok(visitService.getRecentVisitRoomUsers(member.id!!))
ApiResponse.ok(visitService.getRecentVisitRoomUsers(member))
}
}

View File

@ -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<LiveRoomVisit, Long>, LiveRoom
interface LiveRoomVisitQueryRepository {
fun findByRoomIdAndMemberId(roomId: Long, memberId: Long): LiveRoomVisit?
fun findFirstByMemberIdOrderByUpdatedAtDesc(memberId: Long): LiveRoomVisit?
fun getRecentVisitRoomUsers(roomId: Long, memberId: Long): List<Member>
fun getRecentVisitRoomUsers(roomId: Long, member: Member): List<Member>
}
@Repository
@ -43,19 +44,25 @@ class LiveRoomVisitQueryRepositoryImpl(private val queryFactory: JPAQueryFactory
.fetchFirst()
}
override fun getRecentVisitRoomUsers(roomId: Long, memberId: Long): List<Member> {
override fun getRecentVisitRoomUsers(roomId: Long, member: Member): List<Member> {
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()
}
}

View File

@ -30,11 +30,11 @@ class LiveRoomVisitService(
repository.save(roomVisit)
}
fun getRecentVisitRoomUsers(memberId: Long): List<GetRoomDetailUser> {
val roomVisit = repository.findFirstByMemberIdOrderByUpdatedAtDesc(memberId)
fun getRecentVisitRoomUsers(member: Member): List<GetRoomDetailUser> {
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()