From fbcc5ef9fec4a1b1581ea41b03d83f07da8514de Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 08 Jul 2024 16:16:21 +0800 Subject: [PATCH] 逻辑 --- src/test/java/cc/mrbird/febs/TreeTest.java | 235 +++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 164 insertions(+), 71 deletions(-) diff --git a/src/test/java/cc/mrbird/febs/TreeTest.java b/src/test/java/cc/mrbird/febs/TreeTest.java index 24f456b..0a6305d 100644 --- a/src/test/java/cc/mrbird/febs/TreeTest.java +++ b/src/test/java/cc/mrbird/febs/TreeTest.java @@ -1,6 +1,26 @@ package cc.mrbird.febs; +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.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 @@ -9,26 +29,105 @@ @SpringBootTest public class TreeTest { -// @Test -// public void matrixTest() { -// MatrixTree matrixTree = MatrixTree.getInstance(); + + @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; // -// -// 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 + 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() { + DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(4641L); + DappMemberEntity fromMember = dappMemberDao.selectById(fundFlow.getMemberId()); + + // 更改状态为已同步 + fundFlow.setStatus(2); + dappFundFlowDao.updateById(fundFlow); + //激活用户 + fromMember.setActiveStatus(1); + dappMemberDao.updateById(fromMember); + +// 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; + } + 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; @@ -122,59 +221,53 @@ // 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<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)); -// } -// -// 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<DbMemberNode> childQuery = new QueryWrapper<>(); -// childQuery.eq("parent_node",id); -// childQuery.eq("type", dbMemberNode.getType()); + @Test + 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)); + } + + 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(); -// } + 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() { -- Gitblit v1.9.1