diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt index f277d4c..514f78a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt @@ -165,7 +165,7 @@ class MemberController(private val service: MemberService) { ) = run { 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") diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt index 765fc74..4d7a14b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -23,7 +23,7 @@ interface MemberRepository : JpaRepository, MemberQueryRepository interface MemberQueryRepository { fun findByPushToken(pushToken: String): List - fun findByNicknameAndOtherCondition(nickname: String, memberId: Long): List + fun findByNicknameAndOtherCondition(nickname: String, member: Member): List fun findCreatorByIdOrNull(memberId: Long): Member? fun getAllRecipientPushTokens(isAuth: Boolean, container: String): List> fun getCreateLiveRoomNotificationRecipientPushTokens( @@ -66,15 +66,19 @@ class MemberQueryRepositoryImpl( .fetch() } - override fun findByNicknameAndOtherCondition(nickname: String, memberId: Long): List { + override fun findByNicknameAndOtherCondition(nickname: String, member: Member): List { + 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)) + + if (member.role == MemberRole.USER) { + where = where.and(QMember.member.role.ne(MemberRole.USER)) + } + return queryFactory - .selectFrom(member) - .where( - member.nickname.containsIgnoreCase(nickname) - .and(member.id.ne(memberId)) - .and(member.role.ne(MemberRole.ADMIN)) - .and(member.role.ne(MemberRole.AGENT)) - ) + .selectFrom(QMember.member) + .where(where) .fetch() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt index 975064f..6ad28bc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -382,14 +382,14 @@ class MemberService( fun isBlocked(blockedMemberId: Long, memberId: Long) = blockMemberRepository.isBlocked(blockedMemberId, memberId) - fun searchMember(nickname: String, memberId: Long): List { + fun searchMember(nickname: String, member: Member): List { if (nickname.length < 2) { throw SodaException("두 글자 이상 입력 하셔야 합니다.") } - return repository.findByNicknameAndOtherCondition(nickname, memberId) + return repository.findByNicknameAndOtherCondition(nickname, member) .asSequence() - .filter { !blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = it.id!!) } + .filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.id!!) } .map { GetRoomDetailUser(it, cloudFrontHost) }