KKSU
2024-06-24 b4b6cbb10af27cbb88f9dc9de19e4baf21807149
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -239,7 +239,7 @@
                    return;
                }
                //有,则上级节点出局复投,轮数加1,复投逻辑
                memberNodeNext(dbMemberNodeRoot);
                this.memberNodeNext(dbMemberNodeRoot);
            }else{//父节点为左节点,那么没人出局
                return;
            }
@@ -256,6 +256,7 @@
     * 有,则上级节点出局复投,轮数加1,复投逻辑
     * @param dbMemberNodeRoot
     */
    @Override
    public void memberNodeNext(DbMemberNode dbMemberNodeRoot) {
        log.info("进入复投");
@@ -304,42 +305,57 @@
            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){//第一轮
                    //复投本轮,轮数 +1
                    futouSixTeen(memberId,dbMemberNodeRoot.getAmount(),type,countFund+1);
                    //收益复投(当前的下一个星团没有已投入),还是收益提出
                    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);
                    }
                }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);
//                }
//            }
        }
    }
    /**
@@ -397,14 +413,35 @@
        dbMemberNode.setWorkState(1);
        dbMemberNodeMapper.insert(dbMemberNode);
        boolean flag = false;//下一级的再次复投
        if(ObjectUtil.isNotEmpty(dbMemberNodeOld)){
            if(dbMemberNode.getLeftRight() == 1){
                dbMemberNodeOld.setLeftNode(dbMemberNode.getId());
            }else{
                dbMemberNodeOld.setRightNode(dbMemberNode.getId());
                flag = true;
            }
            dbMemberNodeMapper.updateById(dbMemberNodeOld);
        }
        if(flag){
            if(ObjectUtil.isEmpty(dbMemberNodeOld.getParentNode())){
                return;
            }
            Long parentNode = dbMemberNodeOld.getParentNode();
            DbMemberNode dbMemberNodeRoot = dbMemberNodeMapper.selectById(parentNode);
            if(ObjectUtil.isEmpty(dbMemberNodeRoot)){
                return;
            }
            if(dbMemberNodeRoot.getLeftRight() == 1){
                return;
            }
            //每个星团,只复投10轮
            if(10 < dbMemberNodeRoot.getCountFund()){
                return;
            }
            this.memberNodeNext(dbMemberNodeRoot);
        }
    }