diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java index 760fddc..d982a7f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java @@ -26,6 +26,7 @@ import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MatchmakerDao; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; +import com.qniao.dam.query.matchmaker.MatchmakerQueryService; import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; import com.qniao.das.domian.aggregate.marriageseekingreward.event.MatchSuccessfullyEvent; import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; @@ -64,6 +65,8 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService { private MatchmakerDao matchmakerDao; @Resource private MarriageInformationDao marriageInformationDao; + @Resource + private MatchmakerQueryService matchmakerQueryService; @Subscribe public void handle(MarriageBountyOrderCreatedEvent event) { @@ -155,23 +158,26 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService { if (Objects.nonNull(event.getMarriageBountyOrderRewardId()) && CollUtil.isNotEmpty(event.getRewardReceiveRecordList())) { MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectById(event.getId()); for (MarriageBountyOrderConfirmedMatchEvent.MarriageBountyOrderRewardReceiveRecordEvent rewardReceiveRecordEvent : event.getRewardReceiveRecordList()) { - if (Objects.nonNull(rewardReceiveRecordEvent.getReceivedAmount()) && rewardReceiveRecordEvent.getReceivedAmount().compareTo(BigDecimal.ZERO) > 0) { - //处理积分奖励 - //积分奖励 - MarriageInformation marriageInformation = marriageInformationDao.selectById(marriageBountyOrder.getMiId()); - PointRewardCreatedMQ mq = new PointRewardCreatedMQ(); - mq.setOwnId(rewardReceiveRecordEvent.getReceiver()); - mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL); - mq.setPointType(transformPointRewardConfigType(rewardReceiveRecordEvent.getRewardType())); - mq.setContent("完成榜单:" + marriageInformation.getNickName() + "榜单"); - mq.setIsIncome(true); - mq.setAssociateId(event.getId()); - mq.setAmount(rewardReceiveRecordEvent.getReceivedAmount()); - // 发送mq事件 - amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq); + Matchmaker matchmaker = matchmakerQueryService.queryByUserId(rewardReceiveRecordEvent.getReceiver()); + //邀请红娘在有效期内才能拿到佣金+积分奖励 + if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) { + if (Objects.nonNull(rewardReceiveRecordEvent.getReceivedAmount()) && rewardReceiveRecordEvent.getReceivedAmount().compareTo(BigDecimal.ZERO) > 0) { + //处理积分奖励 + //积分奖励 + MarriageInformation marriageInformation = marriageInformationDao.selectById(marriageBountyOrder.getMiId()); + PointRewardCreatedMQ mq = new PointRewardCreatedMQ(); + mq.setOwnId(rewardReceiveRecordEvent.getReceiver()); + mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL); + mq.setPointType(transformPointRewardConfigType(rewardReceiveRecordEvent.getRewardType())); + mq.setContent("完成榜单:" + marriageInformation.getNickName() + "榜单"); + mq.setIsIncome(true); + mq.setAssociateId(event.getId()); + mq.setAmount(rewardReceiveRecordEvent.getReceivedAmount()); + // 发送mq事件 + amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq); + } } } - } } catch (Exception e) { log.error("悬赏招亲订单确认匹配事件处理异常", e); 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 f093c8d..267bdd4 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 @@ -48,10 +48,6 @@ public class RewardApplicationService { @Resource private WalletAccountQueryService walletAccountQueryService; @Resource - private WalletAccountAggregate walletAccountAggregate; - @Resource - private OrderQueryService orderQueryService; - @Resource private MarriageInformationDao marriageInformationDao; @Resource private OrderDao orderDao; @@ -78,43 +74,47 @@ public class RewardApplicationService { //推荐的红娘 if (Objects.nonNull(dto.getInitiatorUserId())) { synchronized (dto.getInitiatorUserId().toString().intern()) { - //奖励百分比 - 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, - 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)); + Matchmaker 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, + 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); + //钱包信息 + 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); - //积分奖励 - 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); + //积分奖励 + 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); + } } } } @@ -181,60 +181,63 @@ public class RewardApplicationService { BigDecimal serviceFee = BigDecimal.ZERO; TradeTypeEnum tradeType = transform(dto.getRewardType()); MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getAssociatedMiId()); - synchronized (dto.getReceiver().toString().intern()) { - RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE); - if (Objects.nonNull(serviceFeeRewardConfig)) { - //收益信息 - RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver()); - if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.initUser(dto.getReceiver()); - } - //营收额 - BigDecimal revenue = dto.getReceivedAmount(); - //服务费用 - serviceFee = serviceFeeRewardConfig.calculateReward(revenue); - BigDecimal earnings = revenue.subtract(serviceFee); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, - revenue, BigDecimal.valueOf(100), new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount()); - revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName())); - if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) { - List associateOrderRecordList = new ArrayList<>(); - for (Long associateOrderId : dto.getOrderIdRelList()) { - Order associateOrder = orderDao.selectById(associateOrderId); - RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); - revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); - associateOrderRecordList.add(associateOrderRecord); + Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver()); + //邀请红娘在有效期内才能拿到佣金+积分奖励 + if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) { + synchronized (dto.getReceiver().toString().intern()) { + RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE); + if (Objects.nonNull(serviceFeeRewardConfig)) { + //收益信息 + RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver()); + if (Objects.isNull(revenueReward)) { + revenueReward = RevenueReward.initUser(dto.getReceiver()); } - revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList); + //营收额 + BigDecimal revenue = dto.getReceivedAmount(); + //服务费用 + serviceFee = serviceFeeRewardConfig.calculateReward(revenue); + BigDecimal earnings = revenue.subtract(serviceFee); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, + revenue, BigDecimal.valueOf(100), new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount()); + revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName())); + if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) { + List associateOrderRecordList = new ArrayList<>(); + for (Long associateOrderId : dto.getOrderIdRelList()) { + Order associateOrder = orderDao.selectById(associateOrderId); + RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); + revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); + associateOrderRecordList.add(associateOrderRecord); + } + revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList); + } + revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); + //钱包 + WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); + BigDecimal originalBalance = walletAccount.getTotalBalance(); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(tradeType, earnings, true, originalBalance, walletAccount.getTotalBalance()); + walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); + acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); } - revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); - //钱包 - WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); - BigDecimal originalBalance = walletAccount.getTotalBalance(); - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(tradeType, earnings, true, originalBalance, walletAccount.getTotalBalance()); - walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); - acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); } - } - Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver()); - if (Objects.nonNull(matchmaker) && Objects.nonNull(matchmaker.getStoreId())) { - //门店收益 - Store store = storeQueryService.queryById(matchmaker.getStoreId()); - handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, meetingMi, - dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); - //门店升级收益 - if (Objects.nonNull(store.getParentStoreId())) { - Store parentStore = storeQueryService.queryById(store.getParentStoreId()); - handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, meetingMi, - dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); - } - //运营中心 - if (Objects.nonNull(store.getOperationCenterOrgId())) { - handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, meetingMi, + if (Objects.nonNull(matchmaker.getStoreId())) { + //门店收益 + Store store = storeQueryService.queryById(matchmaker.getStoreId()); + handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, meetingMi, dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + //门店升级收益 + if (Objects.nonNull(store.getParentStoreId())) { + Store parentStore = storeQueryService.queryById(store.getParentStoreId()); + handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, meetingMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + } + //运营中心 + if (Objects.nonNull(store.getOperationCenterOrgId())) { + handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, meetingMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + } } } } @@ -289,57 +292,60 @@ public class RewardApplicationService { BigDecimal serviceFee = BigDecimal.ZERO; MarriageInformation associatedMi = marriageInformationDao.selectById(dto.getAssociatedMiId()); TradeTypeEnum tradeType = transform(dto.getRewardType()); - synchronized (dto.getReceiver().toString().intern()) { - RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE); - if (Objects.nonNull(serviceFeeRewardConfig)) { - //收益信息 - RevenueReward revenueReward = revenueRewardQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); - //营收额 - BigDecimal revenue = dto.getReceivedAmount(); - //服务费用 - serviceFee = serviceFeeRewardConfig.calculateReward(revenue); - BigDecimal earnings = revenue.subtract(serviceFee); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, revenue, dto.getRevenuePct(), - new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount()); - revenueRewardRecord.handleContent(Collections.singletonList(associatedMi.getNickName())); - if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) { - List associateOrderRecordList = new ArrayList<>(); - for (Long associateOrderId : dto.getOrderIdRelList()) { - Order associateOrder = orderDao.selectById(associateOrderId); - RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); - revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); - associateOrderRecordList.add(associateOrderRecord); + Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver()); + //邀请红娘在有效期内才能拿到佣金+积分奖励 + if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) { + synchronized (dto.getReceiver().toString().intern()) { + RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE); + if (Objects.nonNull(serviceFeeRewardConfig)) { + //收益信息 + RevenueReward revenueReward = revenueRewardQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); + //营收额 + BigDecimal revenue = dto.getReceivedAmount(); + //服务费用 + serviceFee = serviceFeeRewardConfig.calculateReward(revenue); + BigDecimal earnings = revenue.subtract(serviceFee); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, revenue, dto.getRevenuePct(), + new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount()); + revenueRewardRecord.handleContent(Collections.singletonList(associatedMi.getNickName())); + if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) { + List associateOrderRecordList = new ArrayList<>(); + for (Long associateOrderId : dto.getOrderIdRelList()) { + Order associateOrder = orderDao.selectById(associateOrderId); + RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); + revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); + associateOrderRecordList.add(associateOrderRecord); + } + revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList); } - revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList); - } - revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); + revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); - WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); - BigDecimal originalBalance = walletAccount.getTotalBalance(); - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord record = WalletAccountRecord.build(tradeType, earnings, true, originalBalance, walletAccount.getTotalBalance()); - walletAccount.setRecordList(Collections.singletonList(record)); - acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); + WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); + BigDecimal originalBalance = walletAccount.getTotalBalance(); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord record = WalletAccountRecord.build(tradeType, earnings, true, originalBalance, walletAccount.getTotalBalance()); + walletAccount.setRecordList(Collections.singletonList(record)); + acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); + } } - } - Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver()); - if (Objects.nonNull(matchmaker) && Objects.nonNull(matchmaker.getStoreId())) { - //门店收益 - Store store = storeQueryService.queryById(matchmaker.getStoreId()); - handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, associatedMi, - dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); - //门店升级收益 - if (Objects.nonNull(store.getParentStoreId())) { - Store parentStore = storeQueryService.queryById(store.getParentStoreId()); - handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, associatedMi, - dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); - } - //运营中心 - if (Objects.nonNull(store.getOperationCenterOrgId())) { - handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, associatedMi, + if (Objects.nonNull(matchmaker.getStoreId())) { + //门店收益 + Store store = storeQueryService.queryById(matchmaker.getStoreId()); + handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, associatedMi, dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + //门店升级收益 + if (Objects.nonNull(store.getParentStoreId())) { + Store parentStore = storeQueryService.queryById(store.getParentStoreId()); + handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, associatedMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + } + //运营中心 + if (Objects.nonNull(store.getOperationCenterOrgId())) { + handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, associatedMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + } } } }