package cc.mrbird.febs; import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.entity.DbMemberNode; import cc.mrbird.febs.dapp.mapper.DappAchieveMemberTreeDao; import cc.mrbird.febs.dapp.mapper.DappFundFlowDao; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cc.mrbird.febs.dapp.mapper.DbMemberNodeMapper; import cc.mrbird.febs.dapp.service.DappSystemService; import cc.mrbird.febs.dapp.vo.MemberNodeVo; import cc.mrbird.febs.tree.MatrixTree; import cc.mrbird.febs.tree.MemberNode; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; /** * @author wzy * @date 2022-08-24 **/ @SpringBootTest public class TreeTest { @Test public void matrixTest() { MatrixTree matrixTree = MatrixTree.getInstance(); String refererId = null; for (int i = 0; i < 11; i++) { String inviteId = RandomUtil.randomString(6); if (i == 2) { refererId = inviteId; } MemberNode memberNode = new MemberNode(); memberNode.setMemberId(Long.parseLong(i + 1 + "")); memberNode.setInviteId(inviteId); memberNode.setAddress(RandomUtil.randomString(14)); memberNode.setRefererId(refererId); matrixTree.addNode(memberNode); } System.out.println(System.currentTimeMillis()); } @Autowired private DappSystemService dappSystemService; @Autowired private DbMemberNodeMapper dbMemberNodeMapper; @Autowired private DappAchieveMemberTreeDao dappAchieveMemberTreeDao; @Autowired private DappMemberDao dappMemberDao; @Autowired private DappFundFlowDao dappFundFlowDao; // @Test // public void resetMatrixV3() { // Long memberId = 136L; // QueryWrapper objectQueryWrappers = new QueryWrapper<>(); // objectQueryWrappers.eq("member_id", memberId); // objectQueryWrappers.orderByDesc("create_time"); // List dappFundFlowEntitiess = dappFundFlowDao.selectList(objectQueryWrappers); // if(ObjectUtil.isNotEmpty(dappFundFlowEntitiess)){ // DappAchieveMemberTreeEntity topNode = dappAchieveMemberTreeDao.selectNodeByDeep(dappFundFlowEntitiess.get(0).getId(), 1); // if (ObjectUtil.isNotEmpty(topNode)) { // TeamListVo teamListVo = buildTeamMatrix(topNode); // System.out.println(JSONUtil.parseObj(teamListVo)); // } // } // } @Test public void resetMatrixV2() { dappSystemService.achieveTreeV2(136L); } @Test public void resetMatrix() { Long withoutId = 1L; BigDecimal amount = new BigDecimal(30); String nodeType = "1"; QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.orderByAsc("create_time"); List dappMemberEntities = dappMemberDao.selectList(objectQueryWrapper); for(DappMemberEntity member : dappMemberEntities){ System.out.println(member.getId()); if(withoutId != member.getId()){ DappFundFlowEntity fundFlow = new DappFundFlowEntity( member.getId(), amount, 18, 2, BigDecimal.ZERO, null); fundFlow.setToHash(nodeType); dappFundFlowDao.insert(fundFlow); dappSystemService.achieveTreeV2(fundFlow.getId()); } } } @Test public void resetMatrixV4() { Long memberId = 141L; BigDecimal amount = new BigDecimal(30); String nodeType = "1"; DappFundFlowEntity fundFlow = new DappFundFlowEntity( memberId, amount, 18, 2, BigDecimal.ZERO, null); fundFlow.setToHash(nodeType); dappFundFlowDao.insert(fundFlow); dappSystemService.achieveTreeV2(fundFlow.getId()); Long memberIds = 136L; Integer type = 1; DappMemberEntity member = dappMemberDao.selectById(memberIds); QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("member_id",member.getId()); objectQueryWrapper.eq("type", type); objectQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE); DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(objectQueryWrapper); if(ObjectUtil.isEmpty(dbMemberNode)){ return; } MemberNodeVo memberNodeVo = buildTeamMatrix(dbMemberNode); System.out.println(JSONUtil.parseObj(memberNodeVo)); } @Test public void resetMatrixV5() { Long memberId = 136L; Integer type = 1; DappMemberEntity member = dappMemberDao.selectById(memberId); QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("member_id",member.getId()); objectQueryWrapper.eq("type", type); objectQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE); DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(objectQueryWrapper); if(ObjectUtil.isEmpty(dbMemberNode)){ return; } MemberNodeVo memberNodeVo = buildTeamMatrix(dbMemberNode); System.out.println(JSONUtil.parseObj(memberNodeVo)); } public MemberNodeVo buildTeamMatrix(DbMemberNode dbMemberNode) { Long id = dbMemberNode.getId(); MemberNodeVo memberNodeVo = new MemberNodeVo(); memberNodeVo.setInviteId(getInviteId(id)); memberNodeVo.setId(id); memberNodeVo.setParentNode(ObjectUtil.isEmpty(dbMemberNode.getParentNode()) ? 0L : dbMemberNode.getParentNode()); memberNodeVo.setLeftNode(ObjectUtil.isEmpty(dbMemberNode.getLeftNode()) ? 0L : dbMemberNode.getLeftNode()); memberNodeVo.setRightNode(ObjectUtil.isEmpty(dbMemberNode.getRightNode()) ? 0L : dbMemberNode.getRightNode()); memberNodeVo.setLeftRight(ObjectUtil.isEmpty(dbMemberNode.getLeftRight()) ? 0 : dbMemberNode.getLeftRight()); QueryWrapper childQuery = new QueryWrapper<>(); childQuery.eq("parent_node",id); childQuery.eq("type", dbMemberNode.getType()); childQuery.eq("work_state", DbMemberNode.STATE_ONE); List childrenNode = dbMemberNodeMapper.selectList(childQuery); if(CollUtil.isEmpty(childrenNode)){ return memberNodeVo; } List list = new ArrayList<>(); for (DbMemberNode childNode : childrenNode) { list.add(buildTeamMatrix(childNode)); } memberNodeVo.setChildren(list); return memberNodeVo; } public String getInviteId(Long memberNodeId){ DbMemberNode dbMemberNode = dbMemberNodeMapper.selectById(memberNodeId); Long memberId = dbMemberNode.getMemberId(); DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); return dappMemberEntity.getInviteId(); } @Test public void limitResetProfitTest() { dappSystemService.putIntoProfit(59L, 1); } }