package cc.mrbird.febs.dapp.service.impl; import cc.mrbird.febs.common.tree.MatrixTree; import cc.mrbird.febs.common.tree.MemberNode; import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.entity.MatrixTreeNode; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cc.mrbird.febs.dapp.mapper.MatrixTreeNodeMapper; import cc.mrbird.febs.dapp.service.IMatrixTreeNodeService; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @Slf4j @Service @RequiredArgsConstructor public class MatrixTreeNodeServiceImpl extends ServiceImpl implements IMatrixTreeNodeService { private final DappMemberDao mallMemberMapper; private final MatrixTreeNodeMapper matrixTreeNodeMapper; @Override public MemberNode addTreeNode(Long memberId) { DappMemberEntity mallMember = mallMemberMapper.selectById(memberId); if (mallMember == null) { return null; } MatrixTree instance = MatrixTree.getInstance(); MemberNode node = instance.getNode(memberId); if (node != null) { return null; } if (StrUtil.isNotBlank(mallMember.getRefererId())) { MemberNode parentNode = instance.getNode(mallMember.getRefererId()); MemberNode notWholeNode = null; if (parentNode != null) { notWholeNode = instance.findNotWholeNode(parentNode); } else { notWholeNode = instance.findNotWholeNode(); } MatrixTreeNode treeNode = new MatrixTreeNode(); treeNode.setTreeNode(mallMember.getId()); treeNode.setParentNode(notWholeNode.getMemberId()); matrixTreeNodeMapper.insert(treeNode); } else { MatrixTreeNode treeNode = new MatrixTreeNode(); treeNode.setTreeNode(mallMember.getId()); matrixTreeNodeMapper.insert(treeNode); } node = new MemberNode(); node.setMemberId(memberId); node.setInviteId(mallMember.getInviteId()); node.setRefererId(mallMember.getRefererId()); return instance.addNode(node); } }