feat(home): 팔로잉 탭 최근 소식 정책을 보강한다
This commit is contained in:
@@ -497,12 +497,14 @@ class MemberService(
|
||||
fun creatorFollow(creatorId: Long, isNotify: Boolean, isActive: Boolean, memberId: Long) {
|
||||
if (creatorId == memberId) return
|
||||
|
||||
val creatorFollowing = creatorFollowingRepository.findByCreatorIdAndMemberId(
|
||||
val creatorFollowing = creatorFollowingRepository.findByCreatorIdAndMemberIdForUpdate(
|
||||
creatorId = creatorId,
|
||||
memberId = memberId
|
||||
)
|
||||
|
||||
if (creatorFollowing == null) {
|
||||
if (!isActive) return
|
||||
|
||||
val creator = repository.findByIdOrNull(creatorId)
|
||||
?: throw SodaException(messageKey = "member.validation.creator_not_found")
|
||||
val member = repository.findByIdOrNull(memberId)
|
||||
@@ -515,12 +517,15 @@ class MemberService(
|
||||
} else {
|
||||
creatorFollowing.isNotify = isNotify && isActive
|
||||
creatorFollowing.isActive = isActive
|
||||
if (!isActive) {
|
||||
homeFollowingNewsInboxPort.deactivateByMemberIdAndCreatorId(memberId = memberId, creatorId = creatorId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
fun creatorUnFollow(creatorId: Long, memberId: Long) {
|
||||
val creatorFollowing = creatorFollowingRepository.findByCreatorIdAndMemberId(
|
||||
val creatorFollowing = creatorFollowingRepository.findByCreatorIdAndMemberIdForUpdate(
|
||||
creatorId = creatorId,
|
||||
memberId = memberId
|
||||
)
|
||||
|
||||
+13
@@ -4,12 +4,14 @@ import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.member.following.QCreatorFollowing.creatorFollowing
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
import org.springframework.stereotype.Repository
|
||||
import javax.persistence.LockModeType
|
||||
|
||||
@Repository
|
||||
interface CreatorFollowingRepository : JpaRepository<CreatorFollowing, Long>, CreatorFollowingQueryRepository
|
||||
|
||||
interface CreatorFollowingQueryRepository {
|
||||
fun findByCreatorIdAndMemberId(creatorId: Long, memberId: Long): CreatorFollowing?
|
||||
fun findByCreatorIdAndMemberIdForUpdate(creatorId: Long, memberId: Long): CreatorFollowing?
|
||||
}
|
||||
|
||||
@Repository
|
||||
@@ -25,4 +27,15 @@ class CreatorFollowingQueryRepositoryImpl(
|
||||
)
|
||||
.fetchFirst()
|
||||
}
|
||||
|
||||
override fun findByCreatorIdAndMemberIdForUpdate(creatorId: Long, memberId: Long): CreatorFollowing? {
|
||||
return queryFactory
|
||||
.selectFrom(creatorFollowing)
|
||||
.where(
|
||||
creatorFollowing.creator.id.eq(creatorId)
|
||||
.and(creatorFollowing.member.id.eq(memberId))
|
||||
)
|
||||
.setLockMode(LockModeType.PESSIMISTIC_WRITE)
|
||||
.fetchFirst()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user