From 138d31aa4d2c4481353cab275de6a578f7ef5bb0 Mon Sep 17 00:00:00 2001 From: Derran Date: Tue, 20 Aug 2024 17:51:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=82=AC=E8=B5=8F=E6=8B=9B=E4=BA=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../revenuereward/entity/RevenueReward.java | 21 +++++- ...quireMatchmakerJoinRecommendRewardDto.java | 3 +- ...quireMatchmakerJoinRecommendRewardDto.java | 7 +- .../reward/RewardApplicationService.java | 68 ++++++++++--------- 4 files changed, 61 insertions(+), 38 deletions(-) diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java index 262a454..1628869 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java @@ -2,6 +2,7 @@ package com.qniao.dam.domain.aggregate.revenuereward.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord; +import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.domain.Entity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -18,12 +19,26 @@ public class RevenueReward extends Entity { @ApiModelProperty("用户唯一标识") private Long userId; + @ApiModelProperty("组织唯一标识") + private Long orgId; + + @ApiModelProperty("身份类型(个人、组织)") + private IdentityTypeEnum buyerIdentityType; + @ApiModelProperty("收益记录") private transient List recordList; - public static RevenueReward init(Long initiatorUserId) { + public static RevenueReward initUser(Long userId) { + RevenueReward revenueReward = new RevenueReward(); + revenueReward.setUserId(userId); + revenueReward.setBuyerIdentityType(IdentityTypeEnum.INDIVIDUAL); + return revenueReward; + } + + public static RevenueReward initOrg(Long orgId) { RevenueReward revenueReward = new RevenueReward(); - revenueReward.setUserId(initiatorUserId); - return revenueReward; + revenueReward.setOrgId(orgId); + revenueReward.setBuyerIdentityType(IdentityTypeEnum.ORGANIZATION); + return revenueReward; } } 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 6c0357e..165dee8 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 @@ -10,5 +10,6 @@ import lombok.NoArgsConstructor; public class UserAcquireMatchmakerJoinRecommendRewardDto { private Long initiatorUserId; private Long receiveUserId; - + 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 f7fa2f3..cde4fab 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 @@ -9,12 +9,15 @@ import javax.validation.constraints.NotNull; public class UserAcquireMatchmakerJoinRecommendRewardDto { @ApiModelProperty("发起用户") - @NotNull private Long initiatorUserId; @ApiModelProperty("接收用户") - @NotNull private Long receiveUserId; + @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 096475d..787dfe4 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 @@ -52,42 +52,46 @@ public class RewardApplicationService { /** * 获得红娘推荐奖励 + * 通过分佣模式分配给门店(50%0.7)、运营中心(50%*0.3)和红娘(50%),没有红娘情况下门店(70%)、运营中心(30%), */ public void acquireMatchmakerJoinRecommendReward(UserAcquireMatchmakerJoinRecommendRewardDto dto) { - synchronized (dto.getInitiatorUserId().toString().intern()) { - RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND); - RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE); - if (Objects.nonNull(recommendRewardConfig) && Objects.nonNull(serviceFeeRewardConfig)) { - Order associateOrder = orderQueryService.queryBySubCategory(dto.getReceiveUserId(), ProductSubCategoryEnum.MATCHMAKER_FRANCHISE_FEE); - //收益信息 - RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId()); - if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.init(dto.getInitiatorUserId()); - } - //营收额 - BigDecimal revenue = recommendRewardConfig.calculate(associateOrder.getSettlementAmount()); - //服务费用 - BigDecimal serviceFee = serviceFeeRewardConfig.calculate(revenue); - BigDecimal earnings = revenue.subtract(serviceFee); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, - revenue, earnings, associateOrder.getSettlementAmount()); - 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)); + //红娘加盟订单 + Order associateOrder = orderQueryService.queryBySubCategory(dto.getReceiveUserId(), ProductSubCategoryEnum.MATCHMAKER_FRANCHISE_FEE); + BigDecimal rewardAmount = associateOrder.getSettlementAmount(); + //推荐的红娘 + if (Objects.nonNull(dto.getInitiatorUserId())) { + synchronized (dto.getInitiatorUserId().toString().intern()) { + RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND); + if (Objects.nonNull(recommendRewardConfig)) { + //收益信息 + RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId()); + if (Objects.isNull(revenueReward)) { + revenueReward = RevenueReward.initUser(dto.getInitiatorUserId()); + } + //营收额 + BigDecimal revenue = recommendRewardConfig.calculate(rewardAmount); + rewardAmount = rewardAmount.subtract(revenue); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, + revenue, revenue, associateOrder.getSettlementAmount()); + 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.queryByUserId(dto.getInitiatorUserId()); - if (Objects.isNull(walletAccount)) { - walletAccount = WalletAccount.init(dto.getInitiatorUserId()); + //钱包信息 + WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getInitiatorUserId()); + if (Objects.isNull(walletAccount)) { + walletAccount = WalletAccount.init(dto.getInitiatorUserId()); + } + 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); } - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, earnings, true); - walletAccount.setRecordList(Collections.singletonList(record)); - acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); } } + //运营中心 + 门店提成 } /** @@ -102,7 +106,7 @@ public class RewardApplicationService { //收益信息 RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver()); if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.init(dto.getReceiver()); + revenueReward = RevenueReward.initUser(dto.getReceiver()); } //营收额 BigDecimal revenue = dto.getReceivedAmount(); @@ -149,7 +153,7 @@ public class RewardApplicationService { //收益信息 RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver()); if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.init(dto.getReceiver()); + revenueReward = RevenueReward.initUser(dto.getReceiver()); } //营收额 BigDecimal revenue = dto.getReceivedAmount();