src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -210,6 +210,12 @@ // } //复投 // chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId()); if(ObjectUtil.isNotEmpty(fromMember.getRefererId())){ DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByInviteId(fromMember.getRefererId()); if(ObjectUtil.isNotEmpty(dappMemberEntity)){ chainProducer.sendNodeMsgLong(dappMemberEntity.getId()); } } chainProducer.sendNodeMsg(fundFlow.getId()); //发送推荐规则奖励 chainProducer.sendInvitePerkMsg(fundFlow.getId()); src/main/java/cc/mrbird/febs/job/MatrixResetJob.java
@@ -1,18 +1,11 @@ package cc.mrbird.febs.job; import cc.mrbird.febs.dapp.entity.DbMemberNode; import cc.mrbird.febs.dapp.mapper.DbMemberNodeMapper; import cc.mrbird.febs.dapp.service.DappSystemService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; /** * @author wzy @@ -28,38 +21,38 @@ @Autowired private DbMemberNodeMapper dbMemberNodeMapper; @Scheduled(cron = "0 0 0 * * ?") public void resetMatrix() { /** * 获取所有左右节点都有值,轮数为 1,未复投work_state = 1 的节点 * 判断右节点有值 * 有继续向判断右节点 * 有,原纪录复投逻辑 */ QueryWrapper<DbMemberNode> objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("count_fund", 1); 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); } } // @Scheduled(cron = "0 0 0 * * ?") // public void resetMatrix() { // /** // * 获取所有左右节点都有值,轮数为 1,未复投work_state = 1 的节点 // * 判断右节点有值 // * 有继续向判断右节点 // * 有,原纪录复投逻辑 // */ // QueryWrapper<DbMemberNode> objectQueryWrapper = new QueryWrapper<>(); // objectQueryWrapper.eq("count_fund", 1); // 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); // } // } } src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -6,6 +6,8 @@ **/ public class QueueConstants { //发送推荐规则奖励 public static final String TFC_NODE_AGAIN_LONG = "queue_tfc_node_again_long"; //发送推荐规则奖励 public static final String TFC_NODE_AGAIN = "queue_tfc_node_again"; //发送推荐规则奖励 public static final String TFC_NODE_PERK_QUEEN = "queue_tfc_node_perk"; src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -6,6 +6,8 @@ public enum QueueEnum { //发送推荐规则奖励 TFC_NODE_AGAIN_LONG("exchange_tfc_node_again_long", "route_key_tfc_node_again_long", QueueConstants.TFC_NODE_AGAIN_LONG), //发送推荐规则奖励 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), src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -158,4 +158,25 @@ return BindingBuilder.bind(nodeAgainQueue()).to(nodeAgainExchange()).with(QueueEnum.TFC_NODE_AGAIN.getRoute()); } // === 发送复投 end === // === 发送复投 start === @Bean public DirectExchange nodeAgainExchangeLong() { return new DirectExchange(QueueEnum.TFC_NODE_AGAIN_LONG.getExchange()); } @Bean public Queue nodeAgainQueueLong() { return new Queue(QueueEnum.TFC_NODE_AGAIN_LONG.getQueue()); } @Bean public Binding nodeAgainBindLong() { return BindingBuilder.bind(nodeAgainQueueLong()).to(nodeAgainExchangeLong()).with(QueueEnum.TFC_NODE_AGAIN_LONG.getRoute()); } // === 发送复投 end === } src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -1,12 +1,19 @@ package cc.mrbird.febs.rabbit.consumer; import cc.mrbird.febs.dapp.entity.DbMemberNode; import cc.mrbird.febs.dapp.mapper.DbMemberNodeMapper; import cc.mrbird.febs.dapp.service.DappSystemService; import cc.mrbird.febs.rabbit.QueueConstants; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import java.util.List; /** * @author wzy @@ -19,6 +26,8 @@ @Autowired private DappSystemService dappSystemService; @Autowired private DbMemberNodeMapper dbMemberNodeMapper; @RabbitListener(queues = QueueConstants.ACHIEVE_TREE) public void achieveTree(String id) { @@ -62,4 +71,42 @@ log.info("复投:{}", id); dappSystemService.achieveTreeV2(id); } @RabbitListener(queues = QueueConstants.TFC_NODE_AGAIN_LONG) public void nodeMsgLong(Long id) { log.info("复投:{}", id); /** * 获取所有左右节点都有值,轮数为 1,未复投work_state = 1 的节点 * 判断右节点有值 * 有继续向判断右节点 * 有,原纪录复投逻辑 */ QueryWrapper<DbMemberNode> objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("count_fund", 1); objectQueryWrapper.eq("work_state", 1); objectQueryWrapper.eq("member_id", id); 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); } } } src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -81,4 +81,9 @@ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); rabbitTemplate.convertAndSend(QueueEnum.TFC_NODE_AGAIN.getExchange(), QueueEnum.TFC_NODE_AGAIN.getRoute(), id, correlationData); } public void sendNodeMsgLong(Long id) { log.info("发送复投原本数据:{}", id); CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); rabbitTemplate.convertAndSend(QueueEnum.TFC_NODE_AGAIN_LONG.getExchange(), QueueEnum.TFC_NODE_AGAIN_LONG.getRoute(), id, correlationData); } }