관리자 라이브 정산
- 크리에이터 정산 추가데이터가 있으면 해당 데이터에 입력된 정산비율로 계산되도록 수정
This commit is contained in:
		| @@ -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)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user