From add5e5166ad17906962e89953771fb668eb83801 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 15 Jul 2024 14:40:35 +0800
Subject: [PATCH] 逻辑
---
src/test/java/cc/mrbird/febs/TreeTest.java | 282 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 251 insertions(+), 31 deletions(-)
diff --git a/src/test/java/cc/mrbird/febs/TreeTest.java b/src/test/java/cc/mrbird/febs/TreeTest.java
index 12a0ec3..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,41 +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.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(60L, 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