From 3e86881e6ce2cc0b4341dc9137c3a226fe5f55dc Mon Sep 17 00:00:00 2001 From: Derran Date: Fri, 25 Apr 2025 17:44:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E6=94=BF=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reward/RewardApplicationService.java | 100 +++++++++--------- 1 file changed, 49 insertions(+), 51 deletions(-) diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java index b536190..4ae39a6 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java @@ -102,58 +102,56 @@ public class RewardApplicationService extends BaseApplicationService { initiatorMatchmaker = matchmakerQueryService.queryByUserId(dto.getInitiatorUserId()); //邀请红娘在有效期内才能拿到佣金+积分奖励 if (Objects.nonNull(initiatorMatchmaker) && initiatorMatchmaker.checkEnable()) { - //奖励百分比 - BigDecimal recommendRewardPct = rewardConfigQueryService.queryRecommendRewardPct(dto.getInitiatorLevel(), dto.getReceiveLevel()); - if (recommendRewardPct.compareTo(BigDecimal.ZERO) > 0) { - //收益信息 - RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId()); - if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.initUser(dto.getInitiatorUserId()); - } - //营收额 - BigDecimal revenue = RewardConfig.calculatePct(rewardAmount, recommendRewardPct); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE, - revenue, recommendRewardPct, BigDecimal.ZERO, revenue, associateOrder.getSettlementAmount()); - revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(dto.getReceiveUserName()) ? dto.getReceiveUserName() : "")); - RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); - revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); - revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); - - //钱包信息 - WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL); - BigDecimal originalBalance = walletAccount.getTotalBalance(); - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true, originalBalance, walletAccount.getTotalBalance()); - walletAccount.setRecordList(Collections.singletonList(record)); - acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); - - //发送红娘收益事件 - if (MatchmakerAuditBehaviorEnum.REGISTER.equals(dto.getBehavior())) { - MatchmakerFranchiseFeeRewardEvent rewardEvent = new MatchmakerFranchiseFeeRewardEvent(); - rewardEvent.setMatchmakerId(initiatorMatchmaker.getId()); - rewardEvent.setFranchiseFee(rewardAmount); - rewardEvent.setStayFranchiseFee(rewardAmount.subtract(revenue)); - rewardEvent.setReceiveUserName(dto.getReceiveUserName()); - rewardEvent.setInitiatorLevel(dto.getInitiatorLevel()); - rewardEvent.setReceiveLevel(dto.getReceiveLevel()); - rewardEvent.setAssociateId(dto.getAssociateOrderId()); - rewardEvent.setMaxReward(revenue); - this.sendEvent(rewardEvent); - } - - //积分奖励 - PointRewardCreatedMQ mq = new PointRewardCreatedMQ(); - mq.setOwnId(dto.getInitiatorUserId()); - mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL); - mq.setPointType(PointRewardConfigTypeEnum.INVITE_MATCHMAKER); - mq.setContent("邀请红娘:" + dto.getReceiveUserName()); - mq.setIsIncome(true); - mq.setAssociateId(dto.getAssociateOrderId()); - mq.setAmount(rewardAmount); - // 发送mq事件 - amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq); + //收益信息 + RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId()); + if (Objects.isNull(revenueReward)) { + revenueReward = RevenueReward.initUser(dto.getInitiatorUserId()); + } + RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND); + + //营收额 + BigDecimal revenue = rewardConfig.calculateReward(rewardAmount); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE, + revenue, new BigDecimal(rewardConfig.getValue()), BigDecimal.ZERO, revenue, associateOrder.getSettlementAmount()); + revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(dto.getReceiveUserName()) ? dto.getReceiveUserName() : "")); + RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); + revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); + revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); + + //钱包信息 + WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL); + BigDecimal originalBalance = walletAccount.getTotalBalance(); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true, originalBalance, walletAccount.getTotalBalance()); + walletAccount.setRecordList(Collections.singletonList(record)); + acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); + + //发送红娘收益事件 + if (MatchmakerAuditBehaviorEnum.REGISTER.equals(dto.getBehavior())) { + MatchmakerFranchiseFeeRewardEvent rewardEvent = new MatchmakerFranchiseFeeRewardEvent(); + rewardEvent.setMatchmakerId(initiatorMatchmaker.getId()); + rewardEvent.setFranchiseFee(rewardAmount); + rewardEvent.setStayFranchiseFee(rewardAmount.subtract(revenue)); + rewardEvent.setReceiveUserName(dto.getReceiveUserName()); + rewardEvent.setInitiatorLevel(dto.getInitiatorLevel()); + rewardEvent.setReceiveLevel(dto.getReceiveLevel()); + rewardEvent.setAssociateId(dto.getAssociateOrderId()); + rewardEvent.setMaxReward(revenue); + this.sendEvent(rewardEvent); } + + //积分奖励 + PointRewardCreatedMQ mq = new PointRewardCreatedMQ(); + mq.setOwnId(dto.getInitiatorUserId()); + mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL); + mq.setPointType(PointRewardConfigTypeEnum.INVITE_MATCHMAKER); + mq.setContent("邀请红娘:" + dto.getReceiveUserName()); + mq.setIsIncome(true); + mq.setAssociateId(dto.getAssociateOrderId()); + mq.setAmount(rewardAmount); + // 发送mq事件 + amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq); } } }