parent
5ce4078ba4
commit
7fefc9b0a6
|
@ -240,6 +240,6 @@ class LiveRoomController(
|
|||
) = run {
|
||||
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||
|
||||
ApiResponse.ok(visitService.getRecentVisitRoomUsers(member.id!!))
|
||||
ApiResponse.ok(visitService.getRecentVisitRoomUsers(member))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue