From 7f7a1b01527843ffb178d015a044380acbde4fe2 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Tue, 02 Jul 2024 16:23:25 +0800 Subject: [PATCH] 逻辑 --- src/test/java/cc/mrbird/febs/TreeTest.java | 283 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 251 insertions(+), 32 deletions(-) diff --git a/src/test/java/cc/mrbird/febs/TreeTest.java b/src/test/java/cc/mrbird/febs/TreeTest.java index d250032..0a6305d 100644 --- a/src/test/java/cc/mrbird/febs/TreeTest.java +++ b/src/test/java/cc/mrbird/febs/TreeTest.java @@ -1,13 +1,26 @@ package cc.mrbird.febs; -import cc.mrbird.febs.dapp.mapper.DappAchieveMemberTreeDao; +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.entity.DbMemberNode; +import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappSystemService; -import cc.mrbird.febs.tree.MatrixTree; -import cc.mrbird.febs.tree.MemberNode; -import cn.hutool.core.util.RandomUtil; +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.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; /** * @author wzy @@ -16,42 +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); +// chainProducer.sendNodeMsg(fundFlow.getId()); +// 发送推荐规则奖励 +// chainProducer.sendInvitePerkMsg(fundFlow.getId()); + //发送节点投资 + chainProducer.sendNodePerkMsg(fundFlow.getId()); + + } + @Test + 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; } - System.out.println(System.currentTimeMillis()); + for(DbMemberNode dbMemberNode : dbMemberNodes){ + if(ObjectUtil.isEmpty(dbMemberNode.getRightNode())){ + continue; + } + //子节点 + 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 DappAchieveMemberTreeDao dappAchieveMemberTreeDao; - +// +// @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 resetMatrix() { - dappSystemService.achieveTree(Long.parseLong("134")); -// dappSystemService.resetMatrix(); -// dappAchieveMemberTreeDao.emptyTable(); + public void resetMatrixV5() { + Long memberId = 300L; + Integer type = 1; + + DappMemberEntity member = dappMemberDao.selectById(memberId); + + 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 limitResetProfitTest() { - dappSystemService.putIntoProfit(59L, 1); + 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<MemberNodeVo> 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); +// } } -- Gitblit v1.9.1