KKSU
2024-06-22 1ba8a38bb8e951f66e354e0b242cc87080a3ad42
后台矩阵列表
7 files modified
158 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/MatrixResetJob.java 75 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java 47 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java 5 ●●●●● patch | view | raw | blame | history
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);
    }
}