|
|
@ -190,32 +190,41 @@ public class RevenueRewardEventHandler extends BaseApplicationService { |
|
|
//满足回本条件处理 服务商 |
|
|
//满足回本条件处理 服务商 |
|
|
if (IdentityTypeEnum.ORGANIZATION.equals(revenueReward.getIdentityType()) && (!revenueReward.getHalfRecoveryRequirement() || !revenueReward.getAllRecoveryRequirement())) { |
|
|
if (IdentityTypeEnum.ORGANIZATION.equals(revenueReward.getIdentityType()) && (!revenueReward.getHalfRecoveryRequirement() || !revenueReward.getAllRecoveryRequirement())) { |
|
|
BigDecimal franchiseFee = null; |
|
|
BigDecimal franchiseFee = null; |
|
|
|
|
|
BigDecimal giftFee = null; |
|
|
Organization organization = organizationDao.selectById(revenueReward.getOrgId()); |
|
|
Organization organization = organizationDao.selectById(revenueReward.getOrgId()); |
|
|
if (OrganizationTypeEnum.OPERATION_CENTER.equals(organization.getType())) { |
|
|
if (OrganizationTypeEnum.OPERATION_CENTER.equals(organization.getType())) { |
|
|
OperationCenter operationCenter = operationCenterQueryService.queryByOrg(revenueReward.getOrgId()); |
|
|
OperationCenter operationCenter = operationCenterQueryService.queryByOrg(revenueReward.getOrgId()); |
|
|
franchiseFee = operationCenter.getFranchiseFee(); |
|
|
franchiseFee = operationCenter.getFranchiseFee(); |
|
|
|
|
|
giftFee = Objects.nonNull(operationCenter.getGiftFee()) ? operationCenter.getGiftFee() : BigDecimal.ZERO; |
|
|
} else if (OrganizationTypeEnum.STORE.equals(organization.getType())) { |
|
|
} else if (OrganizationTypeEnum.STORE.equals(organization.getType())) { |
|
|
Store store = storeQueryService.queryByOrg(revenueReward.getOrgId()); |
|
|
Store store = storeQueryService.queryByOrg(revenueReward.getOrgId()); |
|
|
franchiseFee = store.getFranchiseFee(); |
|
|
franchiseFee = store.getFranchiseFee(); |
|
|
|
|
|
giftFee = Objects.nonNull(store.getGiftFee()) ? store.getGiftFee() : BigDecimal.ZERO; |
|
|
} |
|
|
} |
|
|
if (Objects.nonNull(franchiseFee)) { |
|
|
if (Objects.nonNull(franchiseFee)) { |
|
|
if (!revenueReward.getHalfRecoveryRequirement()) { |
|
|
if (!revenueReward.getHalfRecoveryRequirement()) { |
|
|
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.SERVICE_PROVIDER_RECOVERY_HALF_PCT); |
|
|
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()) { |
|
|
if (!revenueReward.getAllRecoveryRequirement()) { |
|
|
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.SERVICE_PROVIDER_RECOVERY_ALL_PCT); |
|
|
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()); |
|
|
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId()); |
|
|
if (!storeRevenueReward.getAllRecoveryRequirement()) { |
|
|
if (!storeRevenueReward.getAllRecoveryRequirement()) { |
|
|
//未回本 拿100% 20%推荐费+50%门店费用+ 30%回本补贴 |
|
|
//未回本 拿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()); |
|
|
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId()); |
|
|
@ -286,14 +295,14 @@ public class RevenueRewardEventHandler extends BaseApplicationService { |
|
|
handle(storeReEvent); |
|
|
handle(storeReEvent); |
|
|
} else { |
|
|
} else { |
|
|
//回本后 拿70% 20%推荐费+50%门店费用 |
|
|
//回本后 拿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()); |
|
|
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId()); |
|
|
RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId()); |
|
|
RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId()); |
|
|
handle(storeReEvent); |
|
|
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()); |
|
|
RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId()); |
|
|
RevenueRewardUpdatedEvent operationCenterReEvent = new RevenueRewardUpdatedEvent(operationCenterRevenueReward.getId()); |
|
|
RevenueRewardUpdatedEvent operationCenterReEvent = new RevenueRewardUpdatedEvent(operationCenterRevenueReward.getId()); |
|
|
|