diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java index b9add7c8..dc55cea2 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java @@ -1509,9 +1509,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { // 保存会员等级变动 saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, 0); - if (EGrade.VIP.getValue() == gradeDTO.getGradeValue() - || EGrade.REGION.getValue() == gradeDTO.getGradeValue()) { - // 店主、代理级别,判断处理区域 + if (EGrade.REGION.getValue() == gradeDTO.getGradeValue()) { + // 代理级别,判断处理区域 if (null != saOrder.getRegionProvince() && null != saOrder.getRegionCity()) { iCuMemberRetailRegionService.mergeMemberRetailRegion(CuMemberRetailRegion.builder() @@ -1532,18 +1531,14 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { @Transactional(rollbackFor = Exception.class) @Override public void updateRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt) { - // 更新会员信息 - updateCuMember(cuMember); - - // 会员等级 + // 会员新等级 GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData(); if (!cuMember.getPkSettleGrade().equals(saOrder.getPkGradeOld())) { // 保存会员等级变动(如果旧等级和新等级相同,则不记录) saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, saOrder.getPkGradeOld()); - if (EGrade.VIP.getValue() == gradeDTO.getGradeValue() - || EGrade.REGION.getValue() == gradeDTO.getGradeValue()) { - // 店主、代理级别,判断处理区域 + if (EGrade.REGION.getValue() == gradeDTO.getGradeValue()) { + // 代理级别,判断处理区域 if (null != saOrder.getRegionProvince() && null != saOrder.getRegionCity()) { iCuMemberRetailRegionService.mergeMemberRetailRegion(CuMemberRetailRegion.builder() @@ -1554,11 +1549,16 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { .build()); } } + + // 判断处理会员自己等级(下级有店主、代理,自己判断是否升级高级店主、董事代理) + this.handleSelfLevel(gradeDTO, cuMember, saOrder.getPayTime()); } + // 更新会员信息 + updateCuMember(cuMember); - // 判断处理推荐人等级 + // 判断处理推荐人等级(自己是店主、代理,判断推荐人是否升级高级店主、董事代理) handleParentUpgrade(cuMember, saOrder, gradeDTO); - + // 处理会员账户 this.handleRetailMemberAccount(saOrder, cuMemberAccountExt); } @@ -1677,11 +1677,41 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { } } + /** + * 处理会员自己等级 + * + * @param gradeDTO 新等级 + * @param cuMember 会员自己 + * @param payTime 订单支付时间(升级记录时间) + */ + private void handleSelfLevel(GradeDTO gradeDTO, CuMember cuMember, Date payTime) { + if (null == gradeDTO) { + gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData(); + } + if (gradeDTO.getGradeValue().equals(EGrade.REGION.getValue())) { + // 会员当前是区域代理,查询直推是否存在区域代理 + SaOrder recommendOrder = iCuMemberService.listRecommendVipOrder(cuMember.getPkId(), null, EGrade.REGION.getValue()); + if (null != recommendOrder) { + recommendOrder.setPayTime(payTime); + cuMember.setPkSettleGrade(iGradeServiceApi.getGradeByGradeValue(EGrade.DIRECTOR.getValue(), cuMember.getPkSettleCountry()).getData().getPkId()); + saveLevelUpgrade(cuMember, EUpgradeType.AUTO_UPGRADE.getValue(), recommendOrder, gradeDTO.getPkId()); + } + } else if (gradeDTO.getGradeValue().equals(EGrade.VIP.getValue())) { + // 会员当前是博羚店主,查询直推是否存在博羚店主 + SaOrder recommendOrder = iCuMemberService.listRecommendVipOrder(cuMember.getPkId(), null, EGrade.VIP.getValue()); + if (null != recommendOrder) { + recommendOrder.setPayTime(payTime); + cuMember.setPkSettleGrade(iGradeServiceApi.getGradeByGradeValue(EGrade.S_VIP.getValue(), cuMember.getPkSettleCountry()).getData().getPkId()); + saveLevelUpgrade(cuMember, EUpgradeType.AUTO_UPGRADE.getValue(), recommendOrder, gradeDTO.getPkId()); + } + } + } + /** * 处理推荐人等级 * - * @param saOrder - * @param currentDateTime + * @param saOrder 升级订单 + * @param currentDateTime 当前时间 */ private void handleParentLevel(SaOrderExt saOrder, Date currentDateTime) { // 注册、升级订单,需要判断是否有推荐人升级的 diff --git a/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml b/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml index 22a176b9..fe6d8799 100644 --- a/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml +++ b/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml @@ -2418,9 +2418,12 @@ and so.order_code != #{orderCode} - and bg.grade_value >= #{gradeValue}) so + and bg.grade_value >= #{gradeValue} + order by so.pay_time + ) so where rownum = 1 +