forked from angelo/java-retail-app
				
			## Opt - 修改直推 等级调整(未上)
This commit is contained in:
		
							parent
							
								
									4ca6f3a56c
								
							
						
					
					
						commit
						f5d570d60c
					
				| 
						 | 
				
			
			@ -623,4 +623,9 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
 | 
			
		|||
     */
 | 
			
		||||
    SaOrder listRecommendVipOrder(@Param("pkMember") Long pkMember, @Param("orderCode") String orderCode);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     *
 | 
			
		||||
     */
 | 
			
		||||
    int getMemberCountWithGradeAndParent(@Param("parentId") Long parentId, @Param("gradeValue") Integer gradeValue);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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<CuMemberMapper, CuMember> 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<CuMemberMapper, CuMember> 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<CuMemberMapper, CuMember> 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<CuMemberLevel> 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<CuMemberLevel> 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<CuMemberLevel> 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 如果是则升等级
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 推送修改直推日志
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2419,5 +2419,14 @@
 | 
			
		|||
        and bg.grade_value >= 60) so
 | 
			
		||||
        where rownum = 1
 | 
			
		||||
    </select>
 | 
			
		||||
    <select id="getMemberCountWithGradeAndParent" resultType="java.lang.Integer">
 | 
			
		||||
        select
 | 
			
		||||
            count(cu.PK_ID)
 | 
			
		||||
        from cu_member cu
 | 
			
		||||
        left join bd_grade bg on cu.PK_SETTLE_GRADE = bg.pk_id
 | 
			
		||||
        where
 | 
			
		||||
            cu.PK_PARENT = #{parentId}
 | 
			
		||||
          and bg.GRADE_VALUE = #{gradeValue}
 | 
			
		||||
    </select>
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue