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

Loading…
Cancel
Save