From 8139aa87ee783213b97c8dd5ccf6f03a6ab1c44d Mon Sep 17 00:00:00 2001 From: Derran Date: Tue, 1 Apr 2025 17:32:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E4=B8=8B=E6=94=B6=E7=9B=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...quireMatchmakerJoinRecommendRewardDto.java | 2 + ...quireMatchmakerJoinRecommendRewardDto.java | 5 + .../reward/RewardApplicationService.java | 114 +++++++++--------- 3 files changed, 65 insertions(+), 56 deletions(-) diff --git a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java index acadacf..6faa5f2 100644 --- a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java +++ b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java @@ -17,4 +17,6 @@ public class UserAcquireMatchmakerJoinRecommendRewardDto { private MatchmakerLevelEnum initiatorLevel; private MatchmakerLevelEnum receiveLevel; private MatchmakerAuditBehaviorEnum behavior; + private Long storeOrgId; + private Long operationCenterOrgId; } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java index 36561e9..fa0a845 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java @@ -29,4 +29,9 @@ public class UserAcquireMatchmakerJoinRecommendRewardDto { @ApiModelProperty("行为 1注册 2升级") private MatchmakerAuditBehaviorEnum behavior; + @ApiModelProperty("门店组织标识") + private Long storeOrgId; + + @ApiModelProperty("运营中心组织id") + private Long operationCenterOrgId; } 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 33cacd5..843eddd 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 @@ -68,7 +68,6 @@ public class RewardApplicationService extends BaseApplicationService { /** * 获得红娘推荐奖励 - * 通过分佣模式分配给门店(50%0.7)、运营中心(50%*0.3)和红娘(50%),没有红娘情况下门店(70%)、运营中心(30%), */ public void acquireMatchmakerJoinRecommendReward(UserAcquireMatchmakerJoinRecommendRewardDto dto) { //红娘加盟订单 @@ -136,58 +135,61 @@ public class RewardApplicationService extends BaseApplicationService { } } } -// //门店提成 -// if (Objects.nonNull(dto.getStoreOrgId())) { -// synchronized (dto.getStoreOrgId().toString().intern()) { -// RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE); -// if (Objects.nonNull(recommendRewardConfig)) { -// //收益信息 -// RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); -// //营收额 -// BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); -// RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, -// revenue, revenue, associateOrder.getOriginalAmount()); -// revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); -// RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); -// revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); -// revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); -// -// //钱包信息 -// WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION); -// walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); -// walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); -// WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); -// walletAccount.setRecordList(Collections.singletonList(record)); -// acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); -// } -// } -// } -// //运营中心提成 -// if (Objects.nonNull(dto.getOperationCenterOrgId())) { -// synchronized (dto.getOperationCenterOrgId().toString().intern()) { -// RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER); -// if (Objects.nonNull(recommendRewardConfig)) { -// //收益信息 -// RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getOperationCenterOrgId()); -// //营收额 -// BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); -// RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, -// revenue, revenue, associateOrder.getOriginalAmount()); -// revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); -// RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); -// revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); -// revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); -// -// //钱包信息 -// WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION); -// walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); -// walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); -// WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); -// walletAccount.setRecordList(Collections.singletonList(record)); -// acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); -// } -// } -// } + + //门店提成 + if (Objects.nonNull(dto.getStoreOrgId())) { + synchronized (dto.getStoreOrgId().toString().intern()) { + RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE); + if (Objects.nonNull(recommendRewardConfig)) { + //收益信息 + RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); + //营收额 + BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE, + revenue, new BigDecimal(recommendRewardConfig.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.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION); + 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 (Objects.nonNull(dto.getOperationCenterOrgId())) { + synchronized (dto.getOperationCenterOrgId().toString().intern()) { + RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER); + if (Objects.nonNull(recommendRewardConfig)) { + //收益信息 + RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getOperationCenterOrgId()); + //营收额 + BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE, + revenue, new BigDecimal(recommendRewardConfig.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.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION); + 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); + } + } + } } } @@ -215,7 +217,7 @@ public class RewardApplicationService extends BaseApplicationService { //服务费用 serviceFee = serviceFeeRewardConfig.calculateReward(revenue); BigDecimal earnings = revenue.subtract(serviceFee); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType,TradeSceneEnum.ONLINE, + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, TradeSceneEnum.ONLINE, revenue, BigDecimal.valueOf(100), new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount()); revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName())); if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) { @@ -276,7 +278,7 @@ public class RewardApplicationService extends BaseApplicationService { RevenueReward revenueReward = revenueRewardQueryService.queryByType(identityId, identityType); //营收额 BigDecimal revenue = recommendRewardConfig.calculateReward(amount); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType,TradeSceneEnum.ONLINE, + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, TradeSceneEnum.ONLINE, revenue, new BigDecimal(recommendRewardConfig.getValue()), BigDecimal.ZERO, revenue, totalAssociateOrderAmount); revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName())); if (CollUtil.isNotEmpty(orderIdRekList)) { @@ -323,7 +325,7 @@ public class RewardApplicationService extends BaseApplicationService { //服务费用 serviceFee = serviceFeeRewardConfig.calculateReward(revenue); BigDecimal earnings = revenue.subtract(serviceFee); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType,TradeSceneEnum.ONLINE, revenue, dto.getRevenuePct(), + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, TradeSceneEnum.ONLINE, revenue, dto.getRevenuePct(), new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount()); revenueRewardRecord.handleContent(Collections.singletonList(associatedMi.getNickName())); if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {