|
|
|
@ -57,7 +57,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
private IBonusOrderService iBonusOrderService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 实时计算当月奖衔
|
|
|
|
|
* 实时计算秒结数据(业绩、盒数、等级、奖衔、日奖)
|
|
|
|
|
*/
|
|
|
|
|
List<CuMemberBonusRange> calculateCuMemberRetailRangeBonusBySecond(String settleDate, SaOrderExt saOrderExt, BonusConfigDTO bonusConfigDTO,
|
|
|
|
|
String secondRangeTableName, int beforePeriod, int currentPeriod,
|
|
|
|
@ -191,7 +191,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 回退会员等级
|
|
|
|
|
iCuMemberGradeService.updateCuMemberGrade(secondRangeTableName, saOrderExt.getPkId());
|
|
|
|
|
if (cuMemberGradeList.size() > 0) {
|
|
|
|
@ -215,32 +214,43 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 实时计算当月奖衔
|
|
|
|
|
* 实时计算撤单数据(业绩、盒数、等级、奖衔、日奖)
|
|
|
|
|
*/
|
|
|
|
|
void calculateCuMemberBackRetailIncome(SaOrderExt saOrderExt, BonusConfigDTO bonusConfigDTO,
|
|
|
|
|
String secondRangeTableName, int beforePeriod, int currentPeriod) {
|
|
|
|
|
// 当天的撤单
|
|
|
|
|
List<CuMemberRetailRangeExt> memberRetailRangeExtList;
|
|
|
|
|
String rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + beforePeriod;
|
|
|
|
|
|
|
|
|
|
if (DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) {
|
|
|
|
|
// 按照血缘,查询该会员所有伞上会员
|
|
|
|
|
// 当天撤单
|
|
|
|
|
// 实时网体查询血缘伞上会员,更新秒结表等级、奖衔
|
|
|
|
|
iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(secondRangeTableName, saOrderExt.getPkMember());
|
|
|
|
|
// 恢复奖衔
|
|
|
|
|
// 恢复秒结表奖衔
|
|
|
|
|
iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod);
|
|
|
|
|
// 查询 昨天日结 + 今天秒结 血缘上会员结算数据
|
|
|
|
|
memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeParent(rangeTableName, secondRangeTableName, saOrderExt.getPkMember());
|
|
|
|
|
} else {
|
|
|
|
|
// 非当天撤单
|
|
|
|
|
rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + currentPeriod;
|
|
|
|
|
List<SaOrderExt> retailOrderList = new ArrayList<>();
|
|
|
|
|
retailOrderList.add(saOrderExt);
|
|
|
|
|
// 实时网体查询血缘上会员,更新订单支付日结表等级、奖衔
|
|
|
|
|
iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(rangeTableName, saOrderExt.getPkMember());
|
|
|
|
|
// 恢复奖衔
|
|
|
|
|
// 恢复日结表奖衔
|
|
|
|
|
iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod);
|
|
|
|
|
// 查询 订单下单日结 血缘上会员结算数据
|
|
|
|
|
memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 会员结算map(key:会员ID,value:结算扩展)
|
|
|
|
|
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
// 团队升级等级map(key:等级值,value:等级对象)
|
|
|
|
|
Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>();
|
|
|
|
|
// 等级map(key:等级ID,value:等级对象)
|
|
|
|
|
Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
|
|
|
|
|
// 等级列表
|
|
|
|
|
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
|
|
|
|
|
// 等级
|
|
|
|
|
for (BdGrade bdGrade : retaiGradeList) {
|
|
|
|
@ -249,18 +259,20 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
}
|
|
|
|
|
gradeIdMap.put(bdGrade.getPkId(), bdGrade);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 奖衔map(key:奖衔值,value:奖衔对象)
|
|
|
|
|
Map<Integer, BdAwards> retailAwardsMap = new HashMap<>();
|
|
|
|
|
List<BdAwards> awardsList = bonusConfigDTO.getAwardsList();
|
|
|
|
|
awardsList.forEach(bdAwards -> retailAwardsMap.put(bdAwards.getAwardsValue(), bdAwards));
|
|
|
|
|
|
|
|
|
|
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
|
|
|
|
|
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
|
|
|
|
cuMemberRetailRangeExt.setBuyNum(0);
|
|
|
|
|
// 转换等级购买数量
|
|
|
|
|
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Map<String, CuMemberGrade> cuMemberGradeMap = new HashMap<>();
|
|
|
|
|
Map<String, CuMemberAwards> cuMemberAwardsMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
// 计算自消费奖衔
|
|
|
|
|
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
|
|
|
|
// 先算等级 注册、升级计算等级
|
|
|
|
|
int boxNum = 0;
|
|
|
|
@ -272,23 +284,32 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
saOrderExt.setBoxNum(boxNum);
|
|
|
|
|
|
|
|
|
|
// 订单业绩
|
|
|
|
|
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
|
|
|
|
|
// if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_REGISTER.getValue()) ||
|
|
|
|
|
// saOrderExt.getOrderType().equals(EOrderType.RETAIL_UPGRADE.getValue())) {
|
|
|
|
|
// orderAchieve = BigDecimal.ZERO;
|
|
|
|
|
// }else{
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
// 个人累计消费pv
|
|
|
|
|
if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()
|
|
|
|
|
|| EOrderType.RETAIL_CONSUME.getValue() == saOrderExt.getOrderType()
|
|
|
|
|
) {
|
|
|
|
|
// 复购、重消,盒数、业绩算个人累计数据(盒数、业绩)
|
|
|
|
|
sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() - boxNum);
|
|
|
|
|
sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() - boxNum);
|
|
|
|
|
sourceMemberRangeExt.setConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getConsumePv(), orderAchieve));
|
|
|
|
|
sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve));
|
|
|
|
|
sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getNewConsumePv(), orderAchieve));
|
|
|
|
|
// 团队业绩,计算奖衔
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 会员等级map
|
|
|
|
|
Map<String, CuMemberGrade> cuMemberGradeMap = new HashMap<>();
|
|
|
|
|
// 会员奖衔map
|
|
|
|
|
Map<String, CuMemberAwards> cuMemberAwardsMap = new HashMap<>();
|
|
|
|
|
// 计算自己等级、奖衔等
|
|
|
|
|
calculateBackGrade(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, sourceMemberRangeExt);
|
|
|
|
|
// 计算团队业绩、盒数,计算等级、奖衔
|
|
|
|
|
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap);
|
|
|
|
|
cuMemberRetailRangeExtList.add(sourceMemberRangeExt);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查询期间的等级和奖衔
|
|
|
|
|
List<CuMemberGrade> memberGradeList = iCuMemberGradeService.queryCuMemberGrade(cuMemberRetailRangeExtList, currentPeriod);
|
|
|
|
|
// 查询最大的手动奖衔
|
|
|
|
@ -926,7 +947,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
// 如果等级值 大于 当前会员等级值 并且 等级要求累计盒数 小于等于 团队累计盒数 + 累计消费盒数,则可以进行升级
|
|
|
|
|
if (bdGrade.getGradeValue() > targetMemberRangeExt.getGradeValue()
|
|
|
|
|
&& bdGrade.getBoxTotal() <= (targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum())) {
|
|
|
|
|
|
|
|
|
|
// 验证小区,计算小区累计盒数 查询伞下会员
|
|
|
|
|
List<CuMemberRetailRangeExt> cuMemberRangeExtList;
|
|
|
|
|
if (secondRangeTableName != null) {
|
|
|
|
@ -982,7 +1002,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
// 先验证累计业绩
|
|
|
|
|
// new 升级奖衔判断为当月累计业绩,累计业绩为团队业绩 + 个人消费业绩
|
|
|
|
|
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getTotalCheck())) {
|
|
|
|
|
// 累计业绩足够
|
|
|
|
|
// 累计业绩足够,即可升奖衔
|
|
|
|
|
// BigDecimal consumeBigPv = BigDecimal.ZERO;
|
|
|
|
|
// if (ComputeUtil.compareValue(bdAwards.getCommunityCheck())) {
|
|
|
|
|
// // 验证小区,计算小区业绩
|
|
|
|
@ -1002,12 +1022,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// // new 新制度奖衔不校验小区
|
|
|
|
|
// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), consumeBigPv);
|
|
|
|
|
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) {
|
|
|
|
|
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue()));
|
|
|
|
|
targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue());
|
|
|
|
|
targetMemberRangeExt.setPkAwards(bdAwards.getPkId());
|
|
|
|
|
targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue());
|
|
|
|
|
targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName());
|
|
|
|
|
continue;
|
|
|
|
|
// }
|
|
|
|
@ -1075,11 +1094,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
public List<CuMemberRetailRangeExt> calculateRetailBackRangeGradeAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt,
|
|
|
|
|
Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap, String secondRangeTableName,
|
|
|
|
|
Integer boxNum, Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap) {
|
|
|
|
|
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
|
|
|
|
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(sourceMemberRangeExt.getPkParent());
|
|
|
|
|
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = new ArrayList<>();
|
|
|
|
|
// 订单会员
|
|
|
|
|
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
|
|
|
|
// 订单会员的推荐人
|
|
|
|
|
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(sourceMemberRangeExt.getPkParent());
|
|
|
|
|
|
|
|
|
|
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
|
|
|
|
|
BigDecimal orderAmount = saOrderExt.getOrderAmount();
|
|
|
|
|
while (targetMemberRangeExt != null) {
|
|
|
|
|
// 激活的账号才能累计业绩和盒数(有注册、升级订单)
|
|
|
|
|
if (targetMemberRangeExt.getEnableStatus() == EYesNo.YES.getIntValue()) {
|
|
|
|
|
// 累计业绩
|
|
|
|
|
targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount));
|
|
|
|
|
targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve));
|
|
|
|
@ -1087,14 +1112,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), orderAchieve));
|
|
|
|
|
targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount));
|
|
|
|
|
targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewPv(), orderAchieve));
|
|
|
|
|
while (targetMemberRangeExt != null) {
|
|
|
|
|
// 累计盒数
|
|
|
|
|
if (targetMemberRangeExt.getEnableStatus() == EYesNo.YES.getIntValue()) {
|
|
|
|
|
targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum);
|
|
|
|
|
targetMemberRangeExt.setMonthBoxNum(targetMemberRangeExt.getMonthBoxNum() - boxNum);
|
|
|
|
|
targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum() - boxNum);
|
|
|
|
|
cuMemberRetailRangeExtList.add(targetMemberRangeExt);
|
|
|
|
|
// 计算等级
|
|
|
|
|
calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, targetMemberRangeExt);
|
|
|
|
|
cuMemberRetailRangeExtList.add(targetMemberRangeExt);
|
|
|
|
|
}
|
|
|
|
|
// 计算等级
|
|
|
|
|
targetMemberRangeExt = memberRangeExtMap.get(targetMemberRangeExt.getPkParent());
|
|
|
|
@ -1102,34 +1126,51 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
return cuMemberRetailRangeExtList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void calculateBackGrade(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap, String secondRangeTableName, Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap, CuMemberRetailRangeExt targetMemberRangeExt) {
|
|
|
|
|
private void calculateBackGrade(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
|
|
|
|
|
SaOrderExt saOrderExt, Map<Integer, BdGrade> retailTeamGradeMap, Map<Integer, BdAwards> retailAwardsMap,
|
|
|
|
|
String secondRangeTableName, Map<String, CuMemberGrade> cuMemberGradeMap, Map<String, CuMemberAwards> cuMemberAwardsMap,
|
|
|
|
|
CuMemberRetailRangeExt targetMemberRangeExt) {
|
|
|
|
|
// 遍历团队等级map(V4,V5)
|
|
|
|
|
for (Integer gradeValue : retailTeamGradeMap.keySet()) {
|
|
|
|
|
BdGrade bdGrade = retailTeamGradeMap.get(gradeValue);
|
|
|
|
|
|
|
|
|
|
if (bdGrade.getBoxTotal() <= (targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum())) {
|
|
|
|
|
// 验证小区,计算小区累计盒数 查询伞下会员
|
|
|
|
|
List<CuMemberRetailRangeExt> cuMemberRangeExtList;
|
|
|
|
|
if (secondRangeTableName != null) {
|
|
|
|
|
// 秒结表关联昨日结算表,查询订单会员直推数据
|
|
|
|
|
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
|
|
|
|
|
} else {
|
|
|
|
|
// 昨日结算表,查询订单会员直推数据
|
|
|
|
|
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 有注水的,大区无限大,新增全算小区
|
|
|
|
|
// 大区盒数
|
|
|
|
|
int bigBoxNum = targetMemberRangeExt.getConsumeBoxNum();
|
|
|
|
|
if (targetMemberRangeExt.getBigBoxNum() > 0) {
|
|
|
|
|
// 大区存在注水盒数,直接使用大区注水盒数
|
|
|
|
|
bigBoxNum = targetMemberRangeExt.getBigBoxNum();
|
|
|
|
|
} else {
|
|
|
|
|
// 秒结 cuMemberRangeExtList 为直推会员数据, memberRangeExtMap 为会员伞上数据,这块应该永远不会处理
|
|
|
|
|
// 日结这块处理直推判断大小区没问题
|
|
|
|
|
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
|
|
|
|
|
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
|
|
|
|
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
|
|
|
|
}
|
|
|
|
|
// 伞下团队累计盒数 + 自己消费盒数 - 大区注水 - 小区注水
|
|
|
|
|
int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum()
|
|
|
|
|
- cuMemberRetailRangeExt.getBigBoxNum() - cuMemberRetailRangeExt.getSmallBoxNum();
|
|
|
|
|
if (areaBoxNum > bigBoxNum) {
|
|
|
|
|
// 实际订单累计盒数 大于 累计消费盒数,实际订单累计盒数为大区
|
|
|
|
|
bigBoxNum = areaBoxNum;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 小区盒数
|
|
|
|
|
int smallBoxNum = targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum() - bigBoxNum;
|
|
|
|
|
if (smallBoxNum >= bdGrade.getBoxSmallTotal()) {
|
|
|
|
|
// 小区盒数 大于等于 升级小区盒数
|
|
|
|
|
CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade);
|
|
|
|
|
cuMemberGradeMap.put(cuMemberGrade.getPkMember() + "_" + cuMemberGrade.getNewLevel(), cuMemberGrade);
|
|
|
|
|
targetMemberRangeExt.setGradeValue(bdGrade.getGradeValue());
|
|
|
|
@ -1138,39 +1179,42 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 计算奖衔
|
|
|
|
|
// 计算奖衔(荣誉级别)
|
|
|
|
|
while (true) {
|
|
|
|
|
int awardsValue = targetMemberRangeExt.getAwardsValue() + 5;
|
|
|
|
|
if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
|
|
|
|
|
// 等级达到V5 并且 存在下个奖衔,判断是否能升奖衔
|
|
|
|
|
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
|
|
|
|
|
// 先验证累计业绩
|
|
|
|
|
// new 升级奖衔判断为当月累计业绩,累计业绩为团队业绩 + 个人消费业绩
|
|
|
|
|
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getTotalCheck())) {
|
|
|
|
|
// 验证小区,计算小区业绩
|
|
|
|
|
List<CuMemberRetailRangeExt> cuMemberRangeExtList;
|
|
|
|
|
if (secondRangeTableName != null) {
|
|
|
|
|
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
|
|
|
|
|
} else {
|
|
|
|
|
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
|
|
|
|
|
}
|
|
|
|
|
BigDecimal consumeBigPv = BigDecimal.ZERO;
|
|
|
|
|
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
|
|
|
|
|
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
|
|
|
|
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
|
|
|
|
}
|
|
|
|
|
BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
|
|
|
|
|
if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
|
|
|
|
|
consumeBigPv = consumePv;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv);
|
|
|
|
|
if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) {
|
|
|
|
|
// 累计业绩足够,即可升奖衔
|
|
|
|
|
// // 验证小区,计算小区业绩
|
|
|
|
|
// List<CuMemberRetailRangeExt> cuMemberRangeExtList;
|
|
|
|
|
// if (secondRangeTableName != null) {
|
|
|
|
|
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
|
|
|
|
|
// } else {
|
|
|
|
|
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
|
|
|
|
|
// }
|
|
|
|
|
// BigDecimal consumeBigPv = BigDecimal.ZERO;
|
|
|
|
|
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
|
|
|
|
|
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
|
|
|
|
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
|
|
|
|
// }
|
|
|
|
|
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
|
|
|
|
|
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
|
|
|
|
|
// consumeBigPv = consumePv;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv);
|
|
|
|
|
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getCommunityCheck())) {
|
|
|
|
|
CuMemberAwards cuMemberRetailAwards = getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue());
|
|
|
|
|
cuMemberAwardsMap.put(cuMemberRetailAwards.getPkMember() + "_" + cuMemberRetailAwards.getNewLevel(), cuMemberRetailAwards);
|
|
|
|
|
targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue());
|
|
|
|
|
targetMemberRangeExt.setPkAwards(bdAwards.getPkId());
|
|
|
|
|
targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue());
|
|
|
|
|
targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName());
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|