From c7330c8bfa031252d8d1f063b2a9c78568ae73c6 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Tue, 26 Aug 2025 11:40:35 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=A5=96=E9=87=91=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=BD=93=E5=A4=A9=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E8=AE=A2=E5=8D=95=E4=BF=AE=E6=94=B9=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E7=AD=89=E7=BA=A7=E3=80=81=E4=BF=AE=E6=94=B9=E6=BF=80=E6=B4=BB?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B9=9F=E4=BC=9A=E8=BF=9B=E8=A1=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/CuMemberRetailRangeMapper.java | 10 ++ .../service/ICuMemberRetailRangeService.java | 9 ++ .../impl/CuMemberRetailRangeServiceImpl.java | 6 + .../service/impl/BonusSettleRangeHandle.java | 47 +++++--- .../detail/mapper/CuMemberGradeMapper.java | 6 +- .../detail/service/ICuMemberGradeService.java | 12 +- .../impl/CuMemberGradeServiceImpl.java | 8 +- .../achieve/CuMemberRetailRangeMapper.xml | 106 ++++++++++-------- .../bonus/detail/CuMemberGradeMapper.xml | 21 +--- .../provider/CuMemberServiceLogProvider.java | 2 - 10 files changed, 131 insertions(+), 96 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 7493002f..536d9257 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 @@ -28,6 +28,7 @@ public interface CuMemberRetailRangeMapper extends BaseMapper queryCuMemberRetailRangeParent(@Param("tableName") String tableName, @Param("saOrderExtList") List saOrderExtList); + CuMemberRetailRangeExt queryCuMemberRetailRangeByMemberId(@Param("tableName") String tableName, @Param("memberId") Long memberId); /** @@ -35,4 +36,13 @@ public interface CuMemberRetailRangeMapper extends BaseMapper cuMemberRangeExtList); + /** + * 更新会员激活状态 + * + * @param rangeTableName + * @param pkMemberList + * @return + */ + int updateMemberEnable(@Param("rangeTableName") String rangeTableName, @Param("pkMemberList") List 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 2636908d..e5683e00 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 @@ -32,4 +32,13 @@ 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 e6c4e058..b35679ef 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 @@ -61,4 +61,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 da0679ec..fcc6540d 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 @@ -1,5 +1,6 @@ package com.hzs.bonus.bonus.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; @@ -90,14 +91,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 更新网体 iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth); + // 更新会员手动升级 + iCuMemberGradeService.updateCuMemberManualGrade(rangeTableName, period); // 当期的手动激活的记录列表 - Map activateMap = this.getActivateMap(settleStartDate); + List activateList = this.getActivateList(settleStartDate); if (retailOrderList.size() > 0) { // 会员购买升级记录 Map memberLevelMap = new HashMap<>(); - List memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName); + List memberLevelList = iCuMemberGradeService.queryCuMemberLevel(settleStartDate, settleEndDate); memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel)); // 会员的自动升级记录 @@ -105,6 +108,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { List autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate); autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel)); + 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(key:会员ID,value:结算扩展) Map memberRangeExtMap = new HashMap<>(); // 按照血缘,查询该会员所有伞上会员 @@ -119,8 +134,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 等级map(key:等级ID,value:等级对象) Map gradeIdMap = new HashMap<>(); // 等级列表 - List retaiGradeList = bonusConfigDTO.getRetaiGradeList(); - for (BdGrade bdGrade : retaiGradeList) { + List retailGradeList = bonusConfigDTO.getRetaiGradeList(); + for (BdGrade bdGrade : retailGradeList) { gradeIdMap.put(bdGrade.getPkId(), bdGrade); } // 配送收益配置 @@ -133,10 +148,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 上面更新网体,按会员表是否激活进行处理 for (SaOrderExt saOrderExt : retailOrderList) { - CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { // 注册、升级才能算激活状态 + CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue()); } } @@ -147,7 +162,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 订单指定产品盒数(计算等级使用) BigDecimal boxNum = saOrderExt.getBoxNum(); - // 个人累计消费pv BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); // 复购、重消,盒数、业绩算个人累计数据(盒数、业绩) @@ -212,6 +226,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { } } } + if (cuMemberBonusRangeList.size() > 0) { if (bonusRecordDetailVO.getCuMemberBonusRangeList() == null) { bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList); @@ -228,6 +243,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); + } } } @@ -713,21 +734,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { /** - * 获取手动激活map + * 获取手动激活List * * @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/mapper/CuMemberGradeMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java index e25446b0..e411356a 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/mapper/CuMemberGradeMapper.java @@ -14,12 +14,12 @@ import java.util.List; public interface CuMemberGradeMapper extends BaseMapper { /** - * 回退会员等级 + * 更新会员手动升级 */ - void updateCuMemberGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period); + void updateCuMemberManualGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period); /** - * 查询会员等级 + * 查询会员升级记录 */ List queryCuMemberLevel(@Param("startDate") Date startDate, @Param("endDate") Date endDate, 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 ecfdd9f5..97256db2 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 @@ -13,12 +13,14 @@ import java.util.List; public interface ICuMemberGradeService extends IService { /** - * 回退极差奖衔,每日重新结算,先把等级回退到前一天 - * - * @param period 结算期间 - * @param rangeTableName 结算表 + * 更新会员手动升级 */ - List calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName); + void updateCuMemberManualGrade(String rangeTableName, Integer period); + + /** + * 回退极差奖衔,每日重新结算,先把等级回退到前一天 + */ + List queryCuMemberLevel(Date startDate, Date endDate); /** * 自动升级列表 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 c5e9d8ae..63d6a40c 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 @@ -18,9 +18,13 @@ import java.util.List; 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.updateCuMemberGrade(rangeTableName, period); + baseMapper.updateCuMemberManualGrade(rangeTableName, period); + } + + @Override + public List queryCuMemberLevel(Date startDate, Date endDate) { // 购买升级记录列表 return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.BUY_UPGRADE.getValue()); } 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 53a0df16..49a15c7d 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 @@ -80,7 +80,7 @@ recommend_num = 0, team_num = 0, enable_status = 1, - pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20), + pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20), region_address = 0, big_box_num = 0, small_box_num = 0, @@ -203,57 +203,65 @@ where ba.del_flag = 0 + + + + update ${rangeTableName} cmr + set cmr.enable_status = 0 + where cmr.pk_member in + + #{item} + + + diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml index 198827f1..ec277521 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuMemberGradeMapper.xml @@ -2,24 +2,8 @@ - - - - - - - - - - - - - - - - - - + + merge into ${rangeTableName} a using ( select a.pk_member, max(a.new_level) pk_grade @@ -40,6 +24,7 @@ a.pk_grade = b.pk_grade +