Compare commits
No commits in common. "0f48c71837c062ca5f24235f5117590b198576f5" and "3079998a5d76fb3fe979ea7e033eb8e09e2c916c" have entirely different histories.
0f48c71837
...
3079998a5d
|
@ -291,7 +291,6 @@ class OrderQueryRepositoryImpl(
|
||||||
order.audioContent.id.eq(contentId),
|
order.audioContent.id.eq(contentId),
|
||||||
order.createdAt.after(createdAt)
|
order.createdAt.after(createdAt)
|
||||||
)
|
)
|
||||||
.orderBy(order.id.desc())
|
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,7 @@ import kr.co.vividnext.sodalive.point.MemberPointRepository
|
||||||
import kr.co.vividnext.sodalive.point.PointGrantLog
|
import kr.co.vividnext.sodalive.point.PointGrantLog
|
||||||
import kr.co.vividnext.sodalive.point.PointGrantLogRepository
|
import kr.co.vividnext.sodalive.point.PointGrantLogRepository
|
||||||
import kr.co.vividnext.sodalive.point.PointRewardPolicyRepository
|
import kr.co.vividnext.sodalive.point.PointRewardPolicyRepository
|
||||||
import org.slf4j.LoggerFactory
|
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import org.springframework.transaction.support.TransactionTemplate
|
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@ -22,7 +20,6 @@ class UserActionService(
|
||||||
private val policyRepository: PointRewardPolicyRepository,
|
private val policyRepository: PointRewardPolicyRepository,
|
||||||
private val grantLogRepository: PointGrantLogRepository,
|
private val grantLogRepository: PointGrantLogRepository,
|
||||||
private val memberPointRepository: MemberPointRepository,
|
private val memberPointRepository: MemberPointRepository,
|
||||||
private val transactionTemplate: TransactionTemplate,
|
|
||||||
|
|
||||||
private val fcmService: FcmService
|
private val fcmService: FcmService
|
||||||
) {
|
) {
|
||||||
|
@ -37,13 +34,8 @@ class UserActionService(
|
||||||
) {
|
) {
|
||||||
coroutineScope.launch {
|
coroutineScope.launch {
|
||||||
val now = LocalDateTime.now()
|
val now = LocalDateTime.now()
|
||||||
transactionTemplate.execute {
|
|
||||||
repository.save(UserActionLog(memberId, actionType))
|
repository.save(UserActionLog(memberId, actionType))
|
||||||
repository.flush()
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
transactionTemplate.execute {
|
|
||||||
val policy = policyRepository.findByActionTypeAndIsActiveTrue(actionType, now)
|
val policy = policyRepository.findByActionTypeAndIsActiveTrue(actionType, now)
|
||||||
if (policy != null) {
|
if (policy != null) {
|
||||||
val policyType = policy.policyType
|
val policyType = policy.policyType
|
||||||
|
@ -58,39 +50,27 @@ class UserActionService(
|
||||||
orderRepository.findByMemberIdAndContentId(
|
orderRepository.findByMemberIdAndContentId(
|
||||||
memberId = memberId,
|
memberId = memberId,
|
||||||
contentId = contentId,
|
contentId = contentId,
|
||||||
createdAt = if (policyType == PolicyType.DAILY) {
|
createdAt = if (policyType == PolicyType.DAILY) policyTypeDailyStartDate else policy.startDate
|
||||||
policyTypeDailyStartDate
|
|
||||||
} else {
|
|
||||||
policy.startDate
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
if (actionType == ActionType.ORDER_CONTENT_COMMENT && order == null) return@execute
|
if (actionType == ActionType.ORDER_CONTENT_COMMENT && order == null) return@launch
|
||||||
|
|
||||||
val actionCount = repository.countByMemberIdAndActionTypeAndCreatedAtBetween(
|
val actionCount = repository.countByMemberIdAndActionTypeAndCreatedAtBetween(
|
||||||
memberId = memberId,
|
memberId = memberId,
|
||||||
actionType = actionType,
|
actionType = actionType,
|
||||||
startDate = if (policyType == PolicyType.DAILY) {
|
startDate = if (policyType == PolicyType.DAILY) policyTypeDailyStartDate else policy.startDate,
|
||||||
policyTypeDailyStartDate
|
|
||||||
} else {
|
|
||||||
policy.startDate
|
|
||||||
},
|
|
||||||
endDate = policy.endDate ?: now
|
endDate = policy.endDate ?: now
|
||||||
)
|
)
|
||||||
if (actionCount < policy.threshold) return@execute
|
if (actionCount < policy.threshold) return@launch
|
||||||
|
|
||||||
val grantedCount = grantLogRepository.countByMemberIdAndPolicyIdAndStartDate(
|
val grantedCount = grantLogRepository.countByMemberIdAndPolicyIdAndStartDate(
|
||||||
memberId,
|
memberId,
|
||||||
policy.id!!,
|
policy.id!!,
|
||||||
startDate = if (policyType == PolicyType.DAILY) {
|
startDate = if (policyType == PolicyType.DAILY) policyTypeDailyStartDate else policy.startDate
|
||||||
policyTypeDailyStartDate
|
|
||||||
} else {
|
|
||||||
policy.startDate
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
if (grantedCount >= policy.availableCount) return@execute
|
if (grantedCount >= policy.availableCount) return@launch
|
||||||
|
|
||||||
grantLogRepository.save(
|
grantLogRepository.save(
|
||||||
PointGrantLog(
|
PointGrantLog(
|
||||||
|
@ -131,13 +111,5 @@ class UserActionService(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
|
||||||
logger.warn("포인트 지급 또는 알림 실패: ${e.message}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private val logger = LoggerFactory.getLogger(UserActionService::class.java)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue