From b0c7819b5a9ad19f36961bf11cc03a43c3e1c46f Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 3 Sep 2024 17:52:34 +0900 Subject: [PATCH 1/7] =?UTF-8?q?=EC=B0=A8=EB=8B=A8=ED=95=9C=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=A1=B0=ED=9A=8C=20API?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/member/MemberController.kt | 9 +++++++++ .../kr/co/vividnext/sodalive/member/MemberService.kt | 4 ++++ .../sodalive/member/block/BlockMemberRepository.kt | 6 +++--- 3 files changed, 16 insertions(+), 3 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 e65e2e9..a003f6b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt @@ -153,6 +153,15 @@ class MemberController(private val service: MemberService) { ApiResponse.ok(service.creatorUnFollow(creatorId = request.creatorId, memberId = member.id!!)) } + @GetMapping("/block") + fun getBlockedMemberList( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getBlockedMemberList(member.id!!)) + } + @PostMapping("/block") fun memberBlock( @RequestBody request: MemberBlockRequest, 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 de05f33..1c18448 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -357,6 +357,10 @@ class MemberService( } } + fun getBlockedMemberList(memberId: Long): List { + return blockMemberRepository.getBlockedMemberList(memberId = memberId) + } + @Transactional fun memberBlock(request: MemberBlockRequest, memberId: Long) { var blockMember = blockMemberRepository.getBlockAccount( diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt index f81572d..0a4c0d4 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt @@ -11,7 +11,7 @@ interface BlockMemberRepository : JpaRepository, BlockMemberQ interface BlockMemberQueryRepository { fun getBlockAccount(blockedMemberId: Long, memberId: Long): BlockMember? fun isBlocked(blockedMemberId: Long, memberId: Long): Boolean - fun getBlockedMemberList(creatorId: Long): List + fun getBlockedMemberList(memberId: Long): List } @Repository @@ -41,12 +41,12 @@ class BlockMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) return blockedAccount != null } - override fun getBlockedMemberList(creatorId: Long): List { + override fun getBlockedMemberList(memberId: Long): List { return queryFactory .select(blockMember.blockedMemberId) .from(blockMember) .where( - blockMember.memberId.eq(creatorId) + blockMember.memberId.eq(memberId) .and(blockMember.isActive.isTrue) ) .fetch() From ebd82ee2c7d735983535275a2400cb947c5f97fd Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 3 Sep 2024 22:04:14 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=EC=B0=A8=EB=8B=A8=EC=9C=A0=EC=A0=80(BlockM?= =?UTF-8?q?ember)=20=EC=97=94=ED=8B=B0=ED=8B=B0=20-=20Member=EC=99=80?= =?UTF-8?q?=EC=9D=98=20=EA=B4=80=EA=B3=84=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/member/MemberRepository.kt | 10 +++++----- .../vividnext/sodalive/member/MemberService.kt | 15 ++++++++++----- .../sodalive/member/block/BlockMember.kt | 15 ++++++++++++--- .../member/block/BlockMemberRepository.kt | 16 ++++++++-------- 4 files changed, 35 insertions(+), 21 deletions(-) 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 364f2e4..177b2d2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberRepository.kt @@ -135,7 +135,7 @@ class MemberQueryRepositoryImpl( .and(creatorFollowing.member.email.notIn("admin@sodalive.net")) .and( creatorFollowing.member.id.notIn( - blockMemberRepository.getBlockedMemberList(creatorId) + blockMemberRepository.getBlockedMemberIdList(creatorId) ) ) .and(creatorFollowing.member.pushToken.isNotNull) @@ -179,7 +179,7 @@ class MemberQueryRepositoryImpl( .and(creatorFollowing.member.email.notIn("admin@sodalive.net")) .and( creatorFollowing.member.id.notIn( - blockMemberRepository.getBlockedMemberList(creatorId) + blockMemberRepository.getBlockedMemberIdList(creatorId) ) ) .and(creatorFollowing.member.pushToken.isNotNull) @@ -211,7 +211,7 @@ class MemberQueryRepositoryImpl( .and(liveReservation.room.id.eq(roomId)) .and( liveReservation.member.id.notIn( - blockMemberRepository.getBlockedMemberList(creatorId) + blockMemberRepository.getBlockedMemberIdList(creatorId) ) ) @@ -248,7 +248,7 @@ class MemberQueryRepositoryImpl( .and(creatorFollowing.member.notification.uploadContent.isTrue) .and( creatorFollowing.member.id.notIn( - blockMemberRepository.getBlockedMemberList(creatorId) + blockMemberRepository.getBlockedMemberIdList(creatorId) ) ) .and(creatorFollowing.member.pushToken.isNotNull) @@ -361,7 +361,7 @@ class MemberQueryRepositoryImpl( .and(creatorFollowing.member.email.notIn("admin@sodalive.net")) .and( creatorFollowing.member.id.notIn( - blockMemberRepository.getBlockedMemberList(creatorId) + blockMemberRepository.getBlockedMemberIdList(creatorId) ) ) .and(creatorFollowing.member.pushToken.isNotNull) 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 1c18448..23d7b56 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -358,7 +358,7 @@ class MemberService( } fun getBlockedMemberList(memberId: Long): List { - return blockMemberRepository.getBlockedMemberList(memberId = memberId) + return blockMemberRepository.getBlockedMemberIdList(memberId = memberId) } @Transactional @@ -369,10 +369,15 @@ class MemberService( ) if (blockMember == null) { - blockMember = BlockMember( - blockedMemberId = request.blockMemberId, - memberId = memberId - ) + val blockedMember = repository.findByIdOrNull(id = request.blockMemberId) + ?: throw SodaException("잘못된 요청입니다.") + + val member = repository.findByIdOrNull(id = memberId) + ?: throw SodaException("잘못된 요청입니다.") + + blockMember = BlockMember() + blockMember.member = member + blockMember.blockedMember = blockedMember blockMemberRepository.save(blockMember) } else { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMember.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMember.kt index 57811cd..a19cd35 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMember.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMember.kt @@ -1,12 +1,21 @@ package kr.co.vividnext.sodalive.member.block import kr.co.vividnext.sodalive.common.BaseEntity +import kr.co.vividnext.sodalive.member.Member import javax.persistence.Entity +import javax.persistence.FetchType +import javax.persistence.JoinColumn +import javax.persistence.ManyToOne @Entity data class BlockMember( - val blockedMemberId: Long, - val memberId: Long -) : BaseEntity() { var isActive: Boolean = true +) : BaseEntity() { + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "blocked_member_id", nullable = false) + var blockedMember: Member? = null + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "member_id", nullable = false) + var member: Member? = null } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt index 0a4c0d4..b463f0d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt @@ -11,7 +11,7 @@ interface BlockMemberRepository : JpaRepository, BlockMemberQ interface BlockMemberQueryRepository { fun getBlockAccount(blockedMemberId: Long, memberId: Long): BlockMember? fun isBlocked(blockedMemberId: Long, memberId: Long): Boolean - fun getBlockedMemberList(memberId: Long): List + fun getBlockedMemberIdList(memberId: Long): List } @Repository @@ -20,8 +20,8 @@ class BlockMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) return queryFactory .selectFrom(blockMember) .where( - blockMember.blockedMemberId.eq(blockedMemberId) - .and(blockMember.memberId.eq(memberId)) + blockMember.blockedMember.id.eq(blockedMemberId) + .and(blockMember.member.id.eq(memberId)) ) .orderBy(blockMember.id.desc()) .fetchFirst() @@ -32,8 +32,8 @@ class BlockMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) .select(blockMember.id) .from(blockMember) .where( - blockMember.memberId.eq(memberId) - .and(blockMember.blockedMemberId.eq(blockedMemberId)) + blockMember.member.id.eq(memberId) + .and(blockMember.blockedMember.id.eq(blockedMemberId)) .and(blockMember.isActive.isTrue) ) .fetchOne() @@ -41,12 +41,12 @@ class BlockMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) return blockedAccount != null } - override fun getBlockedMemberList(memberId: Long): List { + override fun getBlockedMemberIdList(memberId: Long): List { return queryFactory - .select(blockMember.blockedMemberId) + .select(blockMember.blockedMember.id) .from(blockMember) .where( - blockMember.memberId.eq(memberId) + blockMember.member.id.eq(memberId) .and(blockMember.isActive.isTrue) ) .fetch() From e8d16217b0e8578e6aa4e145cbe4ccf6c7b89f58 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 3 Sep 2024 22:19:07 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=EC=B0=A8=EB=8B=A8=ED=95=9C=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=A1=B0=ED=9A=8C=20API?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/member/MemberController.kt | 12 ++++- .../sodalive/member/MemberService.kt | 8 +++- .../member/block/BlockMemberRepository.kt | 44 ++++++++++++++++++- .../block/GetBlockedMemberListResponse.kt | 15 +++++++ 4 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/member/block/GetBlockedMemberListResponse.kt 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 a003f6b..9c6087a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt @@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.member.block.MemberBlockRequest import kr.co.vividnext.sodalive.member.following.CreatorFollowRequest import kr.co.vividnext.sodalive.member.login.LoginRequest import kr.co.vividnext.sodalive.member.notification.UpdateNotificationSettingRequest +import org.springframework.data.domain.Pageable import org.springframework.security.core.annotation.AuthenticationPrincipal import org.springframework.security.core.userdetails.User import org.springframework.web.bind.annotation.GetMapping @@ -155,11 +156,18 @@ class MemberController(private val service: MemberService) { @GetMapping("/block") fun getBlockedMemberList( - @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, + pageable: Pageable ) = run { if (member == null) throw SodaException("로그인 정보를 확인해주세요.") - ApiResponse.ok(service.getBlockedMemberList(member.id!!)) + ApiResponse.ok( + service.getBlockedMemberList( + member.id!!, + offset = pageable.offset, + limit = pageable.pageSize.toLong() + ) + ) } @PostMapping("/block") 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 23d7b56..4d7b59a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -14,6 +14,7 @@ import kr.co.vividnext.sodalive.live.reservation.LiveReservationRepository 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.GetBlockedMemberListResponse import kr.co.vividnext.sodalive.member.block.MemberBlockRequest import kr.co.vividnext.sodalive.member.following.CreatorFollowing import kr.co.vividnext.sodalive.member.following.CreatorFollowingRepository @@ -357,8 +358,11 @@ class MemberService( } } - fun getBlockedMemberList(memberId: Long): List { - return blockMemberRepository.getBlockedMemberIdList(memberId = memberId) + fun getBlockedMemberList(memberId: Long, offset: Long, limit: Long): GetBlockedMemberListResponse { + val totalCount = blockMemberRepository.getBlockedMemberTotalCount(memberId) + val items = blockMemberRepository.getBlockedMemberList(offset = offset, limit = limit, memberId = memberId) + + return GetBlockedMemberListResponse(totalCount = totalCount, items = items) } @Transactional diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt index b463f0d..fa3803e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt @@ -1,7 +1,9 @@ package kr.co.vividnext.sodalive.member.block import com.querydsl.jpa.impl.JPAQueryFactory +import kr.co.vividnext.sodalive.member.QMember.member import kr.co.vividnext.sodalive.member.block.QBlockMember.blockMember +import org.springframework.beans.factory.annotation.Value import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @@ -12,10 +14,17 @@ interface BlockMemberQueryRepository { fun getBlockAccount(blockedMemberId: Long, memberId: Long): BlockMember? fun isBlocked(blockedMemberId: Long, memberId: Long): Boolean fun getBlockedMemberIdList(memberId: Long): List + fun getBlockedMemberList(offset: Long, limit: Long, memberId: Long): List + fun getBlockedMemberTotalCount(memberId: Long): Int } @Repository -class BlockMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : BlockMemberQueryRepository { +class BlockMemberQueryRepositoryImpl( + private val queryFactory: JPAQueryFactory, + + @Value("\${cloud.aws.cloud-front.host}") + private val cloudFrontHost: String +) : BlockMemberQueryRepository { override fun getBlockAccount(blockedMemberId: Long, memberId: Long): BlockMember? { return queryFactory .selectFrom(blockMember) @@ -51,4 +60,37 @@ class BlockMemberQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) ) .fetch() } + + override fun getBlockedMemberList(offset: Long, limit: Long, memberId: Long): List { + return queryFactory + .select( + QGetBlockedMemberListItem( + blockMember.blockedMember.id, + blockMember.blockedMember.nickname, + blockMember.blockedMember.profileImage.prepend("").prepend(cloudFrontHost), + blockMember.blockedMember.isActive + ) + ) + .from(blockMember) + .innerJoin(blockMember.blockedMember, member) + .where( + blockMember.member.id.eq(memberId) + .and(blockMember.isActive.isTrue) + ) + .offset(offset) + .limit(limit) + .fetch() + } + + override fun getBlockedMemberTotalCount(memberId: Long): Int { + return queryFactory + .select(blockMember.id) + .from(blockMember) + .where( + blockMember.member.id.eq(memberId) + .and(blockMember.isActive.isTrue) + ) + .fetch() + .size + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/GetBlockedMemberListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/GetBlockedMemberListResponse.kt new file mode 100644 index 0000000..057fd13 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/GetBlockedMemberListResponse.kt @@ -0,0 +1,15 @@ +package kr.co.vividnext.sodalive.member.block + +import com.querydsl.core.annotations.QueryProjection + +data class GetBlockedMemberListResponse( + val totalCount: Int, + val items: List +) + +data class GetBlockedMemberListItem @QueryProjection constructor( + val memberId: Long, + val nickname: String, + val profileImageUrl: String, + val isBlocked: Boolean +) From a7b58089dd40a4438d170bd45645f828c80cf661 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 4 Sep 2024 12:04:00 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=EC=B0=A8=EB=8B=A8=ED=95=9C=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=A1=B0=ED=9A=8C=20API?= =?UTF-8?q?=20-=20=ED=94=84=EB=A1=9C=ED=95=84=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20Url=EC=97=90=20/=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/member/block/BlockMemberRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt index fa3803e..47d51c9 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt @@ -67,7 +67,7 @@ class BlockMemberQueryRepositoryImpl( QGetBlockedMemberListItem( blockMember.blockedMember.id, blockMember.blockedMember.nickname, - blockMember.blockedMember.profileImage.prepend("").prepend(cloudFrontHost), + blockMember.blockedMember.profileImage.prepend("/").prepend(cloudFrontHost), blockMember.blockedMember.isActive ) ) From b45c762bbed4bb4960a1a168e3538d7ae78d2f1d Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 4 Sep 2024 12:06:43 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=EC=B0=A8=EB=8B=A8=ED=95=9C=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=A1=B0=ED=9A=8C=20API?= =?UTF-8?q?=20-=20=EC=B0=A8=EB=8B=A8=EC=97=AC=EB=B6=80=EA=B0=80=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=ED=83=88=ED=87=B4=20=EC=97=AC=EB=B6=80?= =?UTF-8?q?=EB=A1=9C=20=ED=91=9C=EC=8B=9C=EB=90=98=EB=8A=94=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vividnext/sodalive/member/block/BlockMemberRepository.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt index 47d51c9..155c454 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/block/BlockMemberRepository.kt @@ -68,7 +68,7 @@ class BlockMemberQueryRepositoryImpl( blockMember.blockedMember.id, blockMember.blockedMember.nickname, blockMember.blockedMember.profileImage.prepend("/").prepend(cloudFrontHost), - blockMember.blockedMember.isActive + blockMember.isActive ) ) .from(blockMember) @@ -76,6 +76,7 @@ class BlockMemberQueryRepositoryImpl( .where( blockMember.member.id.eq(memberId) .and(blockMember.isActive.isTrue) + .and(blockMember.blockedMember.isActive.isTrue) ) .offset(offset) .limit(limit) @@ -89,6 +90,7 @@ class BlockMemberQueryRepositoryImpl( .where( blockMember.member.id.eq(memberId) .and(blockMember.isActive.isTrue) + .and(blockMember.blockedMember.isActive.isTrue) ) .fetch() .size From 2bd1c994091ea45500080cef46832918b9cd945b Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 4 Sep 2024 12:08:34 +0900 Subject: [PATCH 6/7] =?UTF-8?q?=ED=8C=94=EB=A1=9C=EC=9E=89=20=EC=B1=84?= =?UTF-8?q?=EB=84=90=EB=A6=AC=EC=8A=A4=ED=8A=B8=20-=20=ED=83=88=ED=87=B4?= =?UTF-8?q?=ED=95=9C=20=EC=9C=A0=EC=A0=80=EB=8A=94=20=EB=82=98=EC=98=A4?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=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/recommend/LiveRecommendRepository.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt index 6cb0357..2032a5b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/recommend/LiveRecommendRepository.kt @@ -195,6 +195,7 @@ class LiveRecommendRepository( .and(member.id.notIn(withOutCreatorList)) .and(creatorFollowing.isActive.isTrue) .and(creatorFollowing.member.id.eq(memberId)) + .and(creatorFollowing.member.isActive.isTrue) ) .orderBy(Expressions.numberTemplate(Double::class.java, "function('rand')").asc()) .limit(limit) @@ -209,6 +210,7 @@ class LiveRecommendRepository( .and(member.isActive.isTrue) .and(creatorFollowing.isActive.isTrue) .and(creatorFollowing.member.id.eq(memberId)) + .and(creatorFollowing.member.isActive.isTrue) return queryFactory .select(creatorFollowing.creator.id) @@ -233,6 +235,7 @@ class LiveRecommendRepository( .and(member.isActive.isTrue) .and(creatorFollowing.isActive.isTrue) .and(creatorFollowing.member.id.eq(memberId)) + .and(creatorFollowing.member.isActive.isTrue) return queryFactory .select( From dd229f15acf91a3b730316469ce6dff81b5fb5eb Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 4 Sep 2024 21:37:40 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=EC=B0=A8=EB=8B=A8=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=EB=94=94=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/vividnext/sodalive/member/MemberController.kt | 10 ++++++++++ .../kr/co/vividnext/sodalive/member/MemberService.kt | 4 ++++ 2 files changed, 14 insertions(+) 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 9c6087a..91da556 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberController.kt @@ -154,6 +154,16 @@ class MemberController(private val service: MemberService) { ApiResponse.ok(service.creatorUnFollow(creatorId = request.creatorId, memberId = member.id!!)) } + @GetMapping("/block/id") + fun getBlockedMemberIdList( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, + pageable: Pageable + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getBlockedMemberIdList(member.id!!)) + } + @GetMapping("/block") fun getBlockedMemberList( @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, 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 4d7b59a..e658ba2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt @@ -358,6 +358,10 @@ class MemberService( } } + fun getBlockedMemberIdList(memberId: Long): List { + return blockMemberRepository.getBlockedMemberIdList(memberId) + } + fun getBlockedMemberList(memberId: Long, offset: Long, limit: Long): GetBlockedMemberListResponse { val totalCount = blockMemberRepository.getBlockedMemberTotalCount(memberId) val items = blockMemberRepository.getBlockedMemberList(offset = offset, limit = limit, memberId = memberId)