## 撤单处理盒数、业绩等;
This commit is contained in:
parent
9289057d55
commit
5cedaa4f2e
|
@ -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;
|
||||
|
|
|
@ -214,7 +214,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 订单下单处理(正向)
|
||||
// 会员奖金明细
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
// 实时计算当月奖衔
|
||||
// 实时计算秒结数据(业绩、盒数、等级、奖衔、日奖)
|
||||
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettleRangeHandle.calculateCuMemberRetailRangeBonusBySecond(settleDate, saOrderExt, bonusConfigDTO,
|
||||
secondRangeTableName, beforePeriod, currentPeriod, cuMemberBonusMap, cuMemberBonusDetailList);
|
||||
saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap);
|
||||
|
@ -236,6 +236,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS));
|
||||
currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
||||
}
|
||||
// 实时计算撤单数据(业绩、盒数、等级、奖衔、日奖)
|
||||
bonusSettleRangeHandle.calculateCuMemberBackRetailIncome(saOrderExt, bonusConfigDTO,
|
||||
secondRangeTableName, beforePeriod, currentPeriod);
|
||||
// 处理收益
|
||||
|
|
|
@ -683,7 +683,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
public void mergeBackMemberBonusIncome(Long pkOrder) {
|
||||
baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_RANGE_INCOME.getValue());
|
||||
baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue());
|
||||
// baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_AREA_INCOME.getValue());
|
||||
baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_AREA_INCOME.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -206,12 +206,12 @@
|
|||
merge into ${rangeTableName} a
|
||||
using (
|
||||
select pk_id pk_member, pk_parent, pk_settle_grade, pk_awards
|
||||
from cu_member start with pk_id=#{pkMember}
|
||||
connect by prior pk_parent=pk_id
|
||||
from cu_member start with pk_id = #{pkMember}
|
||||
connect by prior pk_parent = pk_id
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.pk_grade = b.pk_settle_grade,a.pk_awards = b.pk_awards
|
||||
update set a.pk_grade = b.pk_settle_grade, a.pk_awards = b.pk_awards
|
||||
</update>
|
||||
|
||||
<update id="mergeMemberRetailRegion">
|
||||
|
|
|
@ -56,21 +56,22 @@
|
|||
<insert id="batchInsertCuMemberBonusDetail">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="cuMemberBonusDetailList" separator=" ">
|
||||
into cu_member_bonus_detail(pk_bonus,pk_order,pk_bonus_items,income_status,
|
||||
cal_type,cal_achieve,cal_value,pretax_income,
|
||||
income_tax,real_income,remark,
|
||||
income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator)
|
||||
values
|
||||
(
|
||||
#{item.pkBonus},nvl(#{item.pkOrder,jdbcType=BIGINT},0),#{item.pkBonusItems},#{item.incomeStatus},
|
||||
#{item.calType},#{item.calAchieve,jdbcType=NUMERIC},#{item.calValue,jdbcType=NUMERIC},#{item.pretaxIncome,jdbcType=NUMERIC},
|
||||
#{item.incomeTax,jdbcType=NUMERIC},#{item.realIncome,jdbcType=NUMERIC},
|
||||
#{item.remark},#{item.incomeRatio,jdbcType=NUMERIC},#{item.incomeDialRatio,jdbcType=NUMERIC},#{item.orderDialRatio,jdbcType=NUMERIC},
|
||||
#{item.pkCountry},#{item.pkCreator}
|
||||
)
|
||||
into cu_member_bonus_detail (
|
||||
pk_bonus, pk_order, pk_bonus_items, income_status,
|
||||
cal_type, cal_achieve, cal_value, pretax_income,
|
||||
income_tax, real_income, remark,
|
||||
income_ratio, income_dial_ratio, order_dial_ratio,
|
||||
pk_country, pk_creator)
|
||||
values (
|
||||
#{item.pkBonus}, nvl(#{item.pkOrder, jdbcType=BIGINT},0), #{item.pkBonusItems}, #{item.incomeStatus},
|
||||
#{item.calType}, #{item.calAchieve, jdbcType=NUMERIC}, #{item.calValue, jdbcType=NUMERIC}, #{item.pretaxIncome, jdbcType=NUMERIC},
|
||||
#{item.incomeTax, jdbcType=NUMERIC}, #{item.realIncome, jdbcType=NUMERIC}, #{item.remark},
|
||||
#{item.incomeRatio, jdbcType=NUMERIC}, #{item.incomeDialRatio, jdbcType=NUMERIC}, #{item.orderDialRatio, jdbcType=NUMERIC},
|
||||
#{item.pkCountry},#{item.pkCreator})
|
||||
</foreach>
|
||||
SELECT 1 FROM dual
|
||||
</insert>
|
||||
|
||||
<insert id="insertCuMemberBonusDetail">
|
||||
insert into cu_member_bonus_detail(pk_bonus, pk_order, pk_bonus_items, income_status,
|
||||
cal_type, cal_achieve, cal_value, pretax_income,
|
||||
|
|
|
@ -74,36 +74,38 @@
|
|||
and pk_country = #{pkCountry}
|
||||
</if>
|
||||
</update>
|
||||
|
||||
<update id="mergeBackRangeBonusIncome">
|
||||
merge into cu_member_bonus a
|
||||
using(
|
||||
select b.* from bd_bonus_items bt
|
||||
inner join(
|
||||
select pk_bonus,pk_bonus_items,sum(pretax_income) pretax_income,
|
||||
sum(income_tax) income_tax,sum(real_income) real_income from
|
||||
select pk_bonus,pk_bonus_items, sum(pretax_income) pretax_income,
|
||||
sum(income_tax) income_tax, sum(real_income) real_income from
|
||||
<choose>
|
||||
<when test="bonusValue == 27"> cu_member_bonus_detail </when>
|
||||
<otherwise> cu_member_bonus_range </otherwise>
|
||||
</choose>
|
||||
where del_flag=0 and pk_order= #{pkOrder}
|
||||
group by pk_bonus,pk_bonus_items) b
|
||||
on bt.pk_id=b.pk_bonus_items
|
||||
where bt.bonus_value=#{bonusValue}) b
|
||||
on (a.pk_id=b.pk_bonus)
|
||||
group by pk_bonus, pk_bonus_items) b
|
||||
on bt.pk_id = b.pk_bonus_items
|
||||
where bt.bonus_value = #{bonusValue}) b
|
||||
on (a.pk_id = b.pk_bonus)
|
||||
when matched then
|
||||
update set a.retail_real_subtotal=a.retail_real_subtotal-b.real_income,
|
||||
a.back_points=a.back_points-b.income_tax,
|
||||
a.real_income_total=a.real_income_total-b.real_income
|
||||
<if test="bonusValue == 25">
|
||||
,a.retail_range_income=a.retail_range_income-b.pretax_income
|
||||
,a.retail_range_income = a.retail_range_income - b.pretax_income
|
||||
</if>
|
||||
<if test="bonusValue == 26">
|
||||
,a.retail_same_level_income=a.retail_same_level_income-b.pretax_income
|
||||
,a.retail_same_level_income = a.retail_same_level_income - b.pretax_income
|
||||
</if>
|
||||
<if test="bonusValue == 27">
|
||||
,a.retail_area_income=a.retail_area_income-b.pretax_income
|
||||
,a.retail_area_income = a.retail_area_income - b.pretax_income
|
||||
</if>
|
||||
</update>
|
||||
|
||||
<delete id="deleteCuMemberBonus">
|
||||
delete
|
||||
from cu_member_bonus
|
||||
|
|
|
@ -48,7 +48,6 @@
|
|||
<result column="SETTLE_COUNTRY" property="settleCountry"/>
|
||||
<result column="PERIOD" property="period"/>
|
||||
<result column="OUT_EXCHANGE_RATE" property="outExchangeRate"/>
|
||||
|
||||
<result column="service_code" property="serviceCode"/>
|
||||
<result column="pk_vertex" property="pkVertex"/>
|
||||
<result column="nick_name" property="nickName"/>
|
||||
|
@ -57,18 +56,20 @@
|
|||
<insert id="batchInsertCuMemberBonusRange">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="cuMemberBonusRangeList" separator=" ">
|
||||
into cu_member_bonus_range(pk_bonus,pk_order,pk_order_items,pk_bonus_items,income_status,
|
||||
cal_type,cal_achieve,cal_value,pk_range,pk_before_range,pretax_income,
|
||||
income_tax,real_income,remark,
|
||||
income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator)
|
||||
values
|
||||
(
|
||||
#{item.pkBonus},#{item.pkOrder},#{item.pkOrderItems},#{item.pkBonusItems},#{item.incomeStatus},
|
||||
#{item.calType},#{item.calAchieve},#{item.calValue},#{item.pkRange},#{item.pkBeforeRange},
|
||||
#{item.pretaxIncome},#{item.incomeTax},#{item.realIncome},
|
||||
#{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio},
|
||||
#{item.pkCountry},#{item.pkCreator}
|
||||
)
|
||||
into cu_member_bonus_range (
|
||||
pk_bonus, pk_order, pk_order_items, pk_bonus_items,
|
||||
income_status, cal_type, cal_achieve, cal_value,
|
||||
pk_range, pk_before_range, pretax_income,
|
||||
income_tax, real_income, remark,
|
||||
income_ratio, income_dial_ratio, order_dial_ratio,
|
||||
pk_country, pk_creator)
|
||||
values (
|
||||
#{item.pkBonus}, #{item.pkOrder}, #{item.pkOrderItems}, #{item.pkBonusItems},
|
||||
#{item.incomeStatus}, #{item.calType}, #{item.calAchieve}, #{item.calValue},
|
||||
#{item.pkRange}, #{item.pkBeforeRange}, #{item.pretaxIncome},
|
||||
#{item.incomeTax}, #{item.realIncome}, #{item.remark},
|
||||
#{item.incomeRatio}, #{item.incomeDialRatio}, #{item.orderDialRatio},
|
||||
#{item.pkCountry}, #{item.pkCreator})
|
||||
</foreach>
|
||||
SELECT 1 FROM dual
|
||||
</insert>
|
||||
|
|
|
@ -167,13 +167,13 @@
|
|||
and ca.pk_member in
|
||||
(select pk_id
|
||||
from cu_member start
|
||||
with pk_id=#{pkMember}
|
||||
connect by prior pk_parent=pk_id)
|
||||
with pk_id = #{pkMember}
|
||||
connect by prior pk_parent = pk_id)
|
||||
group by ca.pk_member) cx
|
||||
on cw.pk_id = cx.pk_id ) b
|
||||
on (a.pk_member=b.pk_member)
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.pk_awards=b.old_level
|
||||
update set a.pk_awards = b.old_level
|
||||
</update>
|
||||
|
||||
<!-- 删除自动升级的奖衔升级记录 -->
|
||||
|
|
Loading…
Reference in New Issue