diff --git a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettlePurchaseHandle.java b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettlePurchaseHandle.java index 9204dc5e..435bff52 100644 --- a/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettlePurchaseHandle.java +++ b/hzs-business/hzs-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettlePurchaseHandle.java @@ -538,7 +538,7 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle { BigDecimal grantBonus = BigDecimal.ZERO; while (ComputeUtil.compareGreaterThan(maxBonus, grantBonus)) { // 最大发放奖金 大于 累计发放奖金,则继续处理 - if (sourceMemberTree == null) { + if (null == sourceMemberTree) { break; } int pkGrade = sourceMemberTree.getPkGrade(); @@ -625,6 +625,7 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle { /** * 乐学特殊复购级差,根据法宝券进行计算奖金 * 每个等级最多拨出一张法宝券,给200奖金,遇到V4为止 + * 如果购买时会员没有使用券,那么同等级也可以拨出一张 * * @param settleTableName * @param rangeDtoMap @@ -638,7 +639,7 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle { private void calculateLeXueRangeBonus(String settleTableName, Map rangeDtoMap, BonusConfigDTO bonusConfigDTO, Integer period, Map cuMemberBonusMap, LeXueRangeParam leXueRangeParam, List specialOrderList, List cuMemberBonusRangeList) { - // 计算乐学易考特殊复购极差,找第一个vip,svip,找到有代金券,代金券-1,奖金给金额,第一个是svip后,就不给 + // 旧逻辑: 计算乐学易考特殊复购极差,找第一个vip,svip,找到有代金券,代金券-1,奖金给金额,第一个是svip后,就不给 if (specialOrderList.size() > 0) { // 查找订单血缘上会员 Set expandMemberSet = specialOrderList.stream().distinct().map(SaOrderExt::getPkMember).collect(Collectors.toSet()); @@ -869,6 +870,9 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle { private CuMemberSettleExt getSpecialRangeCuMemberTree(Map cuMemberTreeMap, BonusConfigDTO bonusConfigDTO, CuMemberSettleExt sourceMemberTree, CuMemberSettleExt parentMemberTree, Map cuMemberAssessMap, int pkGrade) { + if (null == parentMemberTree) { + return null; + } if (ECategory.NORMAL.getValue() != parentMemberTree.getCategory() || EAccountStatus.STOP_INCOME.getValue() == parentMemberTree.getAccountStatus() || validatePkBonusItems(bonusConfigDTO, parentMemberTree.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue())