From a35e4681038b4e6e4d13538db68aa6c70eac7148 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Thu, 19 Jun 2025 15:30:23 +0800 Subject: [PATCH 1/4] =?UTF-8?q?##=20=E7=A7=92=E7=BB=93=E3=80=81=E6=97=A5?= =?UTF-8?q?=E7=BB=93=E6=81=A2=E5=A4=8D=E5=88=86=E7=BA=A2=E5=A5=96=E8=A1=94?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/CuMemberRetailRangeMapper.java | 4 +- .../service/ICuMemberRetailRangeService.java | 2 +- .../impl/CuMemberRetailRangeServiceImpl.java | 4 +- .../service/impl/CuMemberTreeServiceImpl.java | 4 +- .../service/impl/CuMemberServiceImpl.java | 9 +- .../service/impl/BonusSettleRangeHandle.java | 334 +++++++++++------- .../detail/mapper/CuMemberAwardsMapper.java | 6 +- .../service/ICuMemberAwardsService.java | 2 +- .../impl/CuMemberAwardsServiceImpl.java | 8 +- .../achieve/CuMemberRetailRangeMapper.xml | 89 +++-- .../bonus/achieve/CuMemberTreeMapper.xml | 24 +- .../mapper/bonus/base/CuMemberMapper.xml | 17 +- .../bonus/detail/CuMemberAwardsMapper.xml | 22 +- .../hzs/common/core/enums/EAwardsType.java | 12 +- .../member/achieve/CuMemberRetailRange.java | 3 + .../achieve/ext/CuMemberRetailRangeExt.java | 3 + .../common/domain/member/base/CuMember.java | 8 +- 17 files changed, 335 insertions(+), 216 deletions(-) diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java index 691f9453..f3b989c6 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberRetailRangeMapper.java @@ -79,7 +79,7 @@ public interface CuMemberRetailRangeMapper extends BaseMapper queryCuMemberSecondRangeYes(@Param("rangeTableName") String rangeTableName, @Param("pkMember") Long pkMember); /** - * 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体 + * 秒结:推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体 */ List queryCuMemberSecondRangeExtByParent(@Param("rangeTableName") String rangeTableName, @Param("secondTableName") String secondTableName, @Param("pkMember") Long pkMember); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java index 0a5386ac..4d78554f 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailRangeService.java @@ -124,7 +124,7 @@ public interface ICuMemberRetailRangeService extends IService i @Override public void updateCuMemberRetailRangeByPeriod(List cuMemberAwardsList, Integer period) { baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue()); -// baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.SHARE_TYPE.getValue()); + baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.SHARE_TYPE.getValue()); } @Override public void updateCuMemberRetailRangeByList(List cuMemberAwardsList, Integer period) { baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue()); -// baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue()); + baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue()); } @Override @@ -58,6 +58,7 @@ public class CuMemberServiceImpl extends ServiceImpl i @Override public void updateCuMemberMinAwardsByList(List cuMemberAwardsList, Integer period) { baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.RANGE_TYPE.getValue()); + baseMapper.updateCuMemberRetailRangeByList(cuMemberAwardsList, period, EAwardsType.SHARE_TYPE.getValue()); } @Override @@ -88,13 +89,13 @@ public class CuMemberServiceImpl extends ServiceImpl i @Override public void updateBackCuMemberRetailRangeAward(Integer period) { baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.RANGE_TYPE.getValue()); -// baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.SHARE_TYPE.getValue()); + baseMapper.updateBackCuMemberRetailRangeAward(period, EAwardsType.SHARE_TYPE.getValue()); } @Override public void updateCuMemberRetailRangeAwardByDate(Date settleDate) { baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.RANGE_TYPE.getValue()); -// baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.SHARE_TYPE.getValue()); + baseMapper.updateCuMemberRetailRangeAwardByDate(settleDate, EAwardsType.SHARE_TYPE.getValue()); } @Override 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 f4de42bb..909c7434 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 @@ -185,7 +185,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (cuMemberAwardsList.size() > 0) { // 插入会员奖衔升级记录 iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList); - // 更新会员奖衔 -- 荣誉级别(旧级差奖衔、旧荣誉奖衔(分红奖衔) + // 更新会员奖衔 -- 当月奖衔、分红奖衔 iCuMemberService.updateCuMemberRetailRangeByList(cuMemberAwardsList, currentPeriod); } @@ -197,7 +197,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } /** - * 实时计算撤单数据(业绩、盒数、等级、奖衔、日奖) + * 撤单秒结:实时计算撤单数据(业绩、盒数、等级、奖衔、日奖) */ void calculateCuMemberBackRetailIncome(SaOrderExt saOrderExt, BonusConfigDTO bonusConfigDTO, String secondRangeTableName, int beforePeriod, int currentPeriod) { @@ -208,9 +208,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { if (DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) { // 当天撤单 // 实时网体查询血缘伞上会员,更新秒结表等级、奖衔 - iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(secondRangeTableName, saOrderExt.getPkMember()); + iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(secondRangeTableName, saOrderExt.getPkMember(), EYesNo.YES.getIntValue()); // 恢复秒结表奖衔 - iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod); + iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod, EYesNo.YES.getIntValue()); // 查询 昨天日结 + 今天秒结 血缘伞上+直推 memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeParent(rangeTableName, secondRangeTableName, saOrderExt.getPkMember()); } else { @@ -219,9 +219,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List retailOrderList = new ArrayList<>(); retailOrderList.add(saOrderExt); // 实时网体查询血缘上会员,更新订单支付日结表等级、奖衔 - iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(rangeTableName, saOrderExt.getPkMember()); + iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(rangeTableName, saOrderExt.getPkMember(), EYesNo.NO.getIntValue()); // 恢复日结表奖衔 - iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod); + iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod, EYesNo.NO.getIntValue()); // 查询 订单下单日结 血缘上会员结算数据 memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList); } @@ -279,13 +279,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { Map cuMemberGradeMap = new HashMap<>(); // 会员奖衔map Map cuMemberAwardsMap = new HashMap<>(); + // 会员分红奖衔map + Map cuMemberShareAwardsMap = new HashMap<>(); // 计算自己等级、奖衔等 - calculateBackGrade(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, sourceMemberRangeExt); + calculateBackGrade(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, + cuMemberGradeMap, cuMemberAwardsMap, cuMemberShareAwardsMap, sourceMemberRangeExt); // 计算团队业绩、盒数,计算等级、奖衔 - List cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap); + List cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, + secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap, cuMemberShareAwardsMap); cuMemberRetailRangeExtList.add(sourceMemberRangeExt); - // 查询期间的等级和奖衔 + // 查询期间的等级 List memberGradeList = iCuMemberGradeService.queryCuMemberGrade(cuMemberRetailRangeExtList, currentPeriod); // 查询最大的手动奖衔 List cuMemberGradeList1 = iCuMemberGradeService.queryCuMemberGradeByList(currentPeriod, memberRetailRangeExtList); @@ -304,8 +308,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { cuMemberRetailRangeExt.setGradeValue(bdGrade.getGradeValue()); } BdGrade bdGrade = gradeIdMap.get(cuMemberRetailRangeExt.getPkGrade()); - if (bdGrade != null && bdGrade.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 13) { - cuMemberRetailRangeExt.setPkAwards(13); + if (bdGrade != null && bdGrade.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 11) { + // 如果是合伙人,奖衔肯定得有,不能置为无 + cuMemberRetailRangeExt.setPkAwards(11); } } } @@ -330,24 +335,47 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { iCuMemberService.updateCuMemberMinGradeByList(cuMemberGradeList, currentPeriod); } } + // 当期的所有奖衔升级记录 List memberAwardsList = iCuMemberAwardsService.queryCuMemberAwards(cuMemberRetailRangeExtList, currentPeriod); if (memberAwardsList.size() > 0) { + // 当月奖衔升级记录 + List pkAwardsList = memberAwardsList.stream().filter(tmpData -> tmpData.getAwardType() == EAwardsType.RANGE_TYPE.getValue()).collect(Collectors.toList()); + // 分红奖衔升级记录 + List pkShareAwardsList = memberAwardsList.stream().filter(tmpData -> tmpData.getAwardType() == EAwardsType.SHARE_TYPE.getValue()).collect(Collectors.toList()); + List cuMemberAwardsList = new ArrayList<>(); - for (CuMemberAwards cuMemberAwards : memberAwardsList) { - String key = cuMemberAwards.getPkMember() + "_" + cuMemberAwards.getNewLevel(); - if (!cuMemberAwardsMap.containsKey(key)) { - CuMemberRetailRangeExt cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberAwards.getPkMember()); - if (cuMemberAwards.getOldLevel() < cuMemberRetailRangeExt.getPkAwards()) { - cuMemberRetailRangeExt.setPkAwards(cuMemberAwards.getOldLevel()); + if (CollectionUtil.isNotEmpty(pkAwardsList)) { + for (CuMemberAwards cuMemberAwards : pkAwardsList) { + String key = cuMemberAwards.getPkMember() + "_" + cuMemberAwards.getNewLevel(); + if (!cuMemberAwardsMap.containsKey(key)) { + CuMemberRetailRangeExt cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberAwards.getPkMember()); + if (cuMemberAwards.getOldLevel() < cuMemberRetailRangeExt.getPkAwards()) { + cuMemberRetailRangeExt.setPkAwards(cuMemberAwards.getOldLevel()); + } + if (cuMemberRetailRangeExt.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 11) { + // 如果是合伙人,奖衔肯定得有,不能置为无 + cuMemberRetailRangeExt.setPkAwards(11); + continue; + } + cuMemberAwards.setNewLevel(cuMemberAwards.getOldLevel()); + cuMemberAwardsList.add(cuMemberAwards); } - if (cuMemberRetailRangeExt.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 13) { - cuMemberRetailRangeExt.setPkAwards(13); - continue; - } - cuMemberAwards.setNewLevel(cuMemberAwards.getOldLevel()); - cuMemberAwardsList.add(cuMemberAwards); } } + if (CollectionUtil.isNotEmpty(pkShareAwardsList)) { + for (CuMemberAwards cuMemberAwards : pkShareAwardsList) { + String key = cuMemberAwards.getPkMember() + "_" + cuMemberAwards.getNewLevel(); + if (!cuMemberShareAwardsMap.containsKey(key)) { + CuMemberRetailRangeExt cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberAwards.getPkMember()); + if (cuMemberAwards.getOldLevel() < cuMemberRetailRangeExt.getPkShareAwards()) { + cuMemberRetailRangeExt.setPkShareAwards(cuMemberAwards.getOldLevel()); + } + cuMemberAwards.setNewLevel(cuMemberAwards.getOldLevel()); + cuMemberAwardsList.add(cuMemberAwards); + } + } + } + // 处理等级、奖衔 if (cuMemberAwardsList.size() > 0) { // 删除会员奖衔记录 @@ -836,6 +864,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { return cuMemberAwardsList; } + /** + * 计算等级、奖衔 + */ private void calculateGradeAwards(Integer period, Map memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, List cuMemberGradeList, List cuMemberAwardsList, @@ -859,7 +890,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 验证小区,计算小区累计盒数 查询伞下会员 List cuMemberRangeExtList; if (secondRangeTableName != null) { - // 秒结表关联昨日结算表,查询订单会员直推数据 + // 会员表 关联 秒结表 和 昨日结算表,查询订单会员直推数据 cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); } else { // 昨日结算表,查询订单会员直推数据 @@ -903,108 +934,103 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } } - // 计算奖衔(荣誉级别) + // 计算当月奖衔 while (true) { - // 当前实时奖衔值 + 5,获取下一个奖衔值 + // 当月奖衔值 + 5,获取下一个奖衔值 int awardsValue = targetMemberRangeExt.getAwardsValue() + 5; if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) { // 等级达到V5 并且 存在下个奖衔,判断是否能升奖衔 BdAwards bdAwards = retailAwardsMap.get(awardsValue); // 先验证累计业绩 - // new 升级奖衔判断为当月累计业绩,累计业绩为团队业绩 + 个人消费业绩 + // new 升级奖衔判断: 月累计业绩 = 本人月消费业绩 + 团队月消费业绩 if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getTotalCheck())) { // 累计业绩足够,即可升奖衔 -// BigDecimal consumeBigPv = BigDecimal.ZERO; -// if (ComputeUtil.compareValue(bdAwards.getCommunityCheck())) { -// // 验证小区,计算小区业绩 -// List cuMemberRangeExtList; -// if (secondRangeTableName != null) { -// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); -// } else { -// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember()); -// } -// 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(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.setPkAwards(bdAwards.getPkId()); targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue()); targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName()); continue; -// } } } break; } -// // 计算分红奖衔(秒结不走这个地方) -// while (true) { -// if (null == targetMemberRangeExt.getShareAwardsValue()) { -// break; -// } -// int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5; -// if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) { -// BdAwards bdAwards = retailAwardsMap.get(awardsValue); -// // 先验证累计业绩 -// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) { -// // 验证小区,计算小区业绩 -// List cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember()); -// BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv(); -//// if (ComputeUtil.compareGreaterThan(targetMemberRangeExt.getBigTeamPv(), consumeBigPv)) { -//// consumeBigPv = targetMemberRangeExt.getBigTeamPv(); -//// } -// 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.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv)); -// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) { -// if (bdAwards.getPlaceDeptNum() > 0) { -// // 验证是否有多个区满足业绩 -// List cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck()); -// int enoughNum = 0; -// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) { -// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { -// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); -// } -// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) { -// enoughNum += 1; -// } -// } -// if (bdAwards.getPlaceDeptNum() > enoughNum) { -// break; -// } -// } -// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue())); -// targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue()); -// targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId()); -// continue; -// } -// } -// } -// break; -// } + // 计算分红奖衔 + while (true) { + // 当月奖衔值 + 5,获取下一个奖衔值 + int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5; + if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) { + BdAwards bdAwards = retailAwardsMap.get(awardsValue); + // 先验证累计业绩 + if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) { + // 验证小区,计算小区业绩(拉取直推会员数据) + List cuMemberRangeExtList; + if (secondRangeTableName != null) { + // 会员表 关联 秒结表 和 昨日结算表,查询订单会员直推数据 + cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); + } else { + // 昨日结算表,查询订单会员直推数据 + cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember()); + } + // 本人月消费业绩(默认为大区) + BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv(); + 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.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv)); + if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) { + // 小区业绩 >= 小区考核业绩 + if (bdAwards.getPlaceDeptNum() > 0) { + // 验证是否有多个区满足业绩 + List cuMemberRetailRangeExtList; + if (secondRangeTableName != null) { + // 会员表 关联 秒结表 和 昨日结算表,查询订单会员直推数据 + cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); + } else { + // 昨日结算表,查询订单会员直推数据 + cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck()); + } + + int enoughNum = 0; + for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) { + if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { + cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); + } + if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) { + // 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩,则满足条件小部门 +1 + enoughNum += 1; + } + } + if (bdAwards.getPlaceDeptNum() > enoughNum) { + break; + } + } + cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue())); + targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue()); + targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId()); + continue; + } + } + } + break; + } } /** * 计算团队极差奖衔 */ public List calculateRetailBackRangeGradeAwards(Integer period, Map memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, - Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, - Integer boxNum, Map cuMemberGradeMap, Map cuMemberAwardsMap) { + Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, Integer boxNum, + Map cuMemberGradeMap, Map cuMemberAwardsMap, Map cuMemberShareAwardsMap) { List cuMemberRetailRangeExtList = new ArrayList<>(); // 订单会员 CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); @@ -1029,7 +1055,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum); targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum() - boxNum); // 计算等级 - calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, targetMemberRangeExt); + calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, + cuMemberGradeMap, cuMemberAwardsMap, cuMemberShareAwardsMap, targetMemberRangeExt); cuMemberRetailRangeExtList.add(targetMemberRangeExt); } // 计算等级 @@ -1038,9 +1065,9 @@ 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, + private void calculateBackGrade(Integer period, Map memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt, + Map retailTeamGradeMap, Map retailAwardsMap, String secondRangeTableName, + Map cuMemberGradeMap, Map cuMemberAwardsMap, Map cuMemberShareAwardsMap, CuMemberRetailRangeExt targetMemberRangeExt) { // 遍历团队等级map(V4,V5) for (Integer gradeValue : retailTeamGradeMap.keySet()) { @@ -1053,7 +1080,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 验证小区,计算小区累计盒数 查询伞下会员 List cuMemberRangeExtList; if (secondRangeTableName != null) { - // 秒结表关联昨日结算表,查询订单会员直推数据 + // 会员表 关联 秒结表 和 昨日结算表,查询订单会员直推数据 cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); } else { // 昨日结算表,查询订单会员直推数据 @@ -1107,32 +1134,83 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 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.setPkAwards(bdAwards.getPkId()); targetMemberRangeExt.setAwardsValue(bdAwards.getAwardsValue()); targetMemberRangeExt.setAwardsName(bdAwards.getAwardsName()); continue; -// } + } + } + break; + } + + // 计算分红奖衔 + while (true) { + // 当月奖衔值 + 5,获取下一个奖衔值 + int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5; + if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) { + BdAwards bdAwards = retailAwardsMap.get(awardsValue); + // 先验证累计业绩 + if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) { + // 验证小区,计算小区业绩(拉取直推会员数据) + List cuMemberRangeExtList; + if (secondRangeTableName != null) { + // 会员表 关联 秒结表 和 昨日结算表,查询订单会员直推数据 + cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); + } else { + // 昨日结算表,查询订单会员直推数据 + cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember()); + } + // 本人月消费业绩(默认为大区) + BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv(); + 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.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv)); + if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) { + // 小区业绩 >= 小区考核业绩 + if (bdAwards.getPlaceDeptNum() > 0) { + // 验证是否有多个区满足业绩 + List cuMemberRetailRangeExtList; + if (secondRangeTableName != null) { + // 会员表 关联 秒结表 和 昨日结算表,查询订单会员直推数据 + cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember()); + } else { + // 昨日结算表,查询订单会员直推数据 + cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck()); + } + + int enoughNum = 0; + for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) { + if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { + cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); + } + if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) { + // 本人月消费业绩 + 团队月消费业绩 >= 小区考核业绩,则满足条件小部门 +1 + enoughNum += 1; + } + } + if (bdAwards.getPlaceDeptNum() > enoughNum) { + break; + } + } + CuMemberAwards cuMemberRetailAwards = getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue()); + cuMemberShareAwardsMap.put(cuMemberRetailAwards.getPkMember() + "_" + cuMemberRetailAwards.getNewLevel(), cuMemberRetailAwards); + targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue()); + targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId()); + continue; + } } } break; diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberAwardsMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberAwardsMapper.java index cac46543..6d2a6960 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberAwardsMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberAwardsMapper.java @@ -54,8 +54,10 @@ public interface CuMemberAwardsMapper extends BaseMapper { /** * 回退等级 */ - void mergeCuMemberBackAwards(@Param("rangeTableName") String rangeTableName, @Param("pkMember") Long pkMember, - @Param("period") Integer period); + void mergeCuMemberBackAwards(@Param("rangeTableName") String rangeTableName, + @Param("pkMember") Long pkMember, + @Param("period") Integer period, + @Param("awardType") Integer awardType); /** * 根据结算表更新奖衔 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java index 2f5ce241..60d93d98 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberAwardsService.java @@ -59,7 +59,7 @@ public interface ICuMemberAwardsService extends IService { /** * 回退奖衔 */ - void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period); + void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period, Integer isToday); /** * 删除奖衔升级记录 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java index 56f55e32..6d768078 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberAwardsServiceImpl.java @@ -110,8 +110,12 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl countryAwardsMap, String settleTableName, Date settleDate, Integer period, List cuMemberSettleExtList) { diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml index 28a19249..a978f013 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml @@ -13,6 +13,7 @@ + @@ -80,7 +81,6 @@ team_num = 0, enable_status = 1, pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20), - pk_share_awards = (select pk_id from BD_AWARDS where awards_value = 0), region_address = 0, big_box_num = 0, small_box_num = 0, @@ -91,7 +91,7 @@ merge into ${rangeTableName} a using( - select pk_member, pk_grade, pk_share_awards, enable_status, + select pk_member, pk_grade, pk_awards, pk_share_awards, enable_status, new_box_num, consume_box_num, month_box_num, new_consume_pv, consume_pv, month_consume_pv, team_new_box_num, team_box_num, team_month_box_num, @@ -120,7 +120,6 @@ ,a.team_month_box_num = b.team_month_box_num ,a.team_month_pv = b.team_month_pv ,a.team_month_amount = b.team_month_amount - ,a.pk_share_awards = b.pk_share_awards @@ -157,6 +156,7 @@ a.pk_parent, a.pk_settle_grade pk_grade, a.pk_awards, + a.pk_range_awards, a.is_activate enable_status, a.system_type from (select * @@ -169,8 +169,8 @@ ) b on (a.pk_member = b.pk_member) when not matched then - insert (pk_member, pk_parent, pk_grade, pk_awards, enable_status, system_type) - values (b.pk_member, b.pk_parent, b.pk_grade, b.pk_awards, b.enable_status, b.system_type) + insert (pk_member, pk_parent, pk_grade, pk_awards, pk_share_awards, enable_status, system_type) + values (b.pk_member, b.pk_parent, b.pk_grade, b.pk_awards, b.pk_range_awards, b.enable_status, b.system_type) @@ -181,6 +181,7 @@ a.pk_parent, a.pk_settle_grade pk_grade, a.pk_awards, + a.pk_range_awards, nvl(b.enable_status, 1) enable_status from (select * from cu_member @@ -203,7 +204,9 @@ merge into ${secondTableName} a using ( - 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.pkShareAwards} pk_share_awards, #{item.newBoxNum} new_box_num, #{item.newConsumePv} new_consume_pv, #{item.teamNewBoxNum} team_new_box_num, #{item.teamNewPv} team_new_pv, #{item.teamNewAmount} team_new_amount, #{item.enableStatus} enable_status @@ -212,7 +215,7 @@ ) b on (a.pk_member = b.pk_member) 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.pk_share_awards = b.pk_share_awards, a.new_box_num = b.new_box_num, a.new_consume_pv = b.new_consume_pv, a.team_new_box_num = b.team_new_box_num, a.team_new_pv = b.team_new_pv, a.team_new_amount = b.team_new_amount, a.enable_status = b.enable_status @@ -220,14 +223,18 @@ 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 - ) 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 + using ( + select pk_id pk_member, pk_parent, + pk_settle_grade, pk_awards, pk_range_awards + 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 + + , a.pk_share_awards = b.pk_range_awards + @@ -305,6 +312,7 @@ a.account_status, a.pk_grade, a.pk_awards, + a.pk_share_awards, a.income_status, a.consume_pv, a.pay_time, @@ -313,7 +321,6 @@ a.income_status, a.pk_country, a.pk_settle_country, - a.pk_share_awards, a.enable_status, new_box_num, consume_box_num, @@ -332,7 +339,6 @@ team_month_amount, recommend_num, team_num, - pk_grade, ba.grade_value, ba.grade_name, bw.awards_value, @@ -373,6 +379,7 @@ a.account_status, a.pk_grade, a.pk_awards, + a.pk_share_awards, a.income_status, a.consume_pv, a.pay_time, @@ -380,7 +387,6 @@ a.income_status, a.pk_country, a.pk_settle_country, - a.pk_share_awards, a.big_box_num, a.small_box_num, a.big_team_pv, @@ -407,7 +413,7 @@ ba.grade_name, bw.awards_value, bw.awards_name, - bwa.awards_value share_awards_value, + bws.awards_value share_awards_value, bw.range_ratio, bw.benefit_avg_ratio, bw.benefit_share_ratio, @@ -416,13 +422,12 @@ inner join bd_grade ba on a.pk_grade = ba.pk_id inner join bd_awards bw - on bw.pk_id = a.pk_awards + on bw.pk_id = a.pk_awards and bw.del_flag = 0 + inner join bd_awards bws + on bws.pk_id = a.pk_share_awards and bws.del_flag = 0 left join bd_area br on br.pk_id = a.region_address and br.del_flag = 0 - left join bd_awards bwa - on bwa.pk_id = a.pk_share_awards and bwa.del_flag = 0 where ba.del_flag = 0 - and bw.del_flag = 0 and a.pk_parent = #{pkParent} @@ -504,9 +509,9 @@ pk_parent, member_code, member_name, - a.pk_awards, - a.pk_grade, a.pk_rate, + a.pk_grade, + a.pk_awards, a.pk_share_awards, a.enable_status, a.income_status, @@ -518,6 +523,7 @@ bg.grade_name, bw.awards_value, bw.awards_name, + bwa.awards_value share_awards_value, a.account_status, a.category, bw.range_ratio, @@ -527,6 +533,8 @@ from ${rangeTableName} a inner join bd_awards bw on bw.pk_id = a.pk_awards + inner join bd_awards bwa + on bwa.pk_id = a.pk_share_awards inner join bd_grade bg on bg.pk_id = a.pk_grade inner join bd_area ba @@ -595,6 +603,7 @@ cm.account_status, a.pk_grade, a.pk_awards, + a.pk_share_awards, cm.income_status, cm.pay_time, b.pk_rate, @@ -626,6 +635,7 @@ bw.range_ratio, bw.benefit_avg_ratio, bw.benefit_share_ratio, + bws.awards_value share_awards_value, br.name country_name, cr.county region_address from ( @@ -638,15 +648,16 @@ inner join cu_member cm on cm.pk_id = a.pk_member inner join bd_awards bw - on bw.pk_id = a.pk_awards + on bw.pk_id = a.pk_awards and bw.del_flag = 0 + inner join bd_awards bws + on bws.pk_id = a.pk_share_awards and bws.del_flag = 0 inner join bd_grade bg on bg.pk_id = a.pk_grade left join cu_member_retail_region cr on cr.pk_member = cm.pk_id and cr.effective = 0 and cr.del_flag = 0 left join bd_area br on br.pk_id = cr.county and br.del_flag = 0 - where bw.del_flag = 0 - and bg.del_flag = 0 + where bg.del_flag = 0 select cm.pk_id pkMember, + cm.pk_parent, + nvl(b.month_consume_pv, 0) + nvl(a.new_consume_pv, 0) month_consume_pv, + nvl(b.team_month_pv, 0) + nvl(a.team_new_pv, 0) team_month_pv, nvl(b.consume_box_num, 0) + nvl(a.new_box_num, 0) consume_box_num, nvl(b.team_box_num, 0) + nvl(a.team_new_box_num, 0) team_box_num, nvl(b.big_box_num, 0) big_box_num, @@ -766,24 +780,25 @@ diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml index 4ecc74c7..73056fb2 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml @@ -460,17 +460,17 @@ inner join ( select a.pk_member,a.new_level pk_awards from cu_member_awards a - inner join( + inner join ( select pk_member, max(pk_id) pk_id from cu_member_awards - where del_flag = 0 and up_type=2 + where del_flag = 0 and up_type = 2 and end_validity_date <= #{settleDate, jdbcType=DATE} and award_type = #{awardType} group by pk_member) b on a.pk_id = b.pk_id where a.del_flag = 0 ) y - on x.pk_member=y.pk_member + on x.pk_member = y.pk_member where x.pk_awards < y.pk_awards @@ -486,25 +486,26 @@ a.pk_awards = b.pk_awards - a.pk_share_awards=b.pk_awards + a.pk_share_awards = b.pk_awards update ${rangeTableName} - set pk_awards = (select pk_id from bd_awards where awards_value = 0) + set pk_awards = (select pk_id from bd_awards where awards_value = 0), + pk_share_awards = (select pk_id from bd_awards where awards_value = 0) update ${rangeTableName} - set pk_awards = (select pk_id from bd_awards where awards_value = 5) + set pk_awards = (select pk_id from bd_awards where awards_value = 5), + pk_share_awards = (select pk_id from bd_awards where awards_value = 5) where pk_grade = ( select pk_id from bd_grade - where grade_value = 70 - and del_flag = 0 + where grade_value = 70 and del_flag = 0 ) @@ -529,7 +530,8 @@ pk_member NUMBER(20) not null, pk_parent NUMBER(20) not null, pk_grade NUMBER(4) not null, - pk_awards number(4) default 1 not null, + pk_awards number(4) default 10 not null, + pk_share_awards number(4) default 10 not null, enable_status number(2) default 1 not null, system_type NUMBER(2) default 2 not null, new_box_num number(8) default 0 not null, @@ -550,8 +552,8 @@ customer_type NUMBER(2) not null, phone VARCHAR2(40) not null, pk_grade NUMBER(4) not null, - pk_awards number(4) default 1 not null, - pk_share_awards number(4) default 12 not null, + pk_awards number(4) default 10 not null, + pk_share_awards number(4) default 10 not null, enable_status number(2) default 1 not null, account_status number(1) default 0 not null, pay_status NUMBER(2) default 0 not null, diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml index bfcef91f..8498c58a 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/base/CuMemberMapper.xml @@ -195,7 +195,7 @@ using ( select pk_member, max(new_level) pk_awards from cu_member_awards - where period = #{period} and award_type=#{awardType} + where period = #{period} and award_type = #{awardType} and del_flag = 0 group by pk_member ) b @@ -324,7 +324,8 @@ merge into cu_member a using ( - select y.pk_member,y.pk_awards from cu_member x + select y.pk_member, y.pk_awards + from cu_member x inner join ( select a.pk_member,a.new_level pk_awards from cu_member_awards a @@ -363,13 +364,15 @@ update cu_member - set pk_awards = (select pk_id from bd_awards where awards_value = 0) + set pk_awards = (select pk_id from bd_awards where awards_value = 0), + pk_range_awards = (select pk_id from bd_awards where awards_value = 0) update cu_member - set pk_awards = (select pk_id from bd_awards where awards_value = 5) + set pk_awards = (select pk_id from bd_awards where awards_value = 5), + pk_range_awards = (select pk_id from bd_awards where awards_value = 5) where pk_settle_grade = ( select pk_id from bd_grade @@ -401,7 +404,11 @@ using ( select pk_member, max(pk_awards) pk_awards from ( - select #{item.pkMember} pk_member,#{item.newLevel} pk_awards, #{item.awardType} award_type from dual + select + #{item.pkMember} pk_member, + #{item.newLevel} pk_awards, + #{item.awardType} award_type + from dual ) where award_type = #{awardType} 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 80b3c5e3..139a6292 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 @@ -69,13 +69,14 @@ inner join ( select ca.pk_member, min(ca.pk_id) pk_id from cu_member_awards ca - inner join bd_awards bw - on ca.new_level = bw.pk_id + inner join bd_awards bw + on ca.new_level = bw.pk_id + and bw.del_flag = 0 + and bw.awards_value >= 5 where ca.del_flag = 0 - and bw.del_flag = 0 - and bw.awards_value >= 5 and ca.up_type = 1 and ca.period = #{period} + and ca.award_type = #{awardType} and ca.pk_member in (select pk_id from cu_member start @@ -85,7 +86,13 @@ ) cx on cw.pk_id = cx.pk_id where cw.del_flag = 0 ) b 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 + + + a.pk_share_awards = b.old_level + @@ -142,14 +149,15 @@