메시지 보내기 유저 검색 #91
| @@ -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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user