feat(home): 크리에이터 채널 홈 정책을 보강한다
This commit is contained in:
@@ -36,6 +36,7 @@ import kr.co.vividnext.sodalive.i18n.translation.LanguageTranslationEvent
|
||||
import kr.co.vividnext.sodalive.i18n.translation.LanguageTranslationTargetType
|
||||
import kr.co.vividnext.sodalive.i18n.translation.ResourceTranslationJobScheduler
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.member.MemberRepository
|
||||
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
|
||||
import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy
|
||||
import kr.co.vividnext.sodalive.utils.generateFileName
|
||||
@@ -57,6 +58,8 @@ import java.time.ZoneId
|
||||
import java.time.format.DateTimeFormatter
|
||||
import java.util.Locale
|
||||
|
||||
private const val MAX_PIN_CONTENT_COUNT = 9
|
||||
|
||||
@Service
|
||||
@Transactional(readOnly = true)
|
||||
class AudioContentService(
|
||||
@@ -72,6 +75,7 @@ class AudioContentService(
|
||||
private val commentRepository: AudioContentCommentRepository,
|
||||
private val audioContentLikeRepository: AudioContentLikeRepository,
|
||||
private val pinContentRepository: PinContentRepository,
|
||||
private val memberRepository: MemberRepository,
|
||||
|
||||
private val resourceTranslationJobScheduler: ResourceTranslationJobScheduler,
|
||||
private val contentTranslationRepository: ContentTranslationRepository,
|
||||
@@ -795,7 +799,7 @@ class AudioContentService(
|
||||
|
||||
val pinContentListCount = pinContentRepository.getPinContentList(memberId = member.id!!, active = true).size
|
||||
val isAvailablePin = if (member.id!! == audioContent.member!!.id!!) {
|
||||
pinContentListCount < 3
|
||||
pinContentListCount < MAX_PIN_CONTENT_COUNT
|
||||
} else {
|
||||
false
|
||||
}
|
||||
@@ -1227,7 +1231,9 @@ class AudioContentService(
|
||||
|
||||
@Transactional
|
||||
fun pinToTheTop(contentId: Long, member: Member) {
|
||||
val audioContent = repository.findByIdAndCreatorId(contentId = contentId, creatorId = member.id!!)
|
||||
val creator = memberRepository.findByIdForUpdate(member.id!!)
|
||||
?: throw SodaException(messageKey = "content.error.invalid_content_retry")
|
||||
val audioContent = repository.findByIdAndCreatorId(contentId = contentId, creatorId = creator.id!!)
|
||||
?: throw SodaException(messageKey = "content.error.invalid_content_retry")
|
||||
|
||||
if (audioContent.releaseDate != null && audioContent.releaseDate!! >= LocalDateTime.now()) {
|
||||
@@ -1236,21 +1242,24 @@ class AudioContentService(
|
||||
|
||||
var pinContent = pinContentRepository.findByContentIdAndMemberId(
|
||||
contentId = contentId,
|
||||
memberId = member.id!!
|
||||
memberId = creator.id!!
|
||||
)
|
||||
val activePinContentList = pinContentRepository.getPinContentList(memberId = creator.id!!, active = true)
|
||||
|
||||
if (pinContent != null) {
|
||||
if (!pinContent.isActive && activePinContentList.size >= MAX_PIN_CONTENT_COUNT) {
|
||||
activePinContentList[0].isActive = false
|
||||
}
|
||||
pinContent.isActive = true
|
||||
} else {
|
||||
val pinContentList = pinContentRepository.getPinContentList(memberId = member.id!!)
|
||||
pinContent = if (pinContentList.size >= 3) {
|
||||
pinContentList[0]
|
||||
pinContent = if (activePinContentList.size >= MAX_PIN_CONTENT_COUNT) {
|
||||
activePinContentList[0]
|
||||
} else {
|
||||
PinContent()
|
||||
}
|
||||
|
||||
pinContent.isActive = true
|
||||
pinContent.member = member
|
||||
pinContent.member = creator
|
||||
pinContent.content = audioContent
|
||||
pinContentRepository.save(pinContent)
|
||||
}
|
||||
@@ -1258,9 +1267,11 @@ class AudioContentService(
|
||||
|
||||
@Transactional
|
||||
fun unpinAtTheTop(contentId: Long, member: Member) {
|
||||
val creator = memberRepository.findByIdForUpdate(member.id!!)
|
||||
?: throw SodaException(messageKey = "content.error.invalid_content_retry")
|
||||
val pinContent = pinContentRepository.findByContentIdAndMemberId(
|
||||
contentId = contentId,
|
||||
memberId = member.id!!
|
||||
memberId = creator.id!!
|
||||
) ?: throw SodaException(messageKey = "content.error.invalid_content_retry")
|
||||
|
||||
pinContent.isActive = false
|
||||
|
||||
Reference in New Issue
Block a user