|
|
|
@ -19,6 +19,7 @@ import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount; |
|
|
|
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate; |
|
|
|
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|
|
|
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; |
|
|
|
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService; |
|
|
|
import com.qniao.dam.domain.service.virtualaccount.ConsumeVirtualAccountDomainService; |
|
|
|
import com.qniao.dam.domain.service.virtualaccount.CostGiftRewardDomainService; |
|
|
|
import com.qniao.dam.domain.service.virtualaccount.SettleOneOnOneRtcDomainService; |
|
|
|
@ -38,7 +39,6 @@ import com.qniao.dam.query.marriageinformation.MarriageInformationQueryService; |
|
|
|
import com.qniao.dam.query.product.ProductQueryService; |
|
|
|
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; |
|
|
|
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; |
|
|
|
import com.qniao.dam.query.usermarriageinformation.UserMarriageInformationQueryService; |
|
|
|
import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService; |
|
|
|
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; |
|
|
|
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; |
|
|
|
@ -86,6 +86,8 @@ public class VirtualAccountApplicationService extends BaseApplicationService { |
|
|
|
private MarriageInformationQueryService marriageInformationQueryService; |
|
|
|
@Resource |
|
|
|
private SettleOneOnOneRtcDomainService settleOneOnOneRtcDomainService; |
|
|
|
@Resource |
|
|
|
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService; |
|
|
|
|
|
|
|
public void create(VirtualAccount virtualAccount) { |
|
|
|
virtualAccountAggregate.create(virtualAccount); |
|
|
|
@ -114,6 +116,10 @@ public class VirtualAccountApplicationService extends BaseApplicationService { |
|
|
|
consumeVirtualAccountDomainService.handle(virtualAccount, order); |
|
|
|
vo.setSuccess(true); |
|
|
|
vo.setOrderId(order.getId()); |
|
|
|
//相亲卡消费分润 |
|
|
|
if (VirtualAccountTradeTypeEnum.CONNECT_CHANNEL.equals(dto.getTradeType())) { |
|
|
|
handleChannelConnectReward(dto.getAnchorUserId(), dto.getChannelCreatorTodayCrossMicCount(), productSpec.getUnitSellingPrice().intValue()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return vo; |
|
|
|
@ -344,6 +350,35 @@ public class VirtualAccountApplicationService extends BaseApplicationService { |
|
|
|
return vo; |
|
|
|
} |
|
|
|
|
|
|
|
private void handleChannelConnectReward(Long userId, |
|
|
|
Integer channelCreatorTodayCrossMicCount, |
|
|
|
Integer costBalance) { |
|
|
|
//收益信息 |
|
|
|
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(userId); |
|
|
|
if (Objects.isNull(revenueReward)) { |
|
|
|
revenueReward = RevenueReward.initUser(userId); |
|
|
|
} |
|
|
|
//营收额 todo |
|
|
|
BigDecimal giftRewardPct = rewardConfigQueryService.queryMatchmakerChannelGiftPct(userId, channelCreatorTodayCrossMicCount); |
|
|
|
BigDecimal revenue = BigDecimal.valueOf(costBalance).multiply(BigDecimal.valueOf(0.1428)).multiply(giftRewardPct) |
|
|
|
.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); |
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.GIFT_REWARD, TradeSceneEnum.ONLINE, |
|
|
|
revenue, BigDecimal.valueOf(100), BigDecimal.ZERO, revenue, BigDecimal.valueOf(costBalance)); |
|
|
|
//todo |
|
|
|
revenueRewardRecord.setContent("直播间礼物"); |
|
|
|
|
|
|
|
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
//钱包 |
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByType(userId, IdentityTypeEnum.INDIVIDUAL); |
|
|
|
BigDecimal originalBalance = walletAccount.getTotalBalance(); |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.GIFT_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance()); |
|
|
|
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); |
|
|
|
|
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward,walletAccount); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 玫瑰充值 |
|
|
|
*/ |
|
|
|
|