diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java index 946ab56..dc8b11e 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java @@ -129,7 +129,11 @@ public enum RewardTypeEnum { OPERATING_RECOMMEND_20(508, "营性质推荐收益-20%"), - PAYBACK_SUBSIDY_30(509, "回本补贴-30%"); + PAYBACK_SUBSIDY_30(509, "回本补贴-30%"), + + NON_OPERATING_MANAGEMENT_FEE_55(510, "非经营性质服务商管理费-55%"), + + NON_OPERATING_MANAGEMENT_FEE_35(511, "非经营性质服务商管理费-35%"); @EnumValue @JsonValue diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java index 2333928..3deba12 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java @@ -147,7 +147,18 @@ public class RevenueRewardEventHandler extends BaseApplicationService { //非经营性质推荐 handleServiceProviderManagementFee(mq.getRecommendServiceProviderOrgId(), mq.getStoreName(), mq.getFranchiseFee(), RewardTypeEnum.NON_OPERATING_RECOMMEND); //运营中心收益处理 - handleServiceProviderManagementFee(mq.getOperationCenterOrgId(), mq.getStoreName(), mq.getFranchiseFee(), RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE); + RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(mq.getOperationCenterOrgId()); + if (!revenueReward.getAllRecoveryRequirement()) { + //推荐服务商回本前 55%获得 + handleServiceProviderManagementFee(mq.getOperationCenterOrgId(), mq.getStoreName(), mq.getFranchiseFee(), RewardTypeEnum.NON_OPERATING_MANAGEMENT_FEE_55); + } else { + //推荐服务商回本后 先提取35%,剩余20需要被推荐服务商回本50%后才能提取 + handleServiceProviderManagementFee(mq.getOperationCenterOrgId(), mq.getStoreName(), mq.getFranchiseFee(), RewardTypeEnum.NON_OPERATING_MANAGEMENT_FEE_35); + //补充 入驻费分佣管理 + FranchiseFeeProfitManagement franchiseFeeProfitManagement = FranchiseFeeProfitManagement.initOrg(mq.getOperationCenterOrgId(), mq.getOrgId(), FranchiseFeeProfitManagementTypeEnum.SERVICE_PROVIDER_SETTLEMENT, + null); + franchiseFeeProfitManagementAggregate.create(franchiseFeeProfitManagement); + } } } } catch (Exception e) { @@ -296,6 +307,8 @@ public class RevenueRewardEventHandler extends BaseApplicationService { } else { //回本后 拿70% 20%推荐费+50%门店费用 rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder); + rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder); + //发送事件 检查是否满足回本要求 RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId()); RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId()); 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 e920711..57c6123 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 @@ -200,30 +200,7 @@ public class RewardApplicationService extends BaseApplicationService { MatchmakerNoviceTaskProgress matchmakerNoviceTaskProgress = matchmakerNoviceTaskProgressQueryService.queryByMatchmakerId(initiatorMatchmaker.getId()); if (Objects.nonNull(matchmakerNoviceTaskProgress) && matchmakerNoviceTaskProgress.getIsFinish()) { // 红娘已完成新手任务 门店拿50%, 没回本再拿30%回本补贴 - RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); - if (!storeRevenueReward.getAllRecoveryRequirement()) { - //未回本 门店拿50% + 30%回本补贴 - handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder); - handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.PAYBACK_SUBSIDY_30, associateOrder); - //发送事件 检查是否满足回本要求. - RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); - RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId()); - this.sendEvent(storeReEvent); - } else { - //已回本 门店拿50% - handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder); - //发送事件 检查是否满足回本要求 - RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); - RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId()); - this.sendEvent(storeReEvent); - - //区域分润 - handleStoreRecommendMatchmakerFee(store.getOperationCenterOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder); - //发送事件 检查是否满足回本要求 - RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId()); - RevenueRewardUpdatedEvent operationCenterReEvent = new RevenueRewardUpdatedEvent(operationCenterRevenueReward.getId()); - this.sendEvent(operationCenterReEvent); - } + handleStoreRecommendMatchmaker(dto, store, rewardAmount, associateOrder); } else { // 红娘未完成 记录到 入驻费分佣管理中 FranchiseFeeProfitManagement franchiseFeeProfitManagement = FranchiseFeeProfitManagement.initUser(dto.getInitiatorUserId(), dto.getReceiveUserId(), @@ -238,12 +215,46 @@ public class RewardApplicationService extends BaseApplicationService { matchmakerInvitedMQ.setAssociateOrderId(dto.getAssociateOrderId()); amqpTemplate.convertAndSend(MqExchange.MATCHMAKER_INVITED, null, matchmakerInvitedMQ); } + } else { + //其他服务商 + handleStoreRecommendMatchmaker(dto, store, rewardAmount, associateOrder); } } } } } + private void handleStoreRecommendMatchmaker(UserAcquireMatchmakerJoinRecommendRewardDto dto, + Store store, + BigDecimal rewardAmount, + Order associateOrder) { + RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); + if (!storeRevenueReward.getAllRecoveryRequirement()) { + //未回本 门店拿50% + 30%回本补贴 + handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder); + handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.PAYBACK_SUBSIDY_30, associateOrder); + //发送事件 检查是否满足回本要求. + RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); + RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId()); + this.sendEvent(storeReEvent); + } else { + //已回本 门店拿50% + handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder); + handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder); + //发送事件 检查是否满足回本要求 + RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); + RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId()); + this.sendEvent(storeReEvent); + + //区域分润 + handleStoreRecommendMatchmakerFee(store.getOperationCenterOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder); + //发送事件 检查是否满足回本要求 + RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId()); + RevenueRewardUpdatedEvent operationCenterReEvent = new RevenueRewardUpdatedEvent(operationCenterRevenueReward.getId()); + this.sendEvent(operationCenterReEvent); + } + } + public void handleStoreRecommendMatchmakerFee(Long orgId, String name, BigDecimal franchiseFee,