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 * @date 2022-05-30 **/ @Slf4j @Component @ConditionalOnProperty(prefix = "system", name = "reset-job", havingValue = "true") public class MatrixResetJob { @Autowired private DappSystemService dappSystemService; @Autowired private DbMemberNodeMapper dbMemberNodeMapper; @Scheduled(cron = "0 0 0 * * ?") public void resetMatrix() { /** * 获取所有左右节点都有值,轮数为 1,未复投work_state = 1 的节点 * 判断右节点有值 * 有继续向判断右节点 * 有,原纪录复投逻辑 */ QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("count_fund", 1); objectQueryWrapper.eq("work_state", 1); List 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); } } }