From 83f6aa393bd1202af31eecdeccc31ec70535458b Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Thu, 21 Aug 2025 09:23:19 +0800 Subject: [PATCH] =?UTF-8?q?##=20Opt=20-=20=E4=BF=AE=E6=94=B9=E7=9B=B4?= =?UTF-8?q?=E6=8E=A8=20=E7=AD=89=E7=BA=A7=E8=B0=83=E6=95=B4(=E6=9C=AA?= =?UTF-8?q?=E4=B8=8A)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/base/mapper/CuMemberMapper.java | 5 + .../service/impl/CuMemberServiceImpl.java | 106 ++++++++++++++++++ .../mapper/member/base/CuMemberMapper.xml | 9 ++ 3 files changed, 120 insertions(+) diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java index bcbab237..15e8b7cd 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java @@ -623,4 +623,9 @@ public interface CuMemberMapper extends BaseMapper { */ SaOrder listRecommendVipOrder(@Param("pkMember") Long pkMember, @Param("orderCode") String orderCode); + + /** + * + */ + int getMemberCountWithGradeAndParent(@Param("parentId") Long parentId, @Param("gradeValue") Integer gradeValue); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java index 1d777aee..ecfa05dc 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java @@ -23,12 +23,14 @@ import com.hzs.common.domain.member.account.CuMemberAccount; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailSExt; import com.hzs.common.domain.member.base.*; import com.hzs.common.domain.member.detail.CuMemberGrade; +import com.hzs.common.domain.member.detail.CuMemberLevel; import com.hzs.common.domain.member.detail.CuMemberServiceLog; import com.hzs.common.domain.member.empty.CuMemberEmptyCode; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.sale.wares.BdWaresAuthority; import com.hzs.common.domain.system.config.BdAwards; +import com.hzs.common.domain.system.config.BdGrade; import com.hzs.common.domain.system.config.BdTradeWhiteConfig; import com.hzs.common.security.service.UserTokenService; import com.hzs.common.security.utils.SecurityUtils; @@ -37,6 +39,7 @@ import com.hzs.member.account.dto.BusinessCommissionDTO; import com.hzs.member.account.dto.MemberAmountDTO; import com.hzs.member.account.service.ICuMemberAccountService; import com.hzs.member.account.service.ICuMemberTradeService; +import com.hzs.member.base.IMemberServiceApi; import com.hzs.member.base.param.UpdatePlaceParentPetitionParam; import com.hzs.member.base.dto.*; import com.hzs.member.base.mapper.CuMemberMapper; @@ -44,6 +47,7 @@ import com.hzs.member.base.param.*; import com.hzs.member.base.service.*; import com.hzs.member.base.vo.*; import com.hzs.member.detail.service.ICuMemberServiceLogService; +import com.hzs.member.detail.service.impl.CuMemberLevelServiceImpl; import com.hzs.member.empty.service.ICuMemberEmptyCodeService; import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam; import com.hzs.member.handlebusiness.vo.BusinessMemberVO; @@ -71,6 +75,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -120,6 +125,14 @@ public class CuMemberServiceImpl extends ServiceImpl i @Autowired private RabbitTemplate rabbitTemplate; + @Qualifier("memberServiceApi") + @Autowired + private IMemberServiceApi memberServiceApi; + @Qualifier("gradeService") + @Autowired + private IGradeServiceApi gradeService; + @Autowired + private CuMemberLevelServiceImpl cuMemberLevelServiceImpl; @Override public Boolean saveMember(CuMember cuMember) { @@ -1361,6 +1374,22 @@ public class CuMemberServiceImpl extends ServiceImpl i try { // 修改直推日志 sendUpdateParentLog(parentParam, EApprovalBusiness.CU_MEMBER_PARENT.getValue(), code, loginUser); + + + /** + * 如果当前用户为区域代理 原上级为董事 验证是否掉等级 , 新上级如果为区域代理 升等级(董事) + * 如果当前用户为博羚店主 原上级为高级店主 验证是否掉等级 , 新上级如果为博羚店主 升等级(高级店主) + */ + // 新上级 uc.getEditNewPlaceMemberCode() + // 旧上级 getMemberById(uc.getPkParent()).getMemberCode() + // 关闭直推修改等级逻辑 + if(1 == 2){ + CuMember newMember = memberServiceApi.getMember(uc.getEditNewPlaceMemberCode()).getData(); + CuMember oldMember = getMemberById(uc.getPkParent()); + CuMember mainMember = getMember(uc.getPkMember()); + validateGrade(mainMember, oldMember, newMember); + } + } catch (Exception e) { e.printStackTrace(); } @@ -1368,6 +1397,83 @@ public class CuMemberServiceImpl extends ServiceImpl i return code; } + public void validateGrade(CuMember mainMember, CuMember oldMember, CuMember newMember){ + Integer mainGradeValue = gradeService.getGrade(mainMember.getPkSettleGrade()).getData().getGradeValue(); + Integer oldGradeValue = gradeService.getGrade(oldMember.getPkSettleGrade()).getData().getGradeValue(); + Integer newGradeValue = gradeService.getGrade(newMember.getPkSettleGrade()).getData().getGradeValue(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CuMemberLevel::getPkMember, mainMember.getPkId()); + queryWrapper.eq(CuMemberLevel::getUpType, EUpgradeType.BUY_UPGRADE.getValue()); + queryWrapper.isNotNull(CuMemberLevel::getPkOrder); + queryWrapper.orderByDesc(CuMemberLevel::getUpgradeTime); + CuMemberLevel lastUpgrade = cuMemberLevelServiceImpl.getOne(queryWrapper, false); + if(mainGradeValue.equals(EGrade.VIP.getValue())){ + // old 直推是否还有EGrade.VIP 没有则掉等级 + int subUserCount = baseMapper.getMemberCountWithGradeAndParent(oldMember.getPkId(), EGrade.VIP.getValue()); + if(subUserCount < 1){ + // 掉等级 + GradeDTO targetGrade = gradeService.getGradeByGradeValue(EGrade.VIP.getValue(), SecurityUtils.getPkCountry()).getData(); + oldMember.setPkSettleGradeValue(targetGrade.getPkId()); + LambdaQueryWrapper removeWrapper = new LambdaQueryWrapper<>(); + removeWrapper.eq(CuMemberLevel::getPkMember, oldMember.getPkId()); + removeWrapper.eq(CuMemberLevel::getPkOrder, lastUpgrade.getPkOrder()); + removeWrapper.eq(CuMemberLevel::getUpType, EUpgradeType.AUTO_UPGRADE.getValue()); + baseMapper.updateById(oldMember); + cuMemberLevelServiceImpl.remove(removeWrapper); + } + if(newGradeValue.equals(EGrade.VIP.getValue())){ + // 升等级 + GradeDTO targetGrade = gradeService.getGradeByGradeValue(EGrade.S_VIP.getValue(), SecurityUtils.getPkCountry()).getData(); + newMember.setPkSettleGradeValue(targetGrade.getPkId()); + CuMemberLevel cuMemberLevel = CuMemberLevel.builder() + .pkMember(newMember.getPkId()) + .upType(EUpgradeType.AUTO_UPGRADE.getValue()) + .oldLevel(newMember.getPkSettleGrade()) + .newLevel(targetGrade.getPkId()) + .upgradeTime(new Date()) + .pkOrder(lastUpgrade.getPkOrder()) + .build(); + cuMemberLevel.setPkCountry(SecurityUtils.getPkCountry()); + cuMemberLevel.setPkCreator(SecurityUtils.getUserId()); + cuMemberLevelServiceImpl.save(cuMemberLevel); + baseMapper.updateById(newMember); + } + // new 是否为EGrade.VIP 如果是则升等级 + }else if(mainGradeValue.equals(EGrade.REGION.getValue())){ + // old 直推是否还有EGrade.REGION 没有则掉等级 + int subUserCount = baseMapper.getMemberCountWithGradeAndParent(oldMember.getPkId(), EGrade.REGION.getValue()); + if(subUserCount < 1){ + // 掉等级 + GradeDTO targetGrade = gradeService.getGradeByGradeValue(EGrade.REGION.getValue(), SecurityUtils.getPkCountry()).getData(); + oldMember.setPkSettleGradeValue(targetGrade.getPkId()); + LambdaQueryWrapper removeWrapper = new LambdaQueryWrapper<>(); + removeWrapper.eq(CuMemberLevel::getPkMember, oldMember.getPkId()); + removeWrapper.eq(CuMemberLevel::getPkOrder, lastUpgrade.getPkOrder()); + removeWrapper.eq(CuMemberLevel::getUpType, EUpgradeType.AUTO_UPGRADE.getValue()); + baseMapper.updateById(oldMember); + cuMemberLevelServiceImpl.remove(removeWrapper); + } + if(newGradeValue.equals(EGrade.REGION.getValue())){ + // 升等级 + GradeDTO targetGrade = gradeService.getGradeByGradeValue(EGrade.DIRECTOR.getValue(), SecurityUtils.getPkCountry()).getData(); + newMember.setPkSettleGradeValue(targetGrade.getPkId()); + CuMemberLevel cuMemberLevel = CuMemberLevel.builder() + .pkMember(newMember.getPkId()) + .upType(EUpgradeType.AUTO_UPGRADE.getValue()) + .oldLevel(newMember.getPkSettleGrade()) + .newLevel(targetGrade.getPkId()) + .upgradeTime(new Date()) + .pkOrder(lastUpgrade.getPkOrder()) + .build(); + cuMemberLevel.setPkCountry(SecurityUtils.getPkCountry()); + cuMemberLevel.setPkCreator(SecurityUtils.getUserId()); + cuMemberLevelServiceImpl.save(cuMemberLevel); + baseMapper.updateById(newMember); + } + // new 是否为EGrade.REGION 如果是则升等级 + } + } + /** * 推送修改直推日志 */ 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 b945e864..b0444400 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 @@ -2419,5 +2419,14 @@ and bg.grade_value >= 60) so where rownum = 1 +