KKSU
2024-06-24 2ca8fde0d8f830245a579caabf5594dd7351c7ea
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -10,6 +10,7 @@
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cc.mrbird.febs.tree.MatrixTree;
import cc.mrbird.febs.tree.MemberNode;
import cc.mrbird.febs.tree.TreeConstants;
@@ -50,6 +51,7 @@
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final DbMemberNodeMapper dbMemberNodeMapper;
    private final ChainProducer chainProducer;
    @Override
@@ -217,6 +219,15 @@
        dbMemberNode.setWorkState(1);
        dbMemberNodeMapper.insert(dbMemberNode);
        /**
         * 判断你的上级是否满足复投条件
         */
        DappMemberEntity dappMemberEntityDirect = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
        if(ObjectUtil.isNotEmpty(dappMemberEntityDirect)){
            Long id = dappMemberEntityDirect.getId();
            chainProducer.sendNodeMsgLong(id);
        }
        //如果添加的为右节点,那么进入判断
        if(DbMemberNode.STATE_TWO == dbMemberNode.getLeftRight()){
            //更新父节点的右节点
@@ -304,43 +315,60 @@
            perkSevenTeen(memberId,add,countFund);
            return;
        }else if(10 < countFund){
            return;
        }else{
            //复投
            Integer type = dbMemberNodeRoot.getType();
            //如果是13星局,则直接复投产生收益
            if(NodeType.NODE_13.getNodeType() == type){
                //复投
                futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1);
                //产生收益
                perkSevenTeen(memberId,perkAmount,countFund);
            Integer countFundNext = countFund + 1;
            QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>();
            nodeQueryWrapper.eq("member_id",memberId);
            nodeQueryWrapper.eq("type", type);
            nodeQueryWrapper.eq("count_fund", countFundNext);
            DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(nodeQueryWrapper);
            if(ObjectUtil.isNotEmpty(dbMemberNode)){
                return;
            }
            //如果是1到12星团
            if(type >=NodeType.NODE_1.getNodeType() && type <= NodeType.NODE_12.getNodeType()){
                //需要复投本轮,
                //如果是第一轮,当下一个星团没有投入时,收益复投下一个新团
                //如果是第一轮,下一个新团有投入,则产生收益
                //复投或者收益的金额
                if(1 == countFund){//第一轮
                    //收益复投(当前的下一个星团没有已投入),还是收益提出
                    Integer nextType = type + 1;
                    QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>();
                    nodeQueryWrapper.eq("member_id",memberId);
                    nodeQueryWrapper.eq("type", nextType);
                    nodeQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE);
                    DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(nodeQueryWrapper);
                    if(ObjectUtil.isEmpty(dbMemberNode)){
                        futouSixTeen(memberId,perkAmount,nextType,1);
                    }else{
                        perkSevenTeen(memberId,perkAmount,countFund);
                    }
                    //复投本轮,轮数 +1
                    futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1);
                }else{//2-9轮
                    //复投本轮,轮数 +1
                    futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1);
                    perkSevenTeen(memberId,perkAmount,countFund);
                }
            }
            futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFundNext);
            //产生收益
            perkSevenTeen(memberId,perkAmount,countFund);
            return;
//            Integer type = dbMemberNodeRoot.getType();
//            //如果是13星局,则直接复投产生收益
//            if(NodeType.NODE_13.getNodeType() == type){
//                //复投
//                futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1);
//                //产生收益
//                perkSevenTeen(memberId,perkAmount,countFund);
//                return;
//            }
//            //如果是1到12星团
//            if(type >=NodeType.NODE_1.getNodeType() && type <= NodeType.NODE_12.getNodeType()){
//                //需要复投本轮,
//                //如果是第一轮,当下一个星团没有投入时,收益复投下一个新团
//                //如果是第一轮,下一个新团有投入,则产生收益
//                //复投或者收益的金额
//                if(1 == countFund){//第一轮
//                    //收益复投(当前的下一个星团没有已投入),还是收益提出
//                    Integer nextType = type + 1;
//                    QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>();
//                    nodeQueryWrapper.eq("member_id",memberId);
//                    nodeQueryWrapper.eq("type", nextType);
//                    nodeQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE);
//                    DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(nodeQueryWrapper);
//                    if(ObjectUtil.isEmpty(dbMemberNode)){
//                        futouSixTeen(memberId,perkAmount,nextType,1);
//                    }else{
//                        perkSevenTeen(memberId,perkAmount,countFund);
//                    }
//                    //复投本轮,轮数 +1
//                    futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1);
//                }else{//2-9轮
//                    //复投本轮,轮数 +1
//                    futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1);
//                    perkSevenTeen(memberId,perkAmount,countFund);
//                }
//            }
        }
    }
    /**