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<MatrixTreeNodeMapper, MatrixTreeNode> 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);
|
}
|
}
|