관리자 라이브 정산
- 크리에이터 정산 추가데이터가 있으면 해당 데이터에 입력된 정산비율로 계산되도록 수정
This commit is contained in:
parent
7f5e138cf7
commit
9396f70f85
|
@ -4,6 +4,7 @@ import com.querydsl.core.types.dsl.DateTimePath
|
|||
import com.querydsl.core.types.dsl.Expressions
|
||||
import com.querydsl.core.types.dsl.StringTemplate
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.admin.calculate.ratio.QCreatorSettlementRatio.creatorSettlementRatio
|
||||
import kr.co.vividnext.sodalive.can.use.CanUsage
|
||||
import kr.co.vividnext.sodalive.can.use.QUseCan.useCan
|
||||
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
|
||||
|
@ -29,12 +30,15 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) {
|
|||
liveRoom.price,
|
||||
useCan.canUsage,
|
||||
useCan.id.count(),
|
||||
useCan.can.add(useCan.rewardCan).sum()
|
||||
useCan.can.add(useCan.rewardCan).sum(),
|
||||
creatorSettlementRatio.liveSettlementRatio
|
||||
)
|
||||
)
|
||||
.from(useCan)
|
||||
.innerJoin(useCan.room, liveRoom)
|
||||
.innerJoin(liveRoom.member, member)
|
||||
.leftJoin(creatorSettlementRatio)
|
||||
.on(member.id.eq(creatorSettlementRatio.member.id))
|
||||
.where(
|
||||
useCan.isRefund.isFalse
|
||||
.and(liveRoom.beginDateTime.goe(startDate))
|
||||
|
|
|
@ -16,7 +16,9 @@ data class GetCalculateLiveQueryData @QueryProjection constructor(
|
|||
// 참여인원
|
||||
val memberCount: Long,
|
||||
// 합계
|
||||
val totalAmount: Int
|
||||
val totalAmount: Int,
|
||||
// 정산비율
|
||||
val settlementRatio: Int?
|
||||
) {
|
||||
fun toGetCalculateLiveResponse(): GetCalculateLiveResponse {
|
||||
val canUsageStr = when (canUsage) {
|
||||
|
@ -46,7 +48,11 @@ data class GetCalculateLiveQueryData @QueryProjection constructor(
|
|||
val paymentFee = totalKrw * 0.066f
|
||||
|
||||
// 정산금액 = (원화 - 결제수수료) 의 70%
|
||||
val settlementAmount = (totalKrw.toFloat() - paymentFee) * 0.7
|
||||
val settlementAmount = if (settlementRatio != null) {
|
||||
(totalKrw.toFloat() - paymentFee) * (settlementRatio.toFloat() / 100.0f)
|
||||
} else {
|
||||
(totalKrw.toFloat() - paymentFee) * 0.7f
|
||||
}
|
||||
|
||||
// 원천세 = 정산금액의 3.3%
|
||||
val tax = settlementAmount * 0.033
|
||||
|
|
|
@ -14,6 +14,7 @@ import kr.co.vividnext.sodalive.admin.calculate.QGetCalculateContentDonationQuer
|
|||
import kr.co.vividnext.sodalive.admin.calculate.QGetCalculateContentQueryData
|
||||
import kr.co.vividnext.sodalive.admin.calculate.QGetCalculateLiveQueryData
|
||||
import kr.co.vividnext.sodalive.admin.calculate.QGetCumulativeSalesByContentQueryData
|
||||
import kr.co.vividnext.sodalive.admin.calculate.ratio.QCreatorSettlementRatio.creatorSettlementRatio
|
||||
import kr.co.vividnext.sodalive.can.use.CanUsage
|
||||
import kr.co.vividnext.sodalive.can.use.QUseCan.useCan
|
||||
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
|
||||
|
@ -43,12 +44,15 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac
|
|||
liveRoom.price,
|
||||
useCan.canUsage,
|
||||
useCan.id.count(),
|
||||
useCan.can.add(useCan.rewardCan).sum()
|
||||
useCan.can.add(useCan.rewardCan).sum(),
|
||||
creatorSettlementRatio.liveSettlementRatio
|
||||
)
|
||||
)
|
||||
.from(useCan)
|
||||
.innerJoin(useCan.room, liveRoom)
|
||||
.innerJoin(liveRoom.member, member)
|
||||
.leftJoin(creatorSettlementRatio)
|
||||
.on(member.id.eq(creatorSettlementRatio.member.id))
|
||||
.where(
|
||||
useCan.isRefund.isFalse
|
||||
.and(liveRoom.beginDateTime.goe(startDate))
|
||||
|
|
Loading…
Reference in New Issue