크리에이터 정산 - 입력된 비율로 계산 #191
@@ -4,6 +4,7 @@ import com.querydsl.core.types.dsl.DateTimePath
 | 
				
			|||||||
import com.querydsl.core.types.dsl.Expressions
 | 
					import com.querydsl.core.types.dsl.Expressions
 | 
				
			||||||
import com.querydsl.core.types.dsl.StringTemplate
 | 
					import com.querydsl.core.types.dsl.StringTemplate
 | 
				
			||||||
import com.querydsl.jpa.impl.JPAQueryFactory
 | 
					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.CanUsage
 | 
				
			||||||
import kr.co.vividnext.sodalive.can.use.QUseCan.useCan
 | 
					import kr.co.vividnext.sodalive.can.use.QUseCan.useCan
 | 
				
			||||||
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
 | 
					import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
 | 
				
			||||||
@@ -29,12 +30,15 @@ class AdminCalculateQueryRepository(private val queryFactory: JPAQueryFactory) {
 | 
				
			|||||||
                    liveRoom.price,
 | 
					                    liveRoom.price,
 | 
				
			||||||
                    useCan.canUsage,
 | 
					                    useCan.canUsage,
 | 
				
			||||||
                    useCan.id.count(),
 | 
					                    useCan.id.count(),
 | 
				
			||||||
                    useCan.can.add(useCan.rewardCan).sum()
 | 
					                    useCan.can.add(useCan.rewardCan).sum(),
 | 
				
			||||||
 | 
					                    creatorSettlementRatio.liveSettlementRatio
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .from(useCan)
 | 
					            .from(useCan)
 | 
				
			||||||
            .innerJoin(useCan.room, liveRoom)
 | 
					            .innerJoin(useCan.room, liveRoom)
 | 
				
			||||||
            .innerJoin(liveRoom.member, member)
 | 
					            .innerJoin(liveRoom.member, member)
 | 
				
			||||||
 | 
					            .leftJoin(creatorSettlementRatio)
 | 
				
			||||||
 | 
					            .on(member.id.eq(creatorSettlementRatio.member.id))
 | 
				
			||||||
            .where(
 | 
					            .where(
 | 
				
			||||||
                useCan.isRefund.isFalse
 | 
					                useCan.isRefund.isFalse
 | 
				
			||||||
                    .and(liveRoom.beginDateTime.goe(startDate))
 | 
					                    .and(liveRoom.beginDateTime.goe(startDate))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,9 @@ data class GetCalculateLiveQueryData @QueryProjection constructor(
 | 
				
			|||||||
    // 참여인원
 | 
					    // 참여인원
 | 
				
			||||||
    val memberCount: Long,
 | 
					    val memberCount: Long,
 | 
				
			||||||
    // 합계
 | 
					    // 합계
 | 
				
			||||||
    val totalAmount: Int
 | 
					    val totalAmount: Int,
 | 
				
			||||||
 | 
					    // 정산비율
 | 
				
			||||||
 | 
					    val settlementRatio: Int?
 | 
				
			||||||
) {
 | 
					) {
 | 
				
			||||||
    fun toGetCalculateLiveResponse(): GetCalculateLiveResponse {
 | 
					    fun toGetCalculateLiveResponse(): GetCalculateLiveResponse {
 | 
				
			||||||
        val canUsageStr = when (canUsage) {
 | 
					        val canUsageStr = when (canUsage) {
 | 
				
			||||||
@@ -46,7 +48,11 @@ data class GetCalculateLiveQueryData @QueryProjection constructor(
 | 
				
			|||||||
        val paymentFee = totalKrw * 0.066f
 | 
					        val paymentFee = totalKrw * 0.066f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 정산금액 = (원화 - 결제수수료) 의 70%
 | 
					        // 정산금액 = (원화 - 결제수수료) 의 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%
 | 
					        // 원천세 = 정산금액의 3.3%
 | 
				
			||||||
        val tax = settlementAmount * 0.033
 | 
					        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.QGetCalculateContentQueryData
 | 
				
			||||||
import kr.co.vividnext.sodalive.admin.calculate.QGetCalculateLiveQueryData
 | 
					import kr.co.vividnext.sodalive.admin.calculate.QGetCalculateLiveQueryData
 | 
				
			||||||
import kr.co.vividnext.sodalive.admin.calculate.QGetCumulativeSalesByContentQueryData
 | 
					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.CanUsage
 | 
				
			||||||
import kr.co.vividnext.sodalive.can.use.QUseCan.useCan
 | 
					import kr.co.vividnext.sodalive.can.use.QUseCan.useCan
 | 
				
			||||||
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
 | 
					import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
 | 
				
			||||||
@@ -43,12 +44,15 @@ class CreatorAdminCalculateQueryRepository(private val queryFactory: JPAQueryFac
 | 
				
			|||||||
                    liveRoom.price,
 | 
					                    liveRoom.price,
 | 
				
			||||||
                    useCan.canUsage,
 | 
					                    useCan.canUsage,
 | 
				
			||||||
                    useCan.id.count(),
 | 
					                    useCan.id.count(),
 | 
				
			||||||
                    useCan.can.add(useCan.rewardCan).sum()
 | 
					                    useCan.can.add(useCan.rewardCan).sum(),
 | 
				
			||||||
 | 
					                    creatorSettlementRatio.liveSettlementRatio
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .from(useCan)
 | 
					            .from(useCan)
 | 
				
			||||||
            .innerJoin(useCan.room, liveRoom)
 | 
					            .innerJoin(useCan.room, liveRoom)
 | 
				
			||||||
            .innerJoin(liveRoom.member, member)
 | 
					            .innerJoin(liveRoom.member, member)
 | 
				
			||||||
 | 
					            .leftJoin(creatorSettlementRatio)
 | 
				
			||||||
 | 
					            .on(member.id.eq(creatorSettlementRatio.member.id))
 | 
				
			||||||
            .where(
 | 
					            .where(
 | 
				
			||||||
                useCan.isRefund.isFalse
 | 
					                useCan.isRefund.isFalse
 | 
				
			||||||
                    .and(liveRoom.beginDateTime.goe(startDate))
 | 
					                    .and(liveRoom.beginDateTime.goe(startDate))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user