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..06fd85b6 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,7 +125,13 @@ public class CuMemberServiceImpl extends ServiceImpl i @Autowired private RabbitTemplate rabbitTemplate; + @Autowired + private CuMemberLevelServiceImpl cuMemberLevelServiceImpl; + @DubboReference + private IMemberServiceApi memberServiceApi; + @DubboReference + private IGradeServiceApi gradeService; @Override public Boolean saveMember(CuMember cuMember) { boolean save = false; @@ -1361,6 +1372,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 +1395,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 +