3
0
Fork 0

## 直推收益、平级收益处理;

This commit is contained in:
cabbage 2025-06-12 14:29:05 +08:00
parent 564fb2bf12
commit ec0006a40c
3 changed files with 164 additions and 214 deletions

View File

@ -77,8 +77,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 会员结算mapkey会员IDvalue结算扩展 // 会员结算mapkey会员IDvalue结算扩展
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>(); Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
// 购买升级等级mapkey:等级值value:等级对象
Map<Integer, BdGrade> retaiBuyGradeMap = new TreeMap<>();
// 团队升级等级mapkey:等级值value:等级对象 // 团队升级等级mapkey:等级值value:等级对象
Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>(); Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>();
// 等级mapkey:等级值value:等级对象 // 等级mapkey:等级值value:等级对象
@ -86,9 +84,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 等级列表 // 等级列表
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList(); List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
for (BdGrade bdGrade : retaiGradeList) { for (BdGrade bdGrade : retaiGradeList) {
if (bdGrade.getBoxNumber() > 0) {
retaiBuyGradeMap.put(bdGrade.getGradeValue(), bdGrade);
}
if (bdGrade.getBoxTotal() > 0) { if (bdGrade.getBoxTotal() > 0) {
retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade); retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade);
} }
@ -102,28 +97,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// 会员结算map不存在这个会员则为新会员没处理过需要处理
cuMemberRetailRangeExt.setBuyNum(0);
// TODO new 目前一次性补差升级不需要校验是不是当天了
cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue());
// if (cuMemberRetailRangeExt.getPayTime() != null && DateUtils.compareDateEqual(DateUtils.parseStringToDate(settleDate), cuMemberRetailRangeExt.getPayTime())) {
// cuMemberRetailRangeExt.setSameDate(EYesNo.YES.getIntValue());
// } else {
// cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue());
// }
for (Integer gradeValue : retaiBuyGradeMap.keySet()) {
BdGrade bdGrade = retaiBuyGradeMap.get(gradeValue);
if (bdGrade.getBoxNumber() > 0 && cuMemberRetailRangeExt.getGradeValue().equals(gradeValue)) {
// TODO new 一次性补差需要下个等级的盒数 - 当前等级盒数
cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber());
// if (cuMemberRetailRangeExt.getSameDate().equals(EYesNo.YES.getIntValue())) {
// cuMemberRetailRangeExt.setBuyNum(cuMemberRetailRangeExt.getNewBoxNum());
// } else {
// cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber());
// }
break;
}
}
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt); memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt);
} }
} }
@ -159,7 +132,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 计算团队业绩盒数计算等级奖衔 // 计算团队业绩盒数计算等级奖衔
cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeList)); cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeList));
// TODO new 奖金处理 // 奖金处理
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>(); List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()
@ -171,14 +144,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 计算直推级差收益 + 平级收益 // 计算直推级差收益 + 平级收益
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, currentPeriod, saOrderItems, saOrderExt)); cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, currentPeriod, saOrderItems, saOrderExt));
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() // 注册升级 并且有盒数商品算激活
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
// 注册升级计算是否激活
sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue()); sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue());
} }
} }
} }
}
// 查询区域配置 // 查询区域配置
Map<String, CuMemberRetailRangeExt> countyRangeExtMap = new HashMap<>(); Map<String, CuMemberRetailRangeExt> countyRangeExtMap = new HashMap<>();
@ -396,6 +366,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
/** /**
* 日结
* 计算新零售团队的奖金极差平级福利福利分红区域 * 计算新零售团队的奖金极差平级福利福利分红区域
*/ */
void calculateRetailBonusByDay(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO, void calculateRetailBonusByDay(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO,
@ -444,6 +415,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
Map<Integer, BdGrade> retaiBuyGradeMap = new TreeMap<>(); Map<Integer, BdGrade> retaiBuyGradeMap = new TreeMap<>();
// 团队升级等级mapkey:等级值value:等级对象 // 团队升级等级mapkey:等级值value:等级对象
Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>(); Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>();
// 等级mapkey:等级值value:等级对象
Map<Integer, BdGrade> gradeMap = new HashMap<>(); Map<Integer, BdGrade> gradeMap = new HashMap<>();
// 等级mapkey:等级IDvalue:等级对象 // 等级mapkey:等级IDvalue:等级对象
Map<Integer, BdGrade> gradeIdMap = new HashMap<>(); Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
@ -470,21 +442,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
cuMemberRetailRangeExt.setBuyNum(0); cuMemberRetailRangeExt.setBuyNum(0);
// TODO new 目前一次性补差升级不需要校验是不是当天了 // TODO new 目前一次性补差升级不需要校验是不是当天了
cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue()); cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue());
// if (cuMemberRetailRangeExt.getPayTime() != null && DateUtils.compareDateEqual(DateUtils.parseStringToDate(settleDate), cuMemberRetailRangeExt.getPayTime())) {
// cuMemberRetailRangeExt.setSameDate(EYesNo.YES.getIntValue());
// } else {
// cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue());
// }
for (Integer gradeValue : retaiBuyGradeMap.keySet()) { for (Integer gradeValue : retaiBuyGradeMap.keySet()) {
BdGrade bdGrade = retaiBuyGradeMap.get(gradeValue); BdGrade bdGrade = retaiBuyGradeMap.get(gradeValue);
if (bdGrade.getBoxNumber() > 0 && cuMemberRetailRangeExt.getGradeValue().equals(gradeValue)) { if (bdGrade.getBoxNumber() > 0 && cuMemberRetailRangeExt.getGradeValue().equals(gradeValue)) {
// TODO new 一次性补差需要下个等级的盒数 - 当前等级盒数 // TODO new 一次性补差需要下个等级的盒数 - 当前等级盒数
cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber()); cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber());
// if (cuMemberRetailRangeExt.getSameDate().equals(EYesNo.YES.getIntValue())) {
// cuMemberRetailRangeExt.setBuyNum(cuMemberRetailRangeExt.getNewBoxNum());
// } else {
// cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber());
// }
break; break;
} }
} }
@ -541,8 +503,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 计算团队业绩盒数计算等级奖衔 // 计算团队业绩盒数计算等级奖衔
cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, null, boxNum, cuMemberGradeList)); cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, null, boxNum, cuMemberGradeList));
// TODO new 奖金处理
// 计算奖金 直推级差 + 平级收益 // 计算奖金 直推级差 + 平级收益
if ((EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() if ((EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType())
@ -1308,20 +1268,20 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
// 推荐人 // 推荐人
long pkParent = sourceMemberRangeExt.getPkParent(); long pkParent = sourceMemberRangeExt.getPkParent();
// // 商品价格
// BigDecimal beginBuyPrice = saOrderItems.getWaresPrice();
// BigDecimal comBuyPrice = saOrderItems.getWaresPrice();
//
// // 开始计算等级值
// int beginGradeValue = sourceMemberRangeExt.getGradeValue();
// // 直推级差收益
// BigDecimal calBonusIncome = BigDecimal.ZERO;
// 商品价格没有乘商品数量 // 商品价格没有乘商品数量
BigDecimal waresPrice = saOrderItems.getWaresPrice(); BigDecimal waresPrice = saOrderItems.getWaresPrice();
// 商品数量 // 商品数量
Integer waresQuantity = saOrderItems.getWaresQuantity(); Integer waresQuantity = saOrderItems.getWaresQuantity();
// 商品价格
BigDecimal beginBuyPrice = saOrderItems.getWaresPrice();
BigDecimal comBuyPrice = saOrderItems.getWaresPrice();
// 开始计算等级值
int beginGradeValue = sourceMemberRangeExt.getGradeValue();
// 直推级差收益
BigDecimal calBonusIncome = BigDecimal.ZERO;
// 前一个会员等级 // 前一个会员等级
int beforeGradeValue = 0; int beforeGradeValue = 0;
// 前一个会员等级的平级收益人数 // 前一个会员等级的平级收益人数
@ -1348,6 +1308,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
// 当前会员等级值 // 当前会员等级值
int calGradeValue = targetMemberRangeExt.getGradeValue(); int calGradeValue = targetMemberRangeExt.getGradeValue();
// 当前会员等级
BdGrade bdGrade = gradeMap.get(calGradeValue);
// 直推级差税前收益 // 直推级差税前收益
BigDecimal rangeBonusIncome = null; BigDecimal rangeBonusIncome = null;
@ -1380,8 +1342,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// V1 没有平级收益 // V1 没有平级收益
continue; continue;
} }
if (beforeSameAlgebra >= RetailConstants.SAME_ALGEBRA) { if (beforeSameAlgebra >= bdGrade.getAlgebra()) {
// 平级收益已经满10代不继续处理平级收益 // 平级收益已经满10代不继续处理平级收益
if (EGrade.S_VIP.getValue() == beforeGradeValue) {
// 平级处理等级为最高级V5则结束处理
break;
}
continue; continue;
} }
// 平级收益商品价格 * 千分之五 -- 2位小数四舍五入 // 平级收益商品价格 * 千分之五 -- 2位小数四舍五入
@ -1448,135 +1414,127 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
memberBonusRangeList.add(oriMemberBonusRange); memberBonusRangeList.add(oriMemberBonusRange);
} }
/////////////////////////////////////////////////////////////// // // 如果价格是209代表是第一单激活只有平级收益只有V5有平级收益
// if (beginBuyPrice.equals(BigDecimal.valueOf(209))) {
// calGradeValue = EGrade.S_VIP.getValue();
// 如果价格是209代表是第一单激活只有平级收益只有V5有平级收益 // if (beginGradeValue < EGrade.S_VIP.getValue()) {
if (beginBuyPrice.equals(BigDecimal.valueOf(209))) { // beginGradeValue = EGrade.S_VIP.getValue();
calGradeValue = EGrade.S_VIP.getValue(); // }
if (beginGradeValue < EGrade.S_VIP.getValue()) { // }
beginGradeValue = EGrade.S_VIP.getValue(); // BdGrade bdGrade = gradeMap.get(calGradeValue);
} // BigDecimal buyPrice = bdGrade.getBuyPrice();
} // boolean isRange = Boolean.FALSE;
BdGrade bdGrade = gradeMap.get(calGradeValue); // // 有极差或者有平级
BigDecimal buyPrice = bdGrade.getBuyPrice(); // if (ComputeUtil.compareGreaterThan(beginBuyPrice, buyPrice)) {
boolean isRange = Boolean.FALSE; // // 计算极差
// 有极差或者有平级 // CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
if (ComputeUtil.compareGreaterThan(beginBuyPrice, buyPrice)) { // targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
// 计算极差 // int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue());
// CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), // cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); // cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(ComputeUtil.computeSubtract(ComputeUtil.computeSubtract(beginBuyPrice, buyPrice), calBonusIncome), saOrderItems.getWaresQuantity()), BigDecimal.ONE));
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue()); // cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); // cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
cuMemberBonusRange.setCalValue(BigDecimal.ZERO); // cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(ComputeUtil.computeSubtract(ComputeUtil.computeSubtract(beginBuyPrice, buyPrice), calBonusIncome), saOrderItems.getWaresQuantity()), BigDecimal.ONE)); // rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); // BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); // if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); // cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); // setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); // }
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) { // memberBonusRangeList.add(cuMemberBonusRange);
cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome())); //
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange); // beginBuyPrice = buyPrice;
} // comBuyPrice = buyPrice;
memberBonusRangeList.add(cuMemberBonusRange); // beginGradeValue = calGradeValue;
// sourceMemberRangeExt = targetMemberRangeExt;
beginBuyPrice = buyPrice; // calBonusIncome = BigDecimal.ZERO;
comBuyPrice = buyPrice; // } else {
beginGradeValue = calGradeValue; // isRange = Boolean.TRUE;
sourceMemberRangeExt = targetMemberRangeExt; // pkParent = targetMemberRangeExt.getPkMember();
calBonusIncome = BigDecimal.ZERO; // }
} else { // if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_CONSUME.getValue())) {
isRange = Boolean.TRUE; // if (isRange) {
pkParent = targetMemberRangeExt.getPkMember(); // pkParent = targetMemberRangeExt.getPkParent();
} // }
if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_CONSUME.getValue())) { // continue;
if (isRange) { // }
pkParent = targetMemberRangeExt.getPkParent(); // if (bdGrade.getAlgebra() > 0) {
} // Long lastPkParent = pkParent;
continue; // for (int j = 0; j < bdGrade.getAlgebra(); j++) {
} // targetMemberRangeExt = memberRangeExtMap.get(lastPkParent);
if (bdGrade.getAlgebra() > 0) { // if (targetMemberRangeExt == null) {
Long lastPkParent = pkParent; // if (memberRangeExtMap.get(pkParent) == null) {
for (int j = 0; j < bdGrade.getAlgebra(); j++) { // break;
targetMemberRangeExt = memberRangeExtMap.get(lastPkParent); // }
if (targetMemberRangeExt == null) { // pkParent = memberRangeExtMap.get(pkParent).getPkParent();
if (memberRangeExtMap.get(pkParent) == null) { // break;
break; // }
} // calGradeValue = targetMemberRangeExt.getGradeValue();
pkParent = memberRangeExtMap.get(pkParent).getPkParent(); // BigDecimal sameBuyPrice = gradeMap.get(calGradeValue).getBuyPrice();
break; // // 有平级
} // if (ComputeUtil.compareGreaterThan(sameBuyPrice, comBuyPrice)) {
calGradeValue = targetMemberRangeExt.getGradeValue();
BigDecimal sameBuyPrice = gradeMap.get(calGradeValue).getBuyPrice();
// 有平级
// if (calGradeValue < beginGradeValue) {
if (ComputeUtil.compareGreaterThan(sameBuyPrice, comBuyPrice)) {
lastPkParent = targetMemberRangeExt.getPkParent();
pkParent = targetMemberRangeExt.getPkParent();
j--;
continue;
}
if (ComputeUtil.compareGreaterThan(beginBuyPrice, sameBuyPrice)) {
pkParent = lastPkParent;
break;
// lastPkParent = targetMemberRangeExt.getPkParent(); // lastPkParent = targetMemberRangeExt.getPkParent();
// pkParent = targetMemberRangeExt.getPkParent();
// j--; // j--;
// continue; // continue;
} // }
lastPkParent = targetMemberRangeExt.getPkParent(); // if (ComputeUtil.compareGreaterThan(beginBuyPrice, sameBuyPrice)) {
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() || // pkParent = lastPkParent;
ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || // break;
targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() || // }
EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) { // lastPkParent = targetMemberRangeExt.getPkParent();
j--; // if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
continue; // ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
} // targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() ||
BigDecimal bonusIncome = BigDecimal.ZERO; // EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
if (j == 0) { // j--;
bonusIncome = bdGrade.getFirstAlgebra(); // continue;
} else if (j == 1) { // }
bonusIncome = bdGrade.getSecondAlgebra(); // BigDecimal bonusIncome = BigDecimal.ZERO;
} else if (j == 2) { // if (j == 0) {
bonusIncome = bdGrade.getThirdAlgebra(); // bonusIncome = bdGrade.getFirstAlgebra();
} // } else if (j == 1) {
if (ComputeUtil.compareEqual(beginBuyPrice, sameBuyPrice)) { // bonusIncome = bdGrade.getSecondAlgebra();
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), // } else if (j == 2) {
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); // bonusIncome = bdGrade.getThirdAlgebra();
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue()); // }
CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); // if (ComputeUtil.compareEqual(beginBuyPrice, sameBuyPrice)) {
oriMemberBonusRange.setCalValue(BigDecimal.valueOf(10)); // CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
oriMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(bonusIncome, saOrderItems.getWaresQuantity()), BigDecimal.ONE)); // targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); // int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue());
oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); // CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); // oriMemberBonusRange.setCalValue(BigDecimal.valueOf(10));
oriRetailRangeRemark(saOrderExt, oriMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); // oriMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(bonusIncome, saOrderItems.getWaresQuantity()), BigDecimal.ONE));
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, oriMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); // oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
if (EBonusIncomeStatus.NORMAL.getValue() == oriMemberBonusRange.getIncomeStatus()) { // oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), oriMemberBonusRange.getPretaxIncome())); // oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
setRetailTotal(bdBonusDeduct, cuMemberBonus, oriMemberBonusRange); // oriRetailRangeRemark(saOrderExt, oriMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
} // BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, oriMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
memberBonusRangeList.add(oriMemberBonusRange); // if (EBonusIncomeStatus.NORMAL.getValue() == oriMemberBonusRange.getIncomeStatus()) {
calBonusIncome = ComputeUtil.computeAdd(calBonusIncome, bonusIncome); // cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), oriMemberBonusRange.getPretaxIncome()));
pkParent = lastPkParent; // setRetailTotal(bdBonusDeduct, cuMemberBonus, oriMemberBonusRange);
} else { // }
j--; // memberBonusRangeList.add(oriMemberBonusRange);
} // calBonusIncome = ComputeUtil.computeAdd(calBonusIncome, bonusIncome);
if (j == bdGrade.getAlgebra() - 1) { // pkParent = lastPkParent;
beginGradeValue += 1; // } else {
comBuyPrice = ComputeUtil.computeSubtract(comBuyPrice, BigDecimal.ONE); // j--;
break; // }
} // if (j == bdGrade.getAlgebra() - 1) {
} // beginGradeValue += 1;
} else { // comBuyPrice = ComputeUtil.computeSubtract(comBuyPrice, BigDecimal.ONE);
if (isRange) { // break;
pkParent = targetMemberRangeExt.getPkParent(); // }
} // }
} // } else {
if (beginGradeValue > EGrade.S_VIP.getValue()) { // if (isRange) {
break; // pkParent = targetMemberRangeExt.getPkParent();
} // }
// }
// if (beginGradeValue > EGrade.S_VIP.getValue()) {
// break;
// }
} }
return memberBonusRangeList; return memberBonusRangeList;
} }

View File

@ -119,7 +119,8 @@
#{item.teamMonthAmount} team_month_amount, #{item.teamMonthPv} team_month_pv, #{item.teamMonthAmount} team_month_amount, #{item.teamMonthPv} team_month_pv,
#{item.teamNewPv} team_new_pv, #{item.teamNewAmount} team_new_amount, #{item.teamNewPv} team_new_pv, #{item.teamNewAmount} team_new_amount,
#{item.teamConsumePv} team_consume_pv, #{item.newBoxNum} new_box_num, #{item.teamConsumePv} team_consume_pv, #{item.newBoxNum} new_box_num,
#{item.recommendNum} recommend_num,#{item.teamNum} team_num,#{item.enableStatus} enable_status #{item.recommendNum} recommend_num, #{item.teamNum} team_num,
#{item.enableStatus} enable_status
from dual from dual
</foreach> </foreach>
) b ) b
@ -190,18 +191,18 @@
using ( using (
<foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union"> <foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union">
select #{item.pkMember} pk_member, #{item.pkGrade} pk_grade, #{item.pkAwards} pk_awards, select #{item.pkMember} pk_member, #{item.pkGrade} pk_grade, #{item.pkAwards} pk_awards,
#{item.newConsumePv} new_consume_pv, #{item.teamNewAmount} team_new_amount, #{item.newBoxNum} new_box_num, #{item.newConsumePv} new_consume_pv,
#{item.teamNewPv} team_new_pv, #{item.teamNewBoxNum} team_new_box_num, #{item.teamNewBoxNum} team_new_box_num, #{item.teamNewPv} team_new_pv,
#{item.newBoxNum} new_box_num, #{item.enableStatus} enable_status #{item.teamNewAmount} team_new_amount, #{item.enableStatus} enable_status
from dual from dual
</foreach> </foreach>
) b ) b
on (a.pk_member = b.pk_member) on (a.pk_member = b.pk_member)
when matched then when matched then
update set a.pk_grade = b.pk_grade, a.pk_awards = b.pk_awards, update set a.pk_grade = b.pk_grade, a.pk_awards = b.pk_awards,
a.new_consume_pv = b.new_consume_pv, a.team_new_amount = b.team_new_amount, a.new_box_num = b.new_box_num, a.new_consume_pv = b.new_consume_pv,
a.team_new_pv = b.team_new_pv, a.team_new_box_num = b.team_new_box_num, a.team_new_box_num = b.team_new_box_num,a.team_new_pv = b.team_new_pv,
a.new_box_num = b.new_box_num, a.enable_status = b.enable_status a.team_new_amount = b.team_new_amount,a.enable_status = b.enable_status
</update> </update>
<update id="mergeMemberRetailGradeByMember"> <update id="mergeMemberRetailGradeByMember">

View File

@ -17,15 +17,6 @@ public class RetailConstants {
* 直推平级收益比例每代拿商品价格的千分之五 * 直推平级收益比例每代拿商品价格的千分之五
*/ */
public static final BigDecimal SAME_RATIO = new BigDecimal("0.005"); public static final BigDecimal SAME_RATIO = new BigDecimal("0.005");
/**
* 直推平缓收益代数每级都是10代
*/
public static final Integer SAME_ALGEBRA = 10;
/**
* 区域分红每盒2元
*/
public static final BigDecimal AREA_BOX_BONUS = new BigDecimal("2");
/** /**
* 盒数产品列表 * 盒数产品列表