From 87180894838ab0ac89949f6995ef84929b17ca79 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 20 Nov 2023 12:24:15 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EA=B2=80=EC=83=89=20-?= =?UTF-8?q?=20=EA=B6=8C=ED=95=9C=EC=9D=B4=20=EC=9C=A0=EC=A0=80=EC=9D=B8=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=ED=83=80=20=EC=9C=A0=EC=A0=80=EA=B0=80=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=20=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95(=ED=81=AC=EB=A6=AC=EC=97=90?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=EB=A7=8C=20=EA=B2=80=EC=83=89)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/member/MemberController.kt | 2 +- .../sodalive/member/MemberRepository.kt | 22 +++++++++++-------- .../sodalive/member/MemberService.kt | 6 ++--- 3 files changed, 17 insertions(+), 13 deletions(-) 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) } -- 2.40.1 From 5ce4078ba4abe307e25d31e908375b95d6ca4324 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 20 Nov 2023 12:41:08 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EA=B2=80=EC=83=89=20-?= =?UTF-8?q?=20=EC=9C=A0=EC=A0=80=20=EA=B6=8C=ED=95=9C=20=EB=B4=87=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt | 1 + 1 file changed, 1 insertion(+) 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 4d7a14b..c85cefa 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -71,6 +71,7 @@ class MemberQueryRepositoryImpl( .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)) -- 2.40.1 From 7fefc9b0a6595db3886a220c18befe3ce9f61b28 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 20 Nov 2023 14:30:01 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=EC=B5=9C=EA=B7=BC=20=EB=B0=A9=EB=AC=B8?= =?UTF-8?q?=ED=95=9C=20=EB=B0=A9=20=EC=9C=A0=EC=A0=80=EA=B2=80=EC=83=89=20?= =?UTF-8?q?-=20=EC=9C=A0=EC=A0=80=20=EA=B6=8C=ED=95=9C=20=EB=B4=87=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20-=20=EA=B6=8C=ED=95=9C=EC=9D=B4=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=EC=9D=B8=20=EA=B2=BD=EC=9A=B0=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=EC=97=90=EA=B2=8C=20=EC=95=88=EB=B3=B4=EC=9D=B4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/room/LiveRoomController.kt | 2 +- .../room/visit/LiveRoomVisitRepository.kt | 29 ++++++++++++------- .../live/room/visit/LiveRoomVisitService.kt | 6 ++-- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt index 6d8daac..b034601 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomController.kt @@ -240,6 +240,6 @@ class LiveRoomController( ) = run { if (member == null) throw SodaException("로그인 정보를 확인해주세요.") - ApiResponse.ok(visitService.getRecentVisitRoomUsers(member.id!!)) + ApiResponse.ok(visitService.getRecentVisitRoomUsers(member)) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitRepository.kt index bbf9f90..3ab4ce0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitRepository.kt @@ -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, LiveRoom interface LiveRoomVisitQueryRepository { fun findByRoomIdAndMemberId(roomId: Long, memberId: Long): LiveRoomVisit? fun findFirstByMemberIdOrderByUpdatedAtDesc(memberId: Long): LiveRoomVisit? - fun getRecentVisitRoomUsers(roomId: Long, memberId: Long): List + fun getRecentVisitRoomUsers(roomId: Long, member: Member): List } @Repository @@ -43,19 +44,25 @@ class LiveRoomVisitQueryRepositoryImpl(private val queryFactory: JPAQueryFactory .fetchFirst() } - override fun getRecentVisitRoomUsers(roomId: Long, memberId: Long): List { + override fun getRecentVisitRoomUsers(roomId: Long, member: Member): List { + 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() } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitService.kt index 0e89fd0..9beb448 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/visit/LiveRoomVisitService.kt @@ -30,11 +30,11 @@ class LiveRoomVisitService( repository.save(roomVisit) } - fun getRecentVisitRoomUsers(memberId: Long): List { - val roomVisit = repository.findFirstByMemberIdOrderByUpdatedAtDesc(memberId) + fun getRecentVisitRoomUsers(member: Member): List { + 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() -- 2.40.1