package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.tree.MatrixTree; import cc.mrbird.febs.common.tree.MemberNode; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MatrixTreeNode; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MatrixTreeNodeMapper; import cc.mrbird.febs.mall.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 MallMemberMapper mallMemberMapper; private final MatrixTreeNodeMapper matrixTreeNodeMapper; @Override public MemberNode addTreeNode(Long memberId) { MallMember 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.getReferrerId())) { MemberNode parentNode = instance.getNode(mallMember.getReferrerId()); 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.setPhone(mallMember.getPhone()); node.setMemberId(memberId); node.setInviteId(mallMember.getInviteId()); node.setRefererId(mallMember.getReferrerId()); return instance.addNode(node); } }