From b60666a3fe9822277efd717380e619f08ac3ad9f Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Thu, 13 Jun 2024 11:42:23 +0800 Subject: [PATCH] 星级矩阵 --- src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java | 3 src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java | 5 + src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java | 6 ++ src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java | 18 +++++- src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 37 +++++++++-- src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java | 2 src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java | 2 src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java | 5 + src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java | 62 ++++++++------------ src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java | 19 ++++++ 10 files changed, 109 insertions(+), 50 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java index c5f03ea..53a780d 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java +++ b/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); } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java index f3bd471..1e180dd 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java +++ b/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()); //发送节点投资 diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java index 696d9db..c03d789 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java +++ b/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); + } + + public MemberNodeVo buildTeamMatrix(DbMemberNode dbMemberNode) { + Long id = dbMemberNode.getId(); + MemberNodeVo memberNodeVo = new MemberNodeVo(); - memberNodeVo.setLeftNode(getInviteId(dbMemberNode.getLeftNode())); - memberNodeVo.setRightNode(getInviteId(dbMemberNode.getRightNode())); + 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()); - return null; + 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); diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java index c581b90..de69638 100644 --- a/src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java +++ b/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<>(); } diff --git a/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java b/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java index c4ee5f2..86b436c 100644 --- a/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java +++ b/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); +// } +// } } diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java index 99626f0..857046c 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java +++ b/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"; diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java index b0cb0a8..3cf556d 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java +++ b/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), diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java index 8b6fea9..898fadf 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java +++ b/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 === } diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java index 5d81562..1602b8e 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java +++ b/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); + } } diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java index 43167f1..17fe0fa 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java +++ b/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); + } } -- Gitblit v1.9.1