Hentua
2023-04-20 929bbd74135fd867537adc18a171491b83679090
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -1,6 +1,9 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.tree.MatrixTree;
import cc.mrbird.febs.common.tree.MemberNode;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
@@ -41,54 +44,59 @@
    private final MallMemberMapper memberMapper;
    private final MallOrderInfoMapper mallOrderInfoMapper;
    private final IApiMallMemberWalletService iApiMallMemberWalletService;
    private final IMallMoneyFlowService mallMoneyFlowService;
    private final MallMemberWalletMapper mallMemberWalletMapper;
    private final SqlSessionTemplate sqlSessionTemplate;
    private final IApiMallMemberWalletService memberWalletService;
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final MallMqRecordMapper mallMqRecordMapper;
    private final MatrixTreeNodeMapper matrixTreeNodeMapper;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void autoUpAgentLevel(Long memberId) {
        log.info("###代理自动升级###");
        MallMember member = memberMapper.selectById(memberId);
        if(StrUtil.isBlank(member.getReferrerIds())) {
        MatrixTree tree = MatrixTree.getInstance();
        MemberNode node = tree.getNode(member.getInviteId());
        if (node != null) {
            return;
        }
        List<String> ids = StrUtil.split(member.getReferrerIds(), ',');
        List<MallMember> parentMembers = memberMapper.selectByInviteIds(ids);
        for (MallMember parent : parentMembers) {
            // 没有购买套餐无法升级合伙人等级
            if (AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())) {
                continue;
            }
            //合伙人的下一个层级
            String parentLevel = parent.getLevel();
            String nextLevel = MemberLevelEnum.SECOND_LEVEL.getNextLevel(parentLevel);
            if (parentLevel.equals(nextLevel)) {
                log.info("当前层级无下一级:{}", parent.getLevel());
                continue;
            }
            DataDictionaryCustom nextLevelDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("AGENT_LEVEL_REQUIRE", nextLevel);
            AgentInfo agentInfo = JSONObject.parseObject(nextLevelDic.getValue(), AgentInfo.class);
            if (!directMemberCnt(parent, agentInfo)) {
                continue;
            }
            if (!agentCntFinish(parent, agentInfo)) {
                continue;
            }
            if (!teamIncome(parent, agentInfo)) {
                continue;
            }
            parent.setLevel(nextLevel);
            memberMapper.updateById(parent);
        MatrixTreeNode matrixTreeNode = matrixTreeNodeMapper.selectByTreeNode(memberId);
        if (matrixTreeNode != null) {
            return;
        }
        node = new MemberNode();
        node.setInviteId(member.getInviteId());
        node.setPhone(member.getPhone());
        node.setRefererId(member.getReferrerId());
        node.setMemberId(member.getId());
        MemberNode parentNode = tree.addNode(node);
        matrixTreeNode = new MatrixTreeNode();
        matrixTreeNode.setTreeNode(memberId);
        matrixTreeNode.setParentNode(parentNode.getMemberId());
        matrixTreeNodeMapper.insert(matrixTreeNode);
        List<DataDictionaryCustom> dicList = dataDictionaryCustomMapper.selectDicByType(AppContants.AGENT_LEVEL);
        DataDictionaryCustom dic = null;
        for (DataDictionaryCustom dataDictionaryCustom : dicList) {
            if (Integer.parseInt(dataDictionaryCustom.getValue()) == parentNode.CHILD.size()) {
                dic = dataDictionaryCustom;
            }
        }
        if (dic == null) {
            return;
        }
        MallMember parentMember = memberMapper.selectById(parentNode.getMemberId());
        parentMember.setChildNodeCnt(parentNode.CHILD.size());
        parentMember.setLevel(dic.getCode());
        memberMapper.updateById(parentMember);
    }
    /**
@@ -184,9 +192,9 @@
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return;
        }
        if(2 != mallOrderInfo.getStatus()){
            return;
        }
//        if(2 != mallOrderInfo.getStatus()){
//            return;
//        }
        /**
         * 分享补贴 直推消费额10%
         */