diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java index 639a5326..87db9291 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java @@ -57,7 +57,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { private IBonusOrderService iBonusOrderService; /** - * 实时计算当月奖衔 + * 实时计算秒结数据(业绩、盒数、等级、奖衔、日奖) */ List 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 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 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 memberRangeExtMap = new HashMap<>(); + // 团队升级等级map(key:等级值,value:等级对象) Map retailTeamGradeMap = new TreeMap<>(); + // 等级map(key:等级ID,value:等级对象) Map gradeIdMap = new HashMap<>(); + // 等级列表 List 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 retailAwardsMap = new HashMap<>(); List 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 cuMemberGradeMap = new HashMap<>(); - Map 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 - 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)); - // 团队业绩,计算奖衔 + 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 cuMemberGradeMap = new HashMap<>(); + // 会员奖衔map + Map cuMemberAwardsMap = new HashMap<>(); + // 计算自己等级、奖衔等 calculateBackGrade(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, sourceMemberRangeExt); + // 计算团队业绩、盒数,计算等级、奖衔 List cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap); cuMemberRetailRangeExtList.add(sourceMemberRangeExt); + + // 查询期间的等级和奖衔 List 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 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,26 +1094,31 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { public List calculateRetailBackRangeGradeAwards(Integer period, Map memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, Integer boxNum, Map cuMemberGradeMap, Map cuMemberAwardsMap) { - CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); - CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(sourceMemberRangeExt.getPkParent()); List cuMemberRetailRangeExtList = new ArrayList<>(); + // 订单会员 + CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); + // 订单会员的推荐人 + CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(sourceMemberRangeExt.getPkParent()); + BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); BigDecimal orderAmount = saOrderExt.getOrderAmount(); - // 累计业绩 - targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount)); - targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve)); - targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount)); - 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.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount)); + targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve)); + targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount)); + targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), orderAchieve)); + targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount)); + targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewPv(), orderAchieve)); + // 累计盒数 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 memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, Map cuMemberGradeMap, Map cuMemberAwardsMap, CuMemberRetailRangeExt targetMemberRangeExt) { + private void calculateBackGrade(Integer period, Map memberRangeExtMap, String rangeTableName, + SaOrderExt saOrderExt, Map retailTeamGradeMap, Map retailAwardsMap, + String secondRangeTableName, Map cuMemberGradeMap, Map cuMemberAwardsMap, + CuMemberRetailRangeExt targetMemberRangeExt) { + // 遍历团队等级map(V4,V5) for (Integer gradeValue : retailTeamGradeMap.keySet()) { BdGrade bdGrade = retailTeamGradeMap.get(gradeValue); + if (bdGrade.getBoxTotal() <= (targetMemberRangeExt.getTeamBoxNum() + targetMemberRangeExt.getConsumeBoxNum())) { // 验证小区,计算小区累计盒数 查询伞下会员 List 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 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.setAwardsName(bdAwards.getAwardsName()); - continue; - } + // 累计业绩足够,即可升奖衔 +// // 验证小区,计算小区业绩 +// List 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.setPkAwards(bdAwards.getPkId()); + targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue()); + targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName()); + continue; +// } } } break; diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java index e3b52f37..17f11363 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleServiceImpl.java @@ -214,7 +214,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService { // 订单下单处理(正向) // 会员奖金明细 List cuMemberBonusDetailList = new ArrayList<>(); - // 实时计算当月奖衔 + // 实时计算秒结数据(业绩、盒数、等级、奖衔、日奖) List 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); // 处理收益 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java index 31fc7b82..ab59d7fe 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java @@ -683,7 +683,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusDetailMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusDetailMapper.xml index 0ede2e9c..f00cf047 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusDetailMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusDetailMapper.xml @@ -56,21 +56,22 @@ insert ALL - 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}) SELECT 1 FROM dual + insert into cu_member_bonus_detail(pk_bonus, pk_order, pk_bonus_items, income_status, cal_type, cal_achieve, cal_value, pretax_income, diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusMapper.xml index bdbc9fe1..064b3d49 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusMapper.xml @@ -74,36 +74,38 @@ and pk_country = #{pkCountry} + 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 cu_member_bonus_detail cu_member_bonus_range 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 - ,a.retail_range_income=a.retail_range_income-b.pretax_income + ,a.retail_range_income = a.retail_range_income - b.pretax_income - ,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 - ,a.retail_area_income=a.retail_area_income-b.pretax_income + ,a.retail_area_income = a.retail_area_income - b.pretax_income + delete from cu_member_bonus diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusRangeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusRangeMapper.xml index 4cb49414..7ba51c1e 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusRangeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusRangeMapper.xml @@ -48,7 +48,6 @@ - @@ -57,18 +56,20 @@ insert ALL - 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}) SELECT 1 FROM dual diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberAwardsMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberAwardsMapper.xml index 7af93b0b..fbd4d289 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberAwardsMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberAwardsMapper.xml @@ -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