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 * @date 2022-08-24 **/ @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 objects = new ArrayList<>(); objects.add(2); objects.add(3); QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.in("type",objects); List 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 objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("work_state", 1); List 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; // @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 = 300L; 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)); 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); // } }