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 53dcfffd..e77b316c 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 @@ -132,4 +132,14 @@ public interface CuMemberRetailRangeMapper extends BaseMapper pkMemberList); + } 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 b8182a78..4739316b 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 @@ -114,4 +114,14 @@ public interface ICuMemberRetailRangeService extends IService cuMemberTreeMap); + + /** + * 更新会员激活状态 + * + * @param rangeTableName + * @param pkMemberList + * @return + */ + int updateMemberEnable(String rangeTableName, List pkMemberList); + } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java index 118cb339..0a5bc83f 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java @@ -149,4 +149,10 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl cuMemberTreeList.add(value)); return cuMemberBonusSettle.handleCutList(cuMemberTreeList); } + + @Override + public int updateMemberEnable(String rangeTableName, List pkMemberList) { + return baseMapper.updateMemberEnable(rangeTableName, pkMemberList); + } + } 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 11325d44..961a994a 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 @@ -111,7 +111,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } // 当期的手动激活的记录列表 - Map activateMap = this.getActivateMap(saOrderExt.getPayTime()); + List activateList = this.getActivateList(saOrderExt.getPayTime()); + Map activateMap = new HashMap<>(); + if (CollectionUtil.isNotEmpty(activateList)) { + activateMap = activateList.stream() + .collect(Collectors.groupingBy( + CuMemberServiceLog::getPkMember, + Collectors.collectingAndThen( + Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)), + optional -> optional.get().getCreationTime() + ) + )); + } // 查询体系奖项配置 Map> vertexBonusMap = iBdVertexBonusService.queryVertexBonus(); @@ -469,6 +480,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName); // 更新网体 iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth); + // 更新会员手动升级 + iCuMemberGradeService.updateCuMemberManualGrade(rangeTableName, period); // 回退历史注水 iCuMemberRetailRangeService.mergeCuMemberRetailBackBoxBySpecial(rangeTableName, yesterdayRangeTableName, period); @@ -476,7 +489,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { iCuMemberRetailRangeService.mergeCuMemberRetailRangeBySpecial(rangeTableName, period); // 当期的手动激活的记录列表 - Map activateMap = this.getActivateMap(settleStartDate); + List activateList = this.getActivateList(settleStartDate); if (retailOrderList.size() > 0) { // 复购订单级差数据map(key:订单ID,value:订单明细+级差) @@ -489,6 +502,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName); memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel)); + Map activateMap = new HashMap<>(); + if (CollectionUtil.isNotEmpty(activateList)) { + activateMap = activateList.stream() + .collect(Collectors.groupingBy( + CuMemberServiceLog::getPkMember, + Collectors.collectingAndThen( + Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)), + optional -> optional.get().getCreationTime() + ) + )); + } + // 按照血缘,查询该会员所有伞上会员 List memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList); @@ -653,6 +678,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } // 更新网体 iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap); + } else { + // 当日没有订单,也需要处理手动激活 + if (CollectionUtil.isNotEmpty(activateList)) { + List pkMemberList = activateList.stream().map(CuMemberServiceLog::getPkMember).collect(Collectors.toList()); + iCuMemberRetailRangeService.updateMemberEnable(rangeTableName, pkMemberList); + } } } @@ -2102,17 +2133,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { * @param settleStartDate * @return */ - private Map getActivateMap(Date settleStartDate) { + private List getActivateList(Date settleStartDate) { // 当期的手动激活的记录列表 - List activateList = iCuMemberServiceLogServiceApi.listActivateLog(settleStartDate).getData(); - return activateList.stream() - .collect(Collectors.groupingBy( - CuMemberServiceLog::getPkMember, - Collectors.collectingAndThen( - Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)), - optional -> optional.get().getCreationTime() - ) - )); + return iCuMemberServiceLogServiceApi.listActivateLog(settleStartDate).getData(); } /** diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java index 42165197..159cca79 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/ICuMemberGradeService.java @@ -14,7 +14,12 @@ import java.util.List; public interface ICuMemberGradeService extends IService { /** - * 回退极差奖衔,每日重新结算,先把奖衔回退到前一天 + * 更新会员手动升级 + */ + void updateCuMemberManualGrade(String rangeTableName, Integer period); + + /** + * 回退等级,每日重新结算,先把等级回退到前一天 * * @param period 结算期间 * @param rangeTableName 结算表 diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java index 34cfd152..2b4db518 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuMemberGradeServiceImpl.java @@ -17,11 +17,16 @@ import java.util.List; @Service public class CuMemberGradeServiceImpl extends ServiceImpl implements ICuMemberGradeService { + @Override - public List calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName) { - // 更新奖衔,回退等级 + public void updateCuMemberManualGrade(String rangeTableName, Integer period) { + // 回退等级,更新手动升级 baseMapper.deleteCuMemberGrade(period); baseMapper.updateCuMemberGrade(rangeTableName, period); + } + + @Override + public List calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName) { return baseMapper.queryCuMemberLevel(startDate, endDate); } 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 82e61e73..ee46ee93 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 @@ -816,4 +816,14 @@ where pk_parent = #{pkParent} + + + update ${rangeTableName} cmr + set cmr.enable_status = 0 + where cmr.pk_member in + + #{item} + + +