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 0c09a7a..2333928 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 @@ -190,32 +190,41 @@ public class RevenueRewardEventHandler extends BaseApplicationService { //满足回本条件处理 服务商 if (IdentityTypeEnum.ORGANIZATION.equals(revenueReward.getIdentityType()) && (!revenueReward.getHalfRecoveryRequirement() || !revenueReward.getAllRecoveryRequirement())) { BigDecimal franchiseFee = null; + BigDecimal giftFee = null; Organization organization = organizationDao.selectById(revenueReward.getOrgId()); if (OrganizationTypeEnum.OPERATION_CENTER.equals(organization.getType())) { OperationCenter operationCenter = operationCenterQueryService.queryByOrg(revenueReward.getOrgId()); franchiseFee = operationCenter.getFranchiseFee(); + giftFee = Objects.nonNull(operationCenter.getGiftFee()) ? operationCenter.getGiftFee() : BigDecimal.ZERO; } else if (OrganizationTypeEnum.STORE.equals(organization.getType())) { Store store = storeQueryService.queryByOrg(revenueReward.getOrgId()); franchiseFee = store.getFranchiseFee(); + giftFee = Objects.nonNull(store.getGiftFee()) ? store.getGiftFee() : BigDecimal.ZERO; } if (Objects.nonNull(franchiseFee)) { if (!revenueReward.getHalfRecoveryRequirement()) { RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.SERVICE_PROVIDER_RECOVERY_HALF_PCT); - BigDecimal recoveredAmount = rewardConfig.calculateReward(franchiseFee); - if (Objects.nonNull(revenueReward.getRecoveredAmount()) && revenueReward.getRecoveredAmount().compareTo(recoveredAmount) > 0) { - //达到回本一半条件 - revenueReward.setHalfRecoveryRequirement(true); - BaseDomainEvent filledEvent = revenueRewardAggregate.fillRecoveryRequirement(revenueReward); - this.sendEvent(filledEvent); + BigDecimal targetRecoveredAmount = rewardConfig.calculateReward(franchiseFee); + if (Objects.nonNull(revenueReward.getRecoveredAmount())) { + BigDecimal recoveredAmount = revenueReward.getRecoveredAmount().add(giftFee); + if (recoveredAmount.compareTo(targetRecoveredAmount) >= 0) { + //达到回本一半条件 + revenueReward.setHalfRecoveryRequirement(true); + BaseDomainEvent filledEvent = revenueRewardAggregate.fillRecoveryRequirement(revenueReward); + this.sendEvent(filledEvent); + } } } if (!revenueReward.getAllRecoveryRequirement()) { RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.SERVICE_PROVIDER_RECOVERY_ALL_PCT); - BigDecimal recoveredAmount = rewardConfig.calculateReward(franchiseFee); - if (Objects.nonNull(revenueReward.getRecoveredAmount()) && revenueReward.getRecoveredAmount().compareTo(recoveredAmount) > 0) { - //达到全回本条件 - revenueReward.setAllRecoveryRequirement(true); - revenueRewardAggregate.fillRecoveryRequirement(revenueReward); + BigDecimal targetRecoveredAmount = rewardConfig.calculateReward(franchiseFee); + if (Objects.nonNull(revenueReward.getRecoveredAmount())) { + BigDecimal recoveredAmount = revenueReward.getRecoveredAmount().add(giftFee); + if (recoveredAmount.compareTo(targetRecoveredAmount) >= 0) { + //达到全回本条件 + revenueReward.setAllRecoveryRequirement(true); + revenueRewardAggregate.fillRecoveryRequirement(revenueReward); + } } } } @@ -277,8 +286,8 @@ public class RevenueRewardEventHandler extends BaseApplicationService { RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId()); if (!storeRevenueReward.getAllRecoveryRequirement()) { //未回本 拿100% 20%推荐费+50%门店费用+ 30%回本补贴 - rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.OPERATING_RECOMMEND_50,associateOrder); - rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.PAYBACK_SUBSIDY_30,associateOrder); + rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder); + rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.PAYBACK_SUBSIDY_30, associateOrder); //发送事件 检查是否满足回本要求 RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId()); @@ -286,14 +295,14 @@ public class RevenueRewardEventHandler extends BaseApplicationService { handle(storeReEvent); } 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.OPERATING_RECOMMEND_50, associateOrder); //发送事件 检查是否满足回本要求 RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId()); RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId()); handle(storeReEvent); //区域分润 - rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOperationCenterOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE,associateOrder); + rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOperationCenterOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder); //发送事件 检查是否满足回本要求 RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId()); RevenueRewardUpdatedEvent operationCenterReEvent = new RevenueRewardUpdatedEvent(operationCenterRevenueReward.getId());