메시지 API
This commit is contained in:
@@ -114,4 +114,14 @@ class MemberController(private val service: MemberService) {
|
||||
|
||||
ApiResponse.ok(service.memberUnBlock(request = request, memberId = member.id!!))
|
||||
}
|
||||
|
||||
@GetMapping("/search")
|
||||
fun searchMember(
|
||||
@RequestParam nickname: String,
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||
) = run {
|
||||
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||
|
||||
ApiResponse.ok(service.searchMember(nickname = nickname, memberId = member.id!!))
|
||||
}
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ interface MemberRepository : JpaRepository<Member, Long>, MemberQueryRepository
|
||||
|
||||
interface MemberQueryRepository {
|
||||
fun findByPushToken(pushToken: String): List<Member>
|
||||
fun findByNicknameAndOtherCondition(nickname: String, memberId: Long): List<Member>
|
||||
}
|
||||
|
||||
@Repository
|
||||
@@ -23,4 +24,16 @@ class MemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Mem
|
||||
.where(member.pushToken.eq(pushToken))
|
||||
.fetch()
|
||||
}
|
||||
|
||||
override fun findByNicknameAndOtherCondition(nickname: String, memberId: Long): List<Member> {
|
||||
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))
|
||||
)
|
||||
.fetch()
|
||||
}
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.aws.s3.S3Uploader
|
||||
import kr.co.vividnext.sodalive.common.ApiResponse
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.jwt.TokenProvider
|
||||
import kr.co.vividnext.sodalive.live.room.detail.GetRoomDetailUser
|
||||
import kr.co.vividnext.sodalive.member.block.BlockMember
|
||||
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
|
||||
import kr.co.vividnext.sodalive.member.block.MemberBlockRequest
|
||||
@@ -334,4 +335,18 @@ class MemberService(
|
||||
}
|
||||
|
||||
fun isBlocked(blockedMemberId: Long, memberId: Long) = blockMemberRepository.isBlocked(blockedMemberId, memberId)
|
||||
|
||||
fun searchMember(nickname: String, memberId: Long): List<GetRoomDetailUser> {
|
||||
if (nickname.length < 2) {
|
||||
throw SodaException("두 글자 이상 입력 하셔야 합니다.")
|
||||
}
|
||||
|
||||
return repository.findByNicknameAndOtherCondition(nickname, memberId)
|
||||
.asSequence()
|
||||
.filter { blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = it.id!!) }
|
||||
.map {
|
||||
GetRoomDetailUser(it, cloudFrontHost)
|
||||
}
|
||||
.toList()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user