| | |
| | | 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.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.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.tree.MatrixTree; |
| | | import cc.mrbird.febs.tree.MemberNode; |
| | | 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; |
| | |
| | | @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 matrixTest() { |
| | | MatrixTree matrixTree = MatrixTree.getInstance(); |
| | | public void matrixTestV7() { |
| | | ArrayList<Integer> objects = new ArrayList<>(); |
| | | objects.add(2); |
| | | objects.add(3); |
| | | |
| | | |
| | | 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); |
| | | QueryWrapper<DbMemberNode> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.in("type",objects); |
| | | List<DbMemberNode> dbMemberNodes = dbMemberNodeMapper.selectList(objectQueryWrapper); |
| | | if(CollUtil.isEmpty(dbMemberNodes)){ |
| | | return; |
| | | } |
| | | System.out.println(System.currentTimeMillis()); |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | | @Autowired |
| | | private DappSystemService dappSystemService; |
| | | @Autowired |
| | | private DbMemberNodeMapper dbMemberNodeMapper; |
| | | @Test |
| | | public void matrixTest() { |
| | | DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(4641L); |
| | | DappMemberEntity fromMember = dappMemberDao.selectById(fundFlow.getMemberId()); |
| | | |
| | | @Autowired |
| | | private DappAchieveMemberTreeDao dappAchieveMemberTreeDao; |
| | | // 更改状态为已同步 |
| | | fundFlow.setStatus(2); |
| | | dappFundFlowDao.updateById(fundFlow); |
| | | //激活用户 |
| | | fromMember.setActiveStatus(1); |
| | | dappMemberDao.updateById(fromMember); |
| | | |
| | | @Autowired |
| | | private DappMemberDao dappMemberDao; |
| | | // chainProducer.sendNodeMsg(fundFlow.getId()); |
| | | // 发送推荐规则奖励 |
| | | // chainProducer.sendInvitePerkMsg(fundFlow.getId()); |
| | | //发送节点投资 |
| | | chainProducer.sendNodePerkMsg(fundFlow.getId()); |
| | | |
| | | @Autowired |
| | | private DappFundFlowDao dappFundFlowDao; |
| | | } |
| | | @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; |
| | | // @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 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 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 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 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 = 136L; |
| | | Long memberId = 300L; |
| | | Integer type = 1; |
| | | |
| | | DappMemberEntity member = dappMemberDao.selectById(memberId); |
| | |
| | | |
| | | 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()); |
| | | childQuery.eq("work_state", DbMemberNode.STATE_ONE); |
| | | // childQuery.eq("work_state", DbMemberNode.STATE_ONE); |
| | | List<DbMemberNode> childrenNode = dbMemberNodeMapper.selectList(childQuery); |
| | | if(CollUtil.isEmpty(childrenNode)){ |
| | | return memberNodeVo; |
| | |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); |
| | | return dappMemberEntity.getInviteId(); |
| | | } |
| | | |
| | | @Test |
| | | public void limitResetProfitTest() { |
| | | dappSystemService.putIntoProfit(59L, 1); |
| | | } |
| | | // |
| | | // @Test |
| | | // public void limitResetProfitTest() { |
| | | // dappSystemService.putIntoProfit(59L, 1); |
| | | // } |
| | | } |