From 4ec7863084ddb7326edf9dfb52bda839f45b0003 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Sun, 28 Sep 2025 18:03:21 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E9=A2=86=E5=AF=BC=E5=A5=96=E3=80=81?= =?UTF-8?q?=E5=B9=B3=E7=BA=A7=E5=A5=96=E8=AE=A1=E7=AE=97=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/service/impl/BonusSettleHandle.java | 45 +--- .../service/impl/BonusSettleRangeHandle.java | 213 +++++++++--------- .../hzs/bonus/constant/BonusConstants.java | 5 + .../core/constant/msg/BonusMsgConstants.java | 11 +- .../hzs/common/core/enums/EBonusItems.java | 8 +- .../com/hzs/common/core/enums/EOrderType.java | 5 + .../hzs/common/core/enums/ESpecialArea.java | 5 + .../domain/member/bonus/CuMemberBonus.java | 4 +- 8 files changed, 144 insertions(+), 152 deletions(-) diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java index 106d74a0..42794bef 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java @@ -77,12 +77,11 @@ public abstract class BonusSettleHandle { cuMemberBonusPush.setRemark(remark); } - /** * 获得 阶段收益 备注 */ protected void stageIncomeRemark(SaOrderExt saOrderExt, CuMemberBonusStage cuMemberBonusStage, - CuMemberRetailRangeExt sourceMember, CuMemberRetailRangeExt targetMember) { + CuMemberRetailRangeExt sourceMember, CuMemberRetailRangeExt targetMember) { String remark; if (null != saOrderExt) { remark = String.format(BonusMsgConstants.STAGE_INCOME, saOrderExt.getOrderCode(), @@ -98,60 +97,32 @@ public abstract class BonusSettleHandle { cuMemberBonusStage.setRemark(remark); } - /** * 获得 直推级差收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusRange 报单服务费 - * @param sourceMemberRangeExt 提供奖金的人 - * @param targetMemberRangeExt 获得奖金的人 */ protected void rangeRetailRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, CuMemberRetailRangeExt targetMemberRangeExt) { String remark = String.format(BonusMsgConstants.RANGE, saOrderExt.getOrderCode(), sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), - cuMemberBonusRange.getCalAchieve(), sourceMemberRangeExt.getGradeName(), targetMemberRangeExt.getGradeName()); + cuMemberBonusRange.getCalAchieve(), sourceMemberRangeExt.getAwardsName(), targetMemberRangeExt.getAwardsName()); cuMemberBonusRange.setRemark(remark); } /** * 获得 平级收益的备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusRange 报单服务费 - * @param sourceMemberRangeExt 提供奖金的人 - * @param targetMemberRangeExt 获得奖金的人 */ - protected void oriRetailRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, - CuMemberRetailRangeExt targetMemberRangeExt) { - String remark = String.format(BonusMsgConstants.ORI_RANGE, saOrderExt.getOrderCode(), + protected void saveLevelRetailRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, + CuMemberRetailRangeExt targetMemberRangeExt) { + String remark = String.format(BonusMsgConstants.SAME_LEVEL, saOrderExt.getOrderCode(), sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), - cuMemberBonusRange.getCalAchieve(), targetMemberRangeExt.getGradeName()); - cuMemberBonusRange.setRemark(remark); - } - - /** - * 获得 复购极差收益 备注 - * - * @param saOrderExt 订单编号 - * @param cuMemberBonusRange 报单服务费 - * @param sourceMemberRangeExt 提供奖金的人 - * @param targetMemberRangeExt 获得奖金的人 - */ - protected void rangeRepurchaseRetailRemark(SaOrder saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, - CuMemberRetailRangeExt targetMemberRangeExt) { - String remark = String.format(BonusMsgConstants.RETAIL_REPURCHASE_INCOME, saOrderExt.getOrderCode(), - sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), - targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), - cuMemberBonusRange.getCalAchieve(), targetMemberRangeExt.getGradeName()); + cuMemberBonusRange.getCalAchieve(), targetMemberRangeExt.getAwardsName()); cuMemberBonusRange.setRemark(remark); } public CuMemberBonus getCuMemberBonus(Integer period, Map cuMemberBonusMap, - Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) { + Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) { if (cuMemberBonusMap.containsKey(pkMember)) { return cuMemberBonusMap.get(pkMember); } else { @@ -256,7 +227,7 @@ public abstract class BonusSettleHandle { ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.INCOME_TAX, incomeTax); ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.REAL_INCOME, realIncome); // 收益占比 - if (null != orderAmount && null != exchangeRate) { + if (null != orderAmount && null != exchangeRate) { ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.INCOME_RATIO, ComputeUtil.computeDivide(realIncome, ComputeUtil.computeDivide(orderAmount, exchangeRate))); } return bdBonusDeduct; diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java index cb7a5263..7f73f61e 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java @@ -22,7 +22,6 @@ import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.bonus.*; import com.hzs.common.domain.member.detail.*; import com.hzs.common.domain.sale.ext.SaOrderExt; -import com.hzs.common.domain.sale.ext.SaOrderWaresExt; import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.system.config.BdAwards; import com.hzs.system.config.dto.BonusConfigDTO; @@ -102,16 +101,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 奖金处理 List cuMemberBonusRangeList = new ArrayList<>(); -// if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()) { -// // 注册,计算奖金: 直推级差收益 + 平级收益 -// for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) { -// if (EDelFlag.UN_DELETE.getValue() == saOrderItems.getDelFlag()) { -// // 指定盒数商品 -// // 计算直推级差收益 + 平级收益 -// cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, currentPeriod, saOrderItems, saOrderExt)); -// } -// } -// } + if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()) { + // 注册,计算奖金: 直推级差收益 + 平级收益 + } if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { // 复购订单 @@ -308,9 +300,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.ONE, EBonusStageStatus.NO, null); // 奖衔 - Map retailAwardsMap = new HashMap<>(); + Map awardsMap = new HashMap<>(); List awardsList = bonusConfigDTO.getAwardsList(); - awardsList.forEach(bdAwards -> retailAwardsMap.put(bdAwards.getAwardsValue(), bdAwards)); + awardsList.forEach(bdAwards -> awardsMap.put(bdAwards.getAwardsValue(), bdAwards)); // 会员奖衔升级记录 List cuMemberAwardsList = new ArrayList<>(); @@ -342,7 +334,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // // 自己计算奖衔,目前业绩都只往下传,所以此处暂时不需要处理订单会员的奖衔 // this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember); // 累计团队业绩、金额 + 计算奖衔 - cuMemberAwardsList.addAll(this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, retailAwardsMap)); + cuMemberAwardsList.addAll(this.calculateParentAwards(period, memberRangeExtMap, rangeTableName, sourceMember, saOrderExt, awardsMap)); if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { @@ -357,8 +349,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period, memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName)); - // TODO 领导级差收益 -- 来源PV - // TODO 领导平差收益 -- 来源PV + // TODO 领导级差收益、平级收益 -- 来源PV + + } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) { // 商城专区 sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve)); @@ -371,6 +364,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period, memberRangeExtMap, sourceMember, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName)); + // TODO 领导级差收益、平级收益 -- 来源PV + } } @@ -512,98 +507,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } - - /** - * 计算直推级差收益,根据直推级差收益计算平级收益 - */ - List calculateRetailRangeBonus(Map memberRangeExtMap, Map cuMemberBonusMap, - BonusConfigDTO bonusConfigDTO, Integer period, - SaOrderWaresExt saOrderItems, SaOrderExt saOrderExt) { - // 直推级差返回数据 - List memberBonusRangeList = new ArrayList<>(); - - // 订单下单人自己 - CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); - // 推荐人 - long pkParent = sourceMemberRangeExt.getPkParent(); - - // 商品最终价格(总价,带数量的价格) - BigDecimal waresPrice = saOrderItems.getWaresPrice(); - - // 计算直推级差 - while (true) { - // 推荐人 - CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent); - if (targetMemberRangeExt == null) { - break; - } - // 推荐人的推荐人 - pkParent = targetMemberRangeExt.getPkParent(); - - if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() - || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() - || EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) { - // 停算收益、非正常会员、未激活、停止收益,直接跳过 - continue; - } - // 直推级差税前收益 - BigDecimal rangeBonusIncome = null; - // 平级税前收益 - BigDecimal sameBonusIncome = null; - - if (null != rangeBonusIncome) { - // 处理直推级差收益 - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), - targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); - int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.DIRECT_INCOME.getValue()); - CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); - cuMemberBonusRange.setCalValue(BigDecimal.ZERO); - cuMemberBonusRange.setCalAchieve(waresPrice); - cuMemberBonusRange.setPretaxIncome(rangeBonusIncome); - cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); - cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); - cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); - rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) { -// cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome())); - setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange); - } - memberBonusRangeList.add(cuMemberBonusRange); - } - if (null != sameBonusIncome) { - // 处理平级收益 - CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), - targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); - int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.SAME_LEVEL_INCOME.getValue()); - CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); - oriMemberBonusRange.setCalValue(RetailConstants.SAME_RATIO); - oriMemberBonusRange.setCalAchieve(waresPrice); - oriMemberBonusRange.setPretaxIncome(sameBonusIncome); - oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); - oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); - oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); - oriRetailRangeRemark(saOrderExt, oriMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); - BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, oriMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); - if (EBonusIncomeStatus.NORMAL.getValue() == oriMemberBonusRange.getIncomeStatus()) { -// cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), oriMemberBonusRange.getPretaxIncome())); - setRetailTotal(bdBonusDeduct, cuMemberBonus, oriMemberBonusRange); - } - memberBonusRangeList.add(oriMemberBonusRange); - } - } - return memberBonusRangeList; - } - private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt, CuMemberBonus cuMemberBonus, Integer pkBonusItems) { CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder() .pkBonus(cuMemberBonus.getPkId()) - .incomeStatus(targetMemberRangeExt.getIncomeStatus()) .pkOrder(saOrderExt.getPkId()) + .pkOrderItems(0L) .pkBonusItems(pkBonusItems) + .incomeStatus(targetMemberRangeExt.getIncomeStatus()) + .calType(ECalType.RATIO.getValue()) .calAchieve(saOrderExt.getOrderAchieve()) - .calType(ECalType.VALUE.getValue()) .calValue(BigDecimal.ZERO) .incomeRatio(BigDecimal.ZERO) .incomeDialRatio(BigDecimal.ZERO) @@ -1184,4 +1097,102 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return cuMemberAwardsList; } + + /** + * 计算领导奖、平级奖 + */ + List calculateRetailRangeBonus(Map memberRangeExtMap, Map cuMemberBonusMap, + BonusConfigDTO bonusConfigDTO, Integer period, Map awardsMap, + SaOrderExt saOrderExt, CuMemberRetailRangeExt sourceMember) { + // 直推级差返回数据 + List memberBonusRangeList = new ArrayList<>(); + + // 订单PV + BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); + + // 领导奖从自己开始算 + long pkParent = sourceMember.getPkMember(); + + // 前一个会员奖衔 + int beforeAwardsValue = 0; + // 前一个会员级差比例 + BigDecimal beforeRangeRatio = BigDecimal.ZERO; + // 前一个会员等级的平级收益人数 + int beforeSameAlgebra = 0; + // 计算直推级差 + while (true) { + // 推荐人 + CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(pkParent); + if (targetMember == null) { + break; + } + // 推荐人的推荐人 + pkParent = targetMember.getPkParent(); + + if (ECategory.NORMAL.getValue() != targetMember.getCategory() + || EIncomeStatus.STOP_INCOME.getValue() == targetMember.getIncomeStatus()) { + // 非正常会员、停止收益,直接跳过 + continue; + } + // 当前会员奖衔值 + int calAwardsValue = targetMember.getAwardsValue(); + // 当前会员奖衔 + BdAwards bdAwards = awardsMap.get(calAwardsValue); + + // 领导奖级差税前收益 + BigDecimal rangeBonusIncome = null; + // 领导奖平级税前收益 + BigDecimal sameBonusIncome = null; + + if (calAwardsValue > beforeAwardsValue) { + // 当前会员奖衔值大于前一个奖衔值,会有领导奖级差 + beforeRangeRatio = bdAwards.getRangeRatio().subtract(beforeRangeRatio); + rangeBonusIncome = orderAchieve.multiply(beforeRangeRatio); + } else if (EAwards.GLOBAL_CHAIRMAN.getValue() == beforeAwardsValue && beforeSameAlgebra < 3) { + // 前一个等级是皇冠大使,需要有3代平级 + sameBonusIncome = orderAchieve.multiply(BonusConstants.SAME_LEVEL_RATIO).multiply(bdAwards.getSameLevelRatio()); + beforeSameAlgebra += 1; + } + + if (null != rangeBonusIncome) { + // 处理领导奖收益 + CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMember.getPkMember(), + targetMember.getIncomeStatus(), targetMember.getPkSettleCountry(), targetMember.getPkRate() == null ? saOrderExt.getPkRate() : targetMember.getPkRate()); + int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMember.getPkSettleCountry(), EBonusItems.RANGE_INCOME.getValue()); + CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMember, cuMemberBonus, pkBonusItems); + cuMemberBonusRange.setCalValue(bdAwards.getRangeRatio()); + cuMemberBonusRange.setPkRange(targetMember.getPkAwards()); + cuMemberBonusRange.setPkBeforeRange(sourceMember.getPkAwards()); + cuMemberBonusRange.setPretaxIncome(rangeBonusIncome); + rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMember, targetMember); + BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); + if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) { + cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome())); + setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange); + } + memberBonusRangeList.add(cuMemberBonusRange); + } + if (null != sameBonusIncome) { + // 处理平级奖收益 + CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMember.getPkMember(), + targetMember.getIncomeStatus(), targetMember.getPkSettleCountry(), targetMember.getPkRate() == null ? saOrderExt.getPkRate() : targetMember.getPkRate()); + int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMember.getPkSettleCountry(), EBonusItems.SAME_LEVEL_INCOME.getValue()); + CuMemberBonusRange sameLevelMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMember, cuMemberBonus, pkBonusItems); + sameLevelMemberBonusRange.setCalValue(BonusConstants.SAME_LEVEL_RATIO.multiply(bdAwards.getSameLevelRatio())); + sameLevelMemberBonusRange.setPkRange(targetMember.getPkAwards()); + sameLevelMemberBonusRange.setPkBeforeRange(sourceMember.getPkAwards()); + sameLevelMemberBonusRange.setPretaxIncome(sameBonusIncome); + saveLevelRetailRangeRemark(saOrderExt, sameLevelMemberBonusRange, sourceMember, targetMember); + BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, sameLevelMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); + if (EBonusIncomeStatus.NORMAL.getValue() == sameLevelMemberBonusRange.getIncomeStatus()) { + cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), sameLevelMemberBonusRange.getPretaxIncome())); + setRetailTotal(bdBonusDeduct, cuMemberBonus, sameLevelMemberBonusRange); + } + memberBonusRangeList.add(sameLevelMemberBonusRange); + } + } + return memberBonusRangeList; + } + + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/constant/BonusConstants.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/constant/BonusConstants.java index 5aaa477a..6bd88d2f 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/constant/BonusConstants.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/constant/BonusConstants.java @@ -10,6 +10,11 @@ import java.util.*; public class BonusConstants { + /** + * 领导平级奖金为3个2%的10% + */ + public static final BigDecimal SAME_LEVEL_RATIO = new BigDecimal("0.02"); + /** * 赠送2个点位订单金额 */ diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java index 9424bce2..fd91ff40 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java @@ -25,19 +25,14 @@ public class BonusMsgConstants { public static String STAGE_INCOME_OTHER = "%s为%s贡献了阶段收益,%s子点位%s阶段。"; /** - * 直推级差收益说明 + * 领导奖收益 */ - public static String RANGE = "订单编号%s,%s为%s贡献了直推级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。"; + public static String RANGE = "订单编号%s,%s为%s贡献了领导奖收益,计算金额%f,前一级差奖衔名称%s,当前奖衔名称%s。"; /** * 平级收益 */ - public static String ORI_RANGE = "订单编号%s,%s为%s贡献了平级收益,计算业绩%f,等级名称%s。"; - - /** - * 复购级差 - */ - public static String RETAIL_REPURCHASE_INCOME = "订单编号%s,%s为%s贡献了复购级差收益,计算金额%f,当前级差等级名称%s。"; + public static String SAME_LEVEL = "订单编号%s,%s为%s贡献了平级收益,计算业绩%f,奖衔名称名称%s。"; /** * 奖金重算 -- 只能重算7天内的奖金! diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EBonusItems.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EBonusItems.java index 9b864df7..5a86e784 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EBonusItems.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EBonusItems.java @@ -27,13 +27,13 @@ public enum EBonusItems { STAGE_INCOME(21, "阶段收益", 0), /** - * 领导奖金收益 -- 精品专区、商城专区 + * 领导奖收益 -- 精品专区、商城专区 */ - RANGE_INCOME(22, "领导奖金收益", 0), + RANGE_INCOME(22, "领导奖收益", 0), /** - * 平级奖金收益 -- 精品专区、商城专区 + * 平级奖收益 -- 精品专区、商城专区 */ - SAME_LEVEL_INCOME(23, "平级奖金收益", 0), + SAME_LEVEL_INCOME(23, "平级奖收益", 0), /** * 见点收益 -- 商城专区 diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderType.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderType.java index 5da35db7..7e13d1f6 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderType.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderType.java @@ -57,6 +57,11 @@ public enum EOrderType { RETAIL_PICK(46, "提货订单", 0), + /** + * 五折专区 + */ + DISCOUNT_ORDER(47, "五折专区", 0), + ; /** diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESpecialArea.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESpecialArea.java index 5eadc300..5b90835e 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESpecialArea.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESpecialArea.java @@ -50,6 +50,11 @@ public enum ESpecialArea { RETAIL_TICKET(45, "自助购票", 0, 45, -1), + /** + * 五折专区 + */ + DISCOUNT_AREA(47, "五折专区", 0, 47, -1), + ; /** diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/bonus/CuMemberBonus.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/bonus/CuMemberBonus.java index 3e8d8ded..743b7fd8 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/bonus/CuMemberBonus.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/bonus/CuMemberBonus.java @@ -224,13 +224,13 @@ public class CuMemberBonus extends BaseEntity { private BigDecimal makerRealSubtotal; /** - * 新零售直推收益 + * 领导奖级差收益 */ @TableField("RETAIL_RANGE_INCOME") private BigDecimal retailRangeIncome; /** - * 新零售平级收益 + * 领导奖平级收益 */ @TableField("RETAIL_SAME_LEVEL_INCOME") private BigDecimal retailSameLevelIncome;