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<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;
|
// @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 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();
|
}
|
//
|
// @Test
|
// public void limitResetProfitTest() {
|
// dappSystemService.putIntoProfit(59L, 1);
|
// }
|
}
|