From 14c7a4860d511b12b5d528c0e77671b63f7592bd Mon Sep 17 00:00:00 2001 From: Derran Date: Mon, 12 Jan 2026 15:40:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=AB=E7=91=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walletaccount/constant/TradeTypeEnum.java | 2 + .../request/UserConsumeVirtualAccountDto.java | 4 ++ .../request/UserConsumeVirtualAccountDto.java | 6 +++ .../VirtualAccountApplicationService.java | 37 ++++++++++++++++++- 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java index b65ca6b..78bcdf9 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java @@ -40,6 +40,8 @@ public enum TradeTypeEnum { ONE_ON_ONE_VIDEO(115, "1V1视频"), + LINK_MIC_REWARD(116, "连麦收益"), + PLATFORM_SERVICE_FEE(201, "平台服务费"), WITHDRAW(202, "提现"); diff --git a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java index ccae4cb..0deec27 100644 --- a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java +++ b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java @@ -12,6 +12,10 @@ public class UserConsumeVirtualAccountDto { private Long userId; + private Long anchorUserId; + + private Integer channelCreatorTodayCrossMicCount; + private Long productSpecId; private VirtualAccountTradeTypeEnum tradeType; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserConsumeVirtualAccountDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserConsumeVirtualAccountDto.java index 011d7bd..99bc7c6 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserConsumeVirtualAccountDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserConsumeVirtualAccountDto.java @@ -11,6 +11,12 @@ public class UserConsumeVirtualAccountDto { @NotNull private Long userId; + @NotNull + private Long anchorUserId; + + @NotNull + private Integer channelCreatorTodayCrossMicCount; + @NotNull private Long productSpecId; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java index 27eea51..ecc866f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java @@ -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); + } + /** * 玫瑰充值 */