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