From 5b62e19c16973f9c2668ebdce39acf3caf5cbf18 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Thu, 27 Jun 2024 09:43:41 +0800 Subject: [PATCH] 后台矩阵列表 --- src/test/java/cc/mrbird/febs/TreeTest.java | 313 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 231 insertions(+), 82 deletions(-) diff --git a/src/test/java/cc/mrbird/febs/TreeTest.java b/src/test/java/cc/mrbird/febs/TreeTest.java index cb47a9f..7ea9ddd 100644 --- a/src/test/java/cc/mrbird/febs/TreeTest.java +++ b/src/test/java/cc/mrbird/febs/TreeTest.java @@ -1,24 +1,23 @@ package cc.mrbird.febs; -import cc.mrbird.febs.dapp.entity.DappAchieveMemberTreeEntity; +import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappMemberEntity; -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.entity.DbMemberNode; +import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappSystemService; -import cc.mrbird.febs.dapp.vo.TeamListVo; -import cc.mrbird.febs.tree.MatrixTree; -import cc.mrbird.febs.tree.MemberNode; +import cc.mrbird.febs.dapp.service.DappWalletService; +import cc.mrbird.febs.dapp.vo.MemberNodeVo; +import cc.mrbird.febs.rabbit.producer.ChainProducer; 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 javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -30,98 +29,248 @@ @SpringBootTest public class TreeTest { + + @Resource + private RedisUtils redisUtils; + @Resource + private DappFundFlowDao dappFundFlowDao; + @Resource + private DappMemberDao dappMemberDao; + @Resource + private DataDictionaryCustomMapper dataDictionaryCustomMapper; + @Resource + private DappWalletService dappWalletService; + @Resource + private DappWalletCoinDao dappWalletCoinDao; + @Resource + private ChainProducer chainProducer; +// + @Autowired + DappSystemService dappSystemService; + @Autowired + DbMemberNodeMapper dbMemberNodeMapper; + @Test + public void matrixTestV7() { + ArrayList<Integer> objects = new ArrayList<>(); + objects.add(2); + objects.add(3); + + QueryWrapper<DbMemberNode> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.in("type",objects); + List<DbMemberNode> dbMemberNodes = dbMemberNodeMapper.selectList(objectQueryWrapper); + if(CollUtil.isEmpty(dbMemberNodes)){ + return; + } + for(DbMemberNode dbMemberNode : dbMemberNodes){ + Integer workState = dbMemberNode.getWorkState(); + if(2 == workState){ + dbMemberNodeMapper.deleteById(dbMemberNode.getId()); + continue; + } + BigDecimal amount = dbMemberNode.getAmount(); + Long memberId = dbMemberNode.getMemberId(); + + dappWalletService.updateWalletCoinWithLock(amount, memberId, 1); + dbMemberNodeMapper.deleteById(dbMemberNode.getId()); + } + } + @Test public void matrixTest() { - MatrixTree matrixTree = MatrixTree.getInstance(); + DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(4641L); + DappMemberEntity fromMember = dappMemberDao.selectById(fundFlow.getMemberId()); + // 更改状态为已同步 + fundFlow.setStatus(2); + dappFundFlowDao.updateById(fundFlow); + //激活用户 + fromMember.setActiveStatus(1); + dappMemberDao.updateById(fromMember); - 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()); + chainProducer.sendNodeMsg(fundFlow.getId()); + //发送推荐规则奖励 + chainProducer.sendInvitePerkMsg(fundFlow.getId()); + //发送节点投资 + chainProducer.sendNodePerkMsg(fundFlow.getId()); + } - - @Autowired - private DappSystemService dappSystemService; - - @Autowired - private DappAchieveMemberTreeDao dappAchieveMemberTreeDao; - - @Autowired - private DappMemberDao dappMemberDao; - - @Autowired - private DappFundFlowDao dappFundFlowDao; - @Test - public void resetMatrixV3() { - Long memberId = 136L; - QueryWrapper<DappFundFlowEntity> objectQueryWrappers = new QueryWrapper<>(); - objectQueryWrappers.eq("member_id", memberId); - objectQueryWrappers.orderByDesc("create_time"); - List<DappFundFlowEntity> 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)); + public void matrixTestv2() { + + /** + * 获取所有左右节点都有值,轮数为 1,未复投work_state = 1 的节点 + * 判断右节点有值 + * 有继续向判断右节点 + * 有,原纪录复投逻辑 + */ + QueryWrapper<DbMemberNode> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("work_state", 1); + List<DbMemberNode> dbMemberNodes = dbMemberNodeMapper.selectList(objectQueryWrapper); + if(CollUtil.isEmpty(dbMemberNodes)){ + return; + } + for(DbMemberNode dbMemberNode : dbMemberNodes){ + if(ObjectUtil.isEmpty(dbMemberNode.getRightNode())){ + continue; } - } - } - - @Test - public void resetMatrixV2() { - dappSystemService.achieveTreeV2(136L); - } - - @Test - public void resetMatrix() { - Long withoutId = 1L; - QueryWrapper<DappMemberEntity> objectQueryWrapper = new QueryWrapper<>(); - objectQueryWrapper.orderByAsc("create_time"); - List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectList(objectQueryWrapper); - for(DappMemberEntity member : dappMemberEntities){ - System.out.println(member.getId()); - if(withoutId != member.getId()){ - DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), new BigDecimal("1"), 1, 2, - BigDecimal.ZERO, "测试"); - dappFundFlowDao.insert(fundFlow); - dappSystemService.achieveTreeV2(fundFlow.getId()); + //子节点 + Long rightNode = dbMemberNode.getRightNode(); + DbMemberNode dbMemberNode1 = dbMemberNodeMapper.selectById(rightNode); + if(ObjectUtil.isEmpty(dbMemberNode1)){ + continue; } + + if(ObjectUtil.isEmpty(dbMemberNode1.getRightNode())){ + continue; + } + + //有,则上级节点出局复投,轮数加1,复投逻辑 + dappSystemService.memberNodeNext(dbMemberNode); } } +// +// @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<DappFundFlowEntity> objectQueryWrappers = new QueryWrapper<>(); +//// objectQueryWrappers.eq("member_id", memberId); +//// objectQueryWrappers.orderByDesc("create_time"); +//// List<DappFundFlowEntity> 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<DappMemberEntity> objectQueryWrapper = new QueryWrapper<>(); +// objectQueryWrapper.orderByAsc("create_time"); +// List<DappMemberEntity> 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<DbMemberNode> 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 = 300L; + Integer type = 1; - public TeamListVo buildTeamMatrix(DappAchieveMemberTreeEntity node) { - List<DappAchieveMemberTreeEntity> childNodes = dappAchieveMemberTreeDao.selectMatrixChildNode(node.getTopNode(), node.getTreeNode()); + DappMemberEntity member = dappMemberDao.selectById(memberId); - TeamListVo teamListVo = new TeamListVo(); - teamListVo.setName(node.getInviteId()); - teamListVo.setHasMoney(node.getHasMoney()); + QueryWrapper<DbMemberNode> 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)); + } - if (CollUtil.isEmpty(childNodes)) { - return teamListVo; + public MemberNodeVo buildTeamMatrix(DbMemberNode dbMemberNode) { + Long id = dbMemberNode.getId(); + + MemberNodeVo memberNodeVo = new MemberNodeVo(); + memberNodeVo.setInviteId(getInviteId(id)); + QueryWrapper<DbMemberNode> childQuery = new QueryWrapper<>(); + childQuery.eq("parent_node",id); + childQuery.eq("type", dbMemberNode.getType()); +// childQuery.eq("work_state", DbMemberNode.STATE_ONE); + List<DbMemberNode> childrenNode = dbMemberNodeMapper.selectList(childQuery); + if(CollUtil.isEmpty(childrenNode)){ + return memberNodeVo; } - List<TeamListVo> list = new ArrayList<>(); - for (DappAchieveMemberTreeEntity childNode : childNodes) { + List<MemberNodeVo> list = new ArrayList<>(); + for (DbMemberNode childNode : childrenNode) { list.add(buildTeamMatrix(childNode)); } - teamListVo.setChildren(list); - return teamListVo; + memberNodeVo.setChildren(list); + return memberNodeVo; } - @Test - public void limitResetProfitTest() { - dappSystemService.putIntoProfit(59L, 1); + 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); +// } } -- Gitblit v1.9.1