Browse Source

新政策

release
张彭杰 11 months ago
parent
commit
d666c1dd94
1 changed files with 24 additions and 15 deletions
  1. 39
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java

39
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());

Loading…
Cancel
Save