src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -7,6 +7,7 @@ import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity; import cc.mrbird.febs.dapp.entity.DappWalletMineEntity; import cc.mrbird.febs.dapp.vo.MemberNodeVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -49,5 +50,5 @@ FebsResponse nodeList(); FebsResponse memberNode(MemberNodeDto memberNodeDto); MemberNodeVo memberNode(MemberNodeDto memberNodeDto); } src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -209,8 +209,9 @@ DappFundFlowEntity fundFlowPerk = new DappFundFlowEntity(parent.getId(), directProfit, 3, 2, null, null); dappFundFlowDao.insert(fundFlowPerk); } //生成业绩数 chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId()); //复投 // chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId()); chainProducer.sendNodeMsg(fundFlow.getMemberId()); //发送推荐规则奖励 chainProducer.sendInvitePerkMsg(fundFlow.getId()); //发送节点投资 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -164,7 +164,7 @@ DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount().negate(), 1, 2, transferDto.getFee(), transferDto.getTxHash()); dappFundFlowDao.insert(fundFlow); chainProducer.sendAchieveTreeMsg(member.getId()); // chainProducer.sendAchieveTreeMsg(member.getId()); } else { int type = 1; // 1-认购 2-充值tfc @@ -467,7 +467,7 @@ } @Override public FebsResponse memberNode(MemberNodeDto memberNodeDto) { public MemberNodeVo memberNode(MemberNodeDto memberNodeDto) { DappMemberEntity member = LoginUserUtil.getAppUser(); Integer type = memberNodeDto.getType(); @@ -479,18 +479,39 @@ if(ObjectUtil.isEmpty(dbMemberNode)){ return null; } if(ObjectUtil.isNotEmpty(dbMemberNode.getLeftNode())){ return buildTeamMatrix(dbMemberNode); } MemberNodeVo memberNodeVo = new MemberNodeVo(); memberNodeVo.setLeftNode(getInviteId(dbMemberNode.getLeftNode())); memberNodeVo.setRightNode(getInviteId(dbMemberNode.getRightNode())); return null; 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()); 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){ MemberNodeVo memberNodeVo = new MemberNodeVo(); DbMemberNode dbMemberNode = dbMemberNodeMapper.selectById(memberNodeId); Long memberId = dbMemberNode.getMemberId(); DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java
@@ -11,12 +11,24 @@ @ApiModel(value = "MemberNodeVo", description = "星团") public class MemberNodeVo { @ApiModelProperty(value = "邀请码") private String inviteId; @ApiModelProperty(value = "ID") private Long id; private String leftNode; @ApiModelProperty(value = "父节点ID") private Long parentNode;//父节点memberID private String rightNode; @ApiModelProperty(value = "左节点ID") private Long leftNode; @ApiModelProperty(value = "子节点") @ApiModelProperty(value = "右节点ID") private Long rightNode; @ApiModelProperty(value = "左右节点 1-左 2-右") private Integer leftRight; @ApiModelProperty(value = "节点") private List<MemberNodeVo> children = new ArrayList<>(); } src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java
@@ -1,18 +1,8 @@ package cc.mrbird.febs.job; import cc.mrbird.febs.dapp.entity.DappAchieveTreeEntity; import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.mapper.DappAchieveTreeDao; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cc.mrbird.febs.tree.MatrixTree; import cc.mrbird.febs.tree.MemberNode; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.List; /** * @author wzy @@ -23,30 +13,30 @@ @ConditionalOnProperty(prefix = "system", name = "chain-listener", havingValue = "true") public class MatrixTreeInit { @Autowired private DappAchieveTreeDao dappAchieveTreeDao; @Autowired private DappMemberDao dappMemberDao; @PostConstruct public void init() { // List<DappAchieveTreeEntity> tree = dappAchieveTreeDao.selectTreeList(); List<DappAchieveTreeEntity> tree = dappAchieveTreeDao.selectTreeListV2(); MatrixTree instance = MatrixTree.getInstance(); for (DappAchieveTreeEntity treeNode : tree) { Long memberId = treeNode.getMemberId(); DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); MemberNode node = new MemberNode(); node.setAddress(dappMemberEntity.getAddress()); node.setInviteId(dappMemberEntity.getInviteId()); node.setRefererId(dappMemberEntity.getRefererId()); node.setMemberId(treeNode.getMemberId()); node.setFundId(treeNode.getFundId()); instance.addNode(node); } } // @Autowired // private DappAchieveTreeDao dappAchieveTreeDao; // // @Autowired // private DappMemberDao dappMemberDao; // // @PostConstruct // public void init() { //// List<DappAchieveTreeEntity> tree = dappAchieveTreeDao.selectTreeList(); // List<DappAchieveTreeEntity> tree = dappAchieveTreeDao.selectTreeListV2(); // // MatrixTree instance = MatrixTree.getInstance(); // for (DappAchieveTreeEntity treeNode : tree) { // Long memberId = treeNode.getMemberId(); // DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); // // // MemberNode node = new MemberNode(); // node.setAddress(dappMemberEntity.getAddress()); // node.setInviteId(dappMemberEntity.getInviteId()); // node.setRefererId(dappMemberEntity.getRefererId()); // node.setMemberId(treeNode.getMemberId()); // node.setFundId(treeNode.getFundId()); // instance.addNode(node); // } // } } src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -6,6 +6,8 @@ **/ public class QueueConstants { //发送推荐规则奖励 public static final String TFC_NODE_AGAIN = "queue_tfc_node_again"; //发送推荐规则奖励 public static final String TFC_NODE_PERK_QUEEN = "queue_tfc_node_perk"; //发送推荐规则奖励 public static final String TFC_INVITE_PERK_QUEEN = "queue_tfc_invite_perk"; src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -6,6 +6,8 @@ public enum QueueEnum { //发送推荐规则奖励 TFC_NODE_AGAIN("exchange_tfc_node_again", "route_key_tfc_node_again", QueueConstants.TFC_NODE_AGAIN), //发送推荐规则奖励 TFC_NODE_PERK("exchange_tfc_node_perk", "route_key_tfc_node_perk", QueueConstants.TFC_NODE_PERK_QUEEN), //发送推荐规则奖励 TFC_INVITE_PERK("exchange_tfc_invite_perk", "route_key_tfc_invite_perk", QueueConstants.TFC_INVITE_PERK_QUEEN), src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -139,4 +139,23 @@ return BindingBuilder.bind(nodePerkQueue()).to(nodePerkExchange()).with(QueueEnum.TFC_NODE_PERK.getRoute()); } // === 发送节点奖励 end === // === 发送复投 start === @Bean public DirectExchange nodeAgainExchange() { return new DirectExchange(QueueEnum.TFC_NODE_AGAIN.getExchange()); } @Bean public Queue nodeAgainQueue() { return new Queue(QueueEnum.TFC_NODE_AGAIN.getQueue()); } @Bean public Binding nodeAgainBind() { return BindingBuilder.bind(nodeAgainQueue()).to(nodeAgainExchange()).with(QueueEnum.TFC_NODE_AGAIN.getRoute()); } // === 发送复投 end === } src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -56,4 +56,10 @@ log.info("消费节点投资,流水ID:{}", id); dappSystemService.nodePerkMsg(id); } @RabbitListener(queues = QueueConstants.TFC_NODE_AGAIN) public void nodeMsg(Long id) { log.info("复投:{}", id); dappSystemService.achieveTreeV2(id); } } src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -76,4 +76,9 @@ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); rabbitTemplate.convertAndSend(QueueEnum.TFC_NODE_PERK.getExchange(), QueueEnum.TFC_NODE_PERK.getRoute(), id, correlationData); } public void sendNodeMsg(Long id) { log.info("发送复投:{}", id); CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); rabbitTemplate.convertAndSend(QueueEnum.TFC_NODE_AGAIN.getExchange(), QueueEnum.TFC_NODE_AGAIN.getRoute(), id, correlationData); } }