충전이벤트가 적용되지 않는 버그 수정

This commit is contained in:
Klaus 2023-08-27 19:24:58 +09:00
parent 0d56b61b2e
commit 586f4d21d4
2 changed files with 10 additions and 5 deletions

View File

@ -10,6 +10,7 @@ import kr.co.vividnext.sodalive.common.SodaException
import kr.co.vividnext.sodalive.fcm.FcmEvent import kr.co.vividnext.sodalive.fcm.FcmEvent
import kr.co.vividnext.sodalive.fcm.FcmEventType import kr.co.vividnext.sodalive.fcm.FcmEventType
import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.member.MemberRepository
import kr.co.vividnext.sodalive.member.auth.AuthRepository import kr.co.vividnext.sodalive.member.auth.AuthRepository
import org.springframework.context.ApplicationEventPublisher import org.springframework.context.ApplicationEventPublisher
import org.springframework.data.repository.findByIdOrNull import org.springframework.data.repository.findByIdOrNull
@ -22,22 +23,26 @@ import kotlin.math.round
class ChargeEventService( class ChargeEventService(
private val repository: ChargeEventRepository, private val repository: ChargeEventRepository,
private val authRepository: AuthRepository, private val authRepository: AuthRepository,
private val memberRepository: MemberRepository,
private val chargeRepository: ChargeRepository, private val chargeRepository: ChargeRepository,
private val chargeEventRepository: ChargeEventRepository, private val chargeEventRepository: ChargeEventRepository,
private val applicationEventPublisher: ApplicationEventPublisher private val applicationEventPublisher: ApplicationEventPublisher
) { ) {
@Transactional @Transactional
fun applyChargeEvent(chargeId: Long, member: Member) { fun applyChargeEvent(chargeId: Long, memberId: Long) {
val charge = chargeRepository.findByIdOrNull(chargeId) val charge = chargeRepository.findByIdOrNull(chargeId)
?: throw SodaException("이벤트가 적용되지 않았습니다.") ?: throw SodaException("이벤트가 적용되지 않았습니다.\n고객센터에 문의해 주세요.")
val member = memberRepository.findByIdOrNull(memberId)
?: throw SodaException("이벤트가 적용되지 않았습니다.\n고객센터에 문의해 주세요.")
if (member.auth != null) { if (member.auth != null) {
val authDate = authRepository.getOldestCreatedAtByDi(member.auth!!.di) val authDate = authRepository.getOldestCreatedAtByDi(member.auth!!.di)
val memberIds = authRepository.getMemberIdsByDi(member.auth!!.di) val memberIds = authRepository.getMemberIdsByDi(member.auth!!.di)
var chargeCount = 0 var chargeCount = 0
for (memberId in memberIds) { for (id in memberIds) {
chargeCount += chargeRepository.getChargeCountAfterDate(memberId = memberId, authDate) chargeCount += chargeRepository.getChargeCountAfterDate(memberId = id, authDate)
} }
if (chargeCount > 0) { if (chargeCount > 0) {

View File

@ -20,6 +20,6 @@ class ChargeSpringEventListener(
@TransactionalEventListener @TransactionalEventListener
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
fun applyChargeEvent(event: ChargeSpringEvent) { fun applyChargeEvent(event: ChargeSpringEvent) {
chargeEventService.applyChargeEvent(event.chargeId, event.member) chargeEventService.applyChargeEvent(event.chargeId, event.member.id!!)
} }
} }