feat: 구매한 콘텐츠 댓글 이벤트 추가

This commit is contained in:
Klaus 2025-05-17 18:07:02 +09:00
parent 6fc372c898
commit 1bca1b27ed
3 changed files with 35 additions and 2 deletions

View File

@ -46,6 +46,13 @@ class AudioContentCommentController(
actionType = ActionType.CONTENT_COMMENT,
pushTokenList = pushTokenList
)
userActionService.recordAction(
memberId = member.id!!,
actionType = ActionType.ORDER_CONTENT_COMMENT,
contentId = request.contentId,
pushTokenList = pushTokenList
)
} catch (_: Exception) {
}

View File

@ -44,6 +44,7 @@ interface OrderQueryRepository {
fun findOrderedContent(contentIdList: List<Long>, memberId: Long): List<Long>
fun findEndDateByContentId(contentIdList: List<Long>, memberId: Long): List<ContentIdAndEndDateData>
fun findBuyerListByContentId(contentId: Long): List<ContentBuyer>
fun findByMemberIdAndContentId(memberId: Long, contentId: Long, createdAt: LocalDateTime): Order?
}
@Repository
@ -280,4 +281,16 @@ class OrderQueryRepositoryImpl(
)
.fetch()
}
override fun findByMemberIdAndContentId(memberId: Long, contentId: Long, createdAt: LocalDateTime): Order? {
return queryFactory
.selectFrom(order)
.where(
order.isActive.isTrue,
order.member.id.eq(memberId),
order.audioContent.id.eq(contentId),
order.createdAt.after(createdAt)
)
.fetchFirst()
}
}

View File

@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.useraction
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kr.co.vividnext.sodalive.content.order.OrderRepository
import kr.co.vividnext.sodalive.fcm.FcmService
import kr.co.vividnext.sodalive.point.MemberPoint
import kr.co.vividnext.sodalive.point.MemberPointRepository
@ -15,6 +16,7 @@ import java.time.LocalDateTime
@Service
class UserActionService(
private val repository: UserActionLogRepository,
private val orderRepository: OrderRepository,
private val policyRepository: PointRewardPolicyRepository,
private val grantLogRepository: PointGrantLogRepository,
private val memberPointRepository: MemberPointRepository,
@ -27,7 +29,7 @@ class UserActionService(
fun recordAction(
memberId: Long,
actionType: ActionType,
orderId: Long? = null,
contentId: Long? = null,
pushTokenList: List<String> = emptyList()
) {
coroutineScope.launch {
@ -44,6 +46,17 @@ class UserActionService(
todayAt15
}
val order = if (contentId != null) {
orderRepository.findByMemberIdAndContentId(
memberId = memberId,
contentId = contentId,
createdAt = if (policyType == PolicyType.DAILY) policyTypeDailyStartDate else policy.startDate
)
} else {
null
}
if (actionType == ActionType.ORDER_CONTENT_COMMENT && order == null) return@launch
val actionCount = repository.countByMemberIdAndActionTypeAndCreatedAtBetween(
memberId = memberId,
actionType = actionType,
@ -65,7 +78,7 @@ class UserActionService(
point = policy.pointAmount,
actionType = actionType,
policyId = policy.id!!,
orderId = orderId
orderId = order?.id
)
)