|
|
|
@ -31,6 +31,7 @@ import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao; |
|
|
|
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil; |
|
|
|
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.virtualaccount.VirtualAccountQueryService; |
|
|
|
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
@ -66,6 +67,8 @@ public class VirtualAccountApplicationService { |
|
|
|
private CostGiftRewardDomainService costGiftRewardDomainService; |
|
|
|
@Resource |
|
|
|
private ProductQueryService productQueryService; |
|
|
|
@Resource |
|
|
|
private RewardConfigQueryService rewardConfigQueryService; |
|
|
|
|
|
|
|
public void create(VirtualAccount virtualAccount) { |
|
|
|
virtualAccountAggregate.create(virtualAccount); |
|
|
|
@ -201,10 +204,10 @@ public class VirtualAccountApplicationService { |
|
|
|
if (virtualAccount != null && virtualAccount.getBalance() >= costBalance) { |
|
|
|
if (dto.getDirection() == 1) { |
|
|
|
//直接送主播 |
|
|
|
vo = handleChannelAnchorGiftReward(virtualAccount, dto.getFromUserId(), dto.getChannelCreatorId(), productSpec, costBalance, dto.getQuantity()); |
|
|
|
vo = handleChannelAnchorGiftReward(virtualAccount, dto.getFromUserId(), dto.getChannelCreatorId(), productSpec, costBalance, dto.getQuantity(), dto.getChannelCreatorTodayCrossMicCount()); |
|
|
|
} else { |
|
|
|
//直接送嘉宾 |
|
|
|
vo = handleChannelUserGiftReward(virtualAccount, dto.getFromUserId(), dto.getToUserId(), dto.getChannelCreatorId(), productSpec, costBalance, dto.getQuantity()); |
|
|
|
vo = handleChannelUserGiftReward(virtualAccount, dto.getFromUserId(), dto.getToUserId(), dto.getChannelCreatorId(), productSpec, costBalance, dto.getQuantity(), dto.getChannelCreatorTodayCrossMicCount()); |
|
|
|
} |
|
|
|
} |
|
|
|
return vo; |
|
|
|
@ -220,7 +223,8 @@ public class VirtualAccountApplicationService { |
|
|
|
Long anchorId, |
|
|
|
ProductSpec productSpec, |
|
|
|
Integer costBalance, |
|
|
|
Integer quantity) { |
|
|
|
Integer quantity, |
|
|
|
Integer channelCreatorTodayCrossMicCount) { |
|
|
|
CostGiftVo vo = new CostGiftVo(); |
|
|
|
//余额充足 创建消费订单+扣除余额 |
|
|
|
Order order = handleOrder(fromUserId, productSpec, quantity); |
|
|
|
@ -252,8 +256,11 @@ public class VirtualAccountApplicationService { |
|
|
|
if (Objects.isNull(anchorRevenueReward)) { |
|
|
|
anchorRevenueReward = RevenueReward.initUser(anchorId); |
|
|
|
} |
|
|
|
//营收额 todo |
|
|
|
BigDecimal anchorRevenue = BigDecimal.valueOf(costBalance).multiply(BigDecimal.valueOf(0.1428)).multiply(BigDecimal.valueOf(0.3)).setScale(2, RoundingMode.HALF_UP); |
|
|
|
//营收额 |
|
|
|
BigDecimal giftRewardPct = rewardConfigQueryService.queryMatchmakerChannelGiftPct(toUserId, channelCreatorTodayCrossMicCount); |
|
|
|
giftRewardPct = giftRewardPct.subtract(BigDecimal.valueOf(10)); |
|
|
|
BigDecimal anchorRevenue = BigDecimal.valueOf(costBalance).multiply(BigDecimal.valueOf(0.1428)).multiply(giftRewardPct) |
|
|
|
.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); |
|
|
|
RevenueRewardRecord anchorRevenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.GIFT_REWARD, TradeSceneEnum.ONLINE, |
|
|
|
anchorRevenue, BigDecimal.valueOf(100), BigDecimal.ZERO, anchorRevenue, BigDecimal.valueOf(costBalance)); |
|
|
|
//todo |
|
|
|
@ -281,7 +288,8 @@ public class VirtualAccountApplicationService { |
|
|
|
Long toUserId, |
|
|
|
ProductSpec productSpec, |
|
|
|
Integer costBalance, |
|
|
|
Integer quantity) { |
|
|
|
Integer quantity, |
|
|
|
Integer channelCreatorTodayCrossMicCount) { |
|
|
|
CostGiftVo vo = new CostGiftVo(); |
|
|
|
//余额充足 创建消费订单+扣除余额 |
|
|
|
Order order = handleOrder(fromUserId, productSpec, quantity); |
|
|
|
@ -294,7 +302,9 @@ public class VirtualAccountApplicationService { |
|
|
|
revenueReward = RevenueReward.initUser(toUserId); |
|
|
|
} |
|
|
|
//营收额 todo |
|
|
|
BigDecimal revenue = BigDecimal.valueOf(costBalance).multiply(BigDecimal.valueOf(0.1428)).multiply(BigDecimal.valueOf(0.4)).setScale(2, RoundingMode.HALF_UP); |
|
|
|
BigDecimal giftRewardPct = rewardConfigQueryService.queryMatchmakerChannelGiftPct(toUserId, 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)); |
|
|
|
|