feat(gift): 선물 캔 결제 처리를 추가한다
This commit is contained in:
@@ -120,6 +120,7 @@ class CanService(
|
||||
|
||||
CanUsage.CHAT_QUOTA_PURCHASE -> "캐릭터 톡 이용권 구매"
|
||||
CanUsage.CHAT_ROOM_RESET -> "캐릭터 톡 초기화"
|
||||
CanUsage.GIFT -> "선물하기"
|
||||
}
|
||||
|
||||
val createdAt = it.createdAt
|
||||
|
||||
@@ -54,7 +54,7 @@ class CanPaymentService(
|
||||
communityPost: CreatorCommunity? = null,
|
||||
auditionApplicant: AuditionApplicant? = null,
|
||||
container: String
|
||||
) {
|
||||
): UseCan {
|
||||
val member = memberRepository.findByIdOrNull(id = memberId)
|
||||
?: throw SodaException(messageKey = "can.payment.invalid_request_retry")
|
||||
val useRewardCan = spendRewardCan(member, needCan, container)
|
||||
@@ -131,6 +131,8 @@ class CanPaymentService(
|
||||
useCan.member = member
|
||||
useCan.chatRoomId = chatRoomId
|
||||
useCan.characterId = characterId
|
||||
} else if (canUsage == CanUsage.GIFT) {
|
||||
useCan.member = member
|
||||
} else {
|
||||
throw SodaException(messageKey = "common.error.invalid_request")
|
||||
}
|
||||
@@ -160,6 +162,18 @@ class CanPaymentService(
|
||||
useCan,
|
||||
paymentGateway = PaymentGateway.APPLE_IAP
|
||||
)
|
||||
|
||||
return useCan
|
||||
}
|
||||
|
||||
@Transactional
|
||||
fun spendGiftCan(memberId: Long, needCan: Int, container: String): Long {
|
||||
return spendCan(
|
||||
memberId = memberId,
|
||||
needCan = needCan,
|
||||
canUsage = CanUsage.GIFT,
|
||||
container = container
|
||||
).id!!
|
||||
}
|
||||
|
||||
private fun setUseCanCalculate(
|
||||
@@ -324,6 +338,24 @@ class CanPaymentService(
|
||||
roomId = roomId,
|
||||
canUsage = CanUsage.LIVE
|
||||
) ?: throw SodaException(messageKey = "can.payment.invalid_reservation")
|
||||
refundUseCan(member, useCan)
|
||||
}
|
||||
|
||||
@Transactional
|
||||
fun refundGiftCan(memberId: Long, useCanId: Long) {
|
||||
val member = memberRepository.findByIdOrNull(memberId)
|
||||
?: throw SodaException(messageKey = "common.error.invalid_request")
|
||||
val useCan = useCanRepository.findByIdOrNull(useCanId)
|
||||
?: throw SodaException(messageKey = "common.error.invalid_request")
|
||||
|
||||
if (useCan.member?.id != member.id || useCan.canUsage != CanUsage.GIFT || useCan.isRefund) {
|
||||
throw SodaException(messageKey = "common.error.invalid_request")
|
||||
}
|
||||
|
||||
refundUseCan(member, useCan)
|
||||
}
|
||||
|
||||
private fun refundUseCan(member: Member, useCan: UseCan) {
|
||||
useCan.isRefund = true
|
||||
|
||||
val useCanCalculates = useCanCalculateRepository.findByUseCanIdAndStatus(useCan.id!!)
|
||||
|
||||
@@ -14,5 +14,6 @@ enum class CanUsage {
|
||||
CHAT_MESSAGE_PURCHASE, // 메시지를 통한 구매(이미지 등 다양한 리소스에 공통 적용)
|
||||
CHARACTER_IMAGE_PURCHASE, // 캐릭터 이미지 단독 구매
|
||||
CHAT_QUOTA_PURCHASE, // 채팅 횟수(쿼터) 충전
|
||||
CHAT_ROOM_RESET // 채팅방 초기화 결제(별도 구분)
|
||||
CHAT_ROOM_RESET, // 채팅방 초기화 결제(별도 구분)
|
||||
GIFT
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user