Merge pull request '메시지 보내기 유저 검색' (#91) from test into main
Reviewed-on: #91
This commit is contained in:
commit
9e2c1474db
|
@ -240,6 +240,6 @@ class LiveRoomController(
|
||||||
) = run {
|
) = run {
|
||||||
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
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.live.room.visit.QLiveRoomVisit.liveRoomVisit
|
||||||
import kr.co.vividnext.sodalive.member.Member
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
import kr.co.vividnext.sodalive.member.MemberRole
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
|
import kr.co.vividnext.sodalive.member.QMember
|
||||||
import kr.co.vividnext.sodalive.member.QMember.member
|
import kr.co.vividnext.sodalive.member.QMember.member
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
import org.springframework.stereotype.Repository
|
import org.springframework.stereotype.Repository
|
||||||
|
@ -15,7 +16,7 @@ interface LiveRoomVisitRepository : JpaRepository<LiveRoomVisit, Long>, LiveRoom
|
||||||
interface LiveRoomVisitQueryRepository {
|
interface LiveRoomVisitQueryRepository {
|
||||||
fun findByRoomIdAndMemberId(roomId: Long, memberId: Long): LiveRoomVisit?
|
fun findByRoomIdAndMemberId(roomId: Long, memberId: Long): LiveRoomVisit?
|
||||||
fun findFirstByMemberIdOrderByUpdatedAtDesc(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
|
@Repository
|
||||||
|
@ -43,19 +44,25 @@ class LiveRoomVisitQueryRepositoryImpl(private val queryFactory: JPAQueryFactory
|
||||||
.fetchFirst()
|
.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
|
return queryFactory
|
||||||
.select(member)
|
.select(QMember.member)
|
||||||
.from(liveRoomVisit)
|
.from(liveRoomVisit)
|
||||||
.innerJoin(liveRoomVisit.member, member)
|
.innerJoin(liveRoomVisit.member, QMember.member)
|
||||||
.innerJoin(liveRoomVisit.room, liveRoom)
|
.innerJoin(liveRoomVisit.room, liveRoom)
|
||||||
.where(
|
.where(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))
|
|
||||||
)
|
|
||||||
.fetch()
|
.fetch()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,11 +30,11 @@ class LiveRoomVisitService(
|
||||||
repository.save(roomVisit)
|
repository.save(roomVisit)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRecentVisitRoomUsers(memberId: Long): List<GetRoomDetailUser> {
|
fun getRecentVisitRoomUsers(member: Member): List<GetRoomDetailUser> {
|
||||||
val roomVisit = repository.findFirstByMemberIdOrderByUpdatedAtDesc(memberId)
|
val roomVisit = repository.findFirstByMemberIdOrderByUpdatedAtDesc(member.id!!)
|
||||||
?: return emptyList()
|
?: return emptyList()
|
||||||
|
|
||||||
return repository.getRecentVisitRoomUsers(roomVisit.room!!.id!!, memberId)
|
return repository.getRecentVisitRoomUsers(roomVisit.room!!.id!!, member)
|
||||||
.asSequence()
|
.asSequence()
|
||||||
.map { GetRoomDetailUser(it, cloudFrontHost) }
|
.map { GetRoomDetailUser(it, cloudFrontHost) }
|
||||||
.toList()
|
.toList()
|
||||||
|
|
|
@ -165,7 +165,7 @@ class MemberController(private val service: MemberService) {
|
||||||
) = run {
|
) = run {
|
||||||
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
ApiResponse.ok(service.searchMember(nickname = nickname, memberId = member.id!!))
|
ApiResponse.ok(service.searchMember(nickname = nickname, member = member))
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/sign_out")
|
@PostMapping("/sign_out")
|
||||||
|
|
|
@ -23,7 +23,7 @@ interface MemberRepository : JpaRepository<Member, Long>, MemberQueryRepository
|
||||||
|
|
||||||
interface MemberQueryRepository {
|
interface MemberQueryRepository {
|
||||||
fun findByPushToken(pushToken: String): List<Member>
|
fun findByPushToken(pushToken: String): List<Member>
|
||||||
fun findByNicknameAndOtherCondition(nickname: String, memberId: Long): List<Member>
|
fun findByNicknameAndOtherCondition(nickname: String, member: Member): List<Member>
|
||||||
fun findCreatorByIdOrNull(memberId: Long): Member?
|
fun findCreatorByIdOrNull(memberId: Long): Member?
|
||||||
fun getAllRecipientPushTokens(isAuth: Boolean, container: String): List<List<String>>
|
fun getAllRecipientPushTokens(isAuth: Boolean, container: String): List<List<String>>
|
||||||
fun getCreateLiveRoomNotificationRecipientPushTokens(
|
fun getCreateLiveRoomNotificationRecipientPushTokens(
|
||||||
|
@ -66,15 +66,20 @@ class MemberQueryRepositoryImpl(
|
||||||
.fetch()
|
.fetch()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun findByNicknameAndOtherCondition(nickname: String, memberId: Long): List<Member> {
|
override fun findByNicknameAndOtherCondition(nickname: String, member: Member): List<Member> {
|
||||||
|
var where = QMember.member.nickname.containsIgnoreCase(nickname)
|
||||||
|
.and(QMember.member.id.ne(member.id))
|
||||||
|
.and(QMember.member.role.ne(MemberRole.ADMIN))
|
||||||
|
.and(QMember.member.role.ne(MemberRole.AGENT))
|
||||||
|
.and(QMember.member.role.ne(MemberRole.BOT))
|
||||||
|
|
||||||
|
if (member.role == MemberRole.USER) {
|
||||||
|
where = where.and(QMember.member.role.ne(MemberRole.USER))
|
||||||
|
}
|
||||||
|
|
||||||
return queryFactory
|
return queryFactory
|
||||||
.selectFrom(member)
|
.selectFrom(QMember.member)
|
||||||
.where(
|
.where(where)
|
||||||
member.nickname.containsIgnoreCase(nickname)
|
|
||||||
.and(member.id.ne(memberId))
|
|
||||||
.and(member.role.ne(MemberRole.ADMIN))
|
|
||||||
.and(member.role.ne(MemberRole.AGENT))
|
|
||||||
)
|
|
||||||
.fetch()
|
.fetch()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -382,14 +382,14 @@ class MemberService(
|
||||||
|
|
||||||
fun isBlocked(blockedMemberId: Long, memberId: Long) = blockMemberRepository.isBlocked(blockedMemberId, memberId)
|
fun isBlocked(blockedMemberId: Long, memberId: Long) = blockMemberRepository.isBlocked(blockedMemberId, memberId)
|
||||||
|
|
||||||
fun searchMember(nickname: String, memberId: Long): List<GetRoomDetailUser> {
|
fun searchMember(nickname: String, member: Member): List<GetRoomDetailUser> {
|
||||||
if (nickname.length < 2) {
|
if (nickname.length < 2) {
|
||||||
throw SodaException("두 글자 이상 입력 하셔야 합니다.")
|
throw SodaException("두 글자 이상 입력 하셔야 합니다.")
|
||||||
}
|
}
|
||||||
|
|
||||||
return repository.findByNicknameAndOtherCondition(nickname, memberId)
|
return repository.findByNicknameAndOtherCondition(nickname, member)
|
||||||
.asSequence()
|
.asSequence()
|
||||||
.filter { !blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = it.id!!) }
|
.filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.id!!) }
|
||||||
.map {
|
.map {
|
||||||
GetRoomDetailUser(it, cloudFrontHost)
|
GetRoomDetailUser(it, cloudFrontHost)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue