From a99c27a3ff282ab1fc67185ded130cbb6a8b935f Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Fri, 26 Sep 2025 15:19:55 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E8=B5=A0=E7=82=B9=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E7=9B=B4=E6=8E=A8=E4=B8=8B=E6=B2=A1=E6=9C=89=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E5=A1=AB=E5=85=85=E7=9A=84=EF=BC=8C=E5=88=99=E6=8C=89=E8=A1=80?= =?UTF-8?q?=E7=BC=98=E4=B8=8A=E9=80=BB=E8=BE=91=E8=B5=B0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BonusSettleRangeHandle.java | 107 +++++++++--------- 1 file changed, 56 insertions(+), 51 deletions(-) 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 ea050024..20a90d34 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 @@ -1106,7 +1106,62 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { // 阶段奖金处理列表 List bonusStageDataList = new ArrayList<>(); - if (EBonusStageType.NORMAL.getValue() == newRetailDetail.getPointType()) { + boolean giftBool = false; + if (EBonusStageType.GIFT.getValue() == newRetailDetail.getPointType()) { + // 赠送点位处理,赠送点位给自己直推会员轮流布点 + iCuMemberRetailDetailService.listChildRetailDetail(rangeTableName, rangeDetailTableName, memberRangeExtMap, + sourceMember, eBonusStage); + // 判断是不是都已经填充过一轮了,如果是则需要重新开始从第一个开始填充 + LinkedHashMap childRetailMap = sourceMember.getChildRetailMap(); + if (childRetailMap.size() > 0) { + // 获取最后一条数据 key + Date lastKey = new ArrayList<>(childRetailMap.keySet()).get(childRetailMap.size() - 1); + // 获取最新的会员注册时间,如果没有则设置一个初始化时间 + Date giftPayTime = sourceMember.getGiftPayTime(); + if (null == giftPayTime || giftPayTime.compareTo(lastKey) == 0) { + giftPayTime = BonusConstants.GIFT_PAY_TIME; + } + + for (Date keyDate : childRetailMap.keySet()) { + if (keyDate.compareTo(giftPayTime) > 0) { + // 当前会员注册比之前的要晚,则顺序进行填充 + giftPayTime = keyDate; + // 需要填充的直推会员 + CuMemberRetailRangeExt targetMember = childRetailMap.get(keyDate); + // 推荐人一阶段子点位列表 + LinkedHashMap parentDetailList = targetMember.getOneDetailMap(); + + // 推荐人第一层点位处理 + giftBool = iCuMemberBonusStageService.firstLevelhandle(parentDetailList, newRetailDetail, rangeTableName, rangeDetailTableName, + memberRangeExtMap, settleDate, eBonusStage, bonusStageDataList); + if (giftBool) { + // 在第一层找到并填充点位,就开始下一个点位的处理 + break; + } + // 推荐人第二层点位处理 + giftBool = iCuMemberBonusStageService.secondLevelhandle(parentDetailList, newRetailDetail, rangeTableName, rangeDetailTableName, + memberRangeExtMap, settleDate, eBonusStage, bonusStageDataList); + if (giftBool) { + // 在第二层找到并填充点位,就开始下一个点位的处理 + break; + } + // 推荐人第三层点位处理 + giftBool = iCuMemberBonusStageService.thirdLevelhandle(parentDetailList, newRetailDetail, rangeTableName, rangeDetailTableName, + memberRangeExtMap, settleDate, eBonusStage, bonusStageDataList); + if (giftBool) { + // 在第三层找到并填充点位,就开始下一个点位的处理 + break; + } + } + } + if (giftBool) { + sourceMember.setGiftPayTime(giftPayTime); + } + } + } + + if (EBonusStageType.NORMAL.getValue() == newRetailDetail.getPointType() + || !giftBool) { // 普通点位处理 // 推荐人 Long pkParent = sourceMember.getPkParent(); @@ -1154,56 +1209,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { break; } } - } else { - // 赠送点位处理,赠送点位给自己直推会员轮流布点 - iCuMemberRetailDetailService.listChildRetailDetail(rangeTableName, rangeDetailTableName, memberRangeExtMap, - sourceMember, eBonusStage); - // 判断是不是都已经填充过一轮了,如果是则需要重新开始从第一个开始填充 - LinkedHashMap childRetailMap = sourceMember.getChildRetailMap(); - if (childRetailMap.size() > 0) { - // 获取最后一条数据 key - Date lastKey = new ArrayList<>(childRetailMap.keySet()).get(childRetailMap.size() - 1); - // 获取最新的会员注册时间,如果没有则设置一个初始化时间 - Date giftPayTime = sourceMember.getGiftPayTime(); - if (null == giftPayTime || giftPayTime.compareTo(lastKey) == 0) { - giftPayTime = BonusConstants.GIFT_PAY_TIME; - } - - for (Date keyDate : childRetailMap.keySet()) { - if (keyDate.compareTo(giftPayTime) > 0) { - // 当前会员注册比之前的要晚,则顺序进行填充 - giftPayTime = keyDate; - - // 需要填充的直推会员 - CuMemberRetailRangeExt targetMember = childRetailMap.get(keyDate); - // 推荐人一阶段子点位列表 - LinkedHashMap parentDetailList = targetMember.getOneDetailMap(); - - // 推荐人第一层点位处理 - boolean forBool = iCuMemberBonusStageService.firstLevelhandle(parentDetailList, newRetailDetail, rangeTableName, rangeDetailTableName, - memberRangeExtMap, settleDate, eBonusStage, bonusStageDataList); - if (forBool) { - // 在第一层找到并填充点位,就开始下一个点位的处理 - break; - } - // 推荐人第二层点位处理 - forBool = iCuMemberBonusStageService.secondLevelhandle(parentDetailList, newRetailDetail, rangeTableName, rangeDetailTableName, - memberRangeExtMap, settleDate, eBonusStage, bonusStageDataList); - if (forBool) { - // 在第二层找到并填充点位,就开始下一个点位的处理 - break; - } - // 推荐人第三层点位处理 - forBool = iCuMemberBonusStageService.thirdLevelhandle(parentDetailList, newRetailDetail, rangeTableName, rangeDetailTableName, - memberRangeExtMap, settleDate, eBonusStage, bonusStageDataList); - if (forBool) { - // 在第三层找到并填充点位,就开始下一个点位的处理 - break; - } - } - } - sourceMember.setGiftPayTime(giftPayTime); - } } if (CollectionUtil.isNotEmpty(bonusStageDataList)) {