## 领导奖、平级奖计算;
This commit is contained in:
parent
a2a828d71a
commit
4ec7863084
|
@ -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<Long, CuMemberBonus> 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;
|
||||
|
|
|
@ -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<CuMemberBonusRange> 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<Integer, BdAwards> retailAwardsMap = new HashMap<>();
|
||||
Map<Integer, BdAwards> awardsMap = new HashMap<>();
|
||||
List<BdAwards> awardsList = bonusConfigDTO.getAwardsList();
|
||||
awardsList.forEach(bdAwards -> retailAwardsMap.put(bdAwards.getAwardsValue(), bdAwards));
|
||||
awardsList.forEach(bdAwards -> awardsMap.put(bdAwards.getAwardsValue(), bdAwards));
|
||||
|
||||
// 会员奖衔升级记录
|
||||
List<CuMemberAwards> 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<CuMemberBonusRange> calculateRetailRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
BonusConfigDTO bonusConfigDTO, Integer period,
|
||||
SaOrderWaresExt saOrderItems, SaOrderExt saOrderExt) {
|
||||
// 直推级差返回数据
|
||||
List<CuMemberBonusRange> 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<CuMemberBonusRange> calculateRetailRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
BonusConfigDTO bonusConfigDTO, Integer period, Map<Integer, BdAwards> awardsMap,
|
||||
SaOrderExt saOrderExt, CuMemberRetailRangeExt sourceMember) {
|
||||
// 直推级差返回数据
|
||||
List<CuMemberBonusRange> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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个点位订单金额
|
||||
*/
|
||||
|
|
|
@ -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天内的奖金!
|
||||
|
|
|
@ -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),
|
||||
|
||||
/**
|
||||
* 见点收益 -- 商城专区
|
||||
|
|
|
@ -57,6 +57,11 @@ public enum EOrderType {
|
|||
|
||||
RETAIL_PICK(46, "提货订单", 0),
|
||||
|
||||
/**
|
||||
* 五折专区
|
||||
*/
|
||||
DISCOUNT_ORDER(47, "五折专区", 0),
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
|
|
|
@ -50,6 +50,11 @@ public enum ESpecialArea {
|
|||
|
||||
RETAIL_TICKET(45, "自助购票", 0, 45, -1),
|
||||
|
||||
/**
|
||||
* 五折专区
|
||||
*/
|
||||
DISCOUNT_AREA(47, "五折专区", 0, 47, -1),
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue