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()