<?php
//推广公司模型
namespace Admin\Model;
use Think\Model;

/**
 * 文档基础模型
 */
class CmdTasksModel extends Model{
    protected $tablePrefix = 'tab_';
    //获取待执行任务
    public function getTask()
    {
        //按顺序获取任务
        $has_run =  $this->where(['status'=>"1"])->count();
        if($has_run > 0){
            return false;
        }
        $task = $this->field("id,params")->where(['status'=>"0"])->order("id asc")->find();
        if(empty($task)){
            return false;
        }else{
            //修改状态为执行中
            $this->save(['id'=>$task['id'],'status'=>"1","start_time"=>time()]);
            return $task;
        }
    }
    //更新
    public function updateTask($params)
    {
        $this->save($params);
    }
    //获取同类型任务最后一次操作时间
    public function getTypeLastTask($type)
    {
        $task = $this->field("end_time")->where(['status'=>"2",'type'=>$type])->order("id desc")->find();
        if(empty($task)){
            return false;
        }else{
            return date("Y-m-d H:i:s",$task['end_time']);
        }
    }
    //插入任务
    public function addTask($type,$params,$need_path=true)
    {
        if(!$this->isCanAddTask($type)) return false;

        if($need_path){
            if(IS_WIN){
                $p = explode(':',ROOTTTTT);
                $params  = "{$p[0]}:&".'cd "'.$p[1].'"&'.$params;
            }else{
                $params  = "cd ".ROOTTTTT.";".$params;
            }
        }
        $params = rtrim($params,";").' 2>&1';
        $save = [
            "uid"=>$_SESSION['onethink_admin']['user_auth']['uid'],
            "created_time"=>time(),
            "params"=>$params,
            "type"=>$type
        ];
        return  $this->add($save);
    }
    //验证任务
    public function isCanAddTask($type)
    {
        $task = $this->field("end_time")->where(['status'=>["in","0,1"],'type'=>$type])->order("id desc")->find();
        if(!empty($task)){
            return false;
        }
        return true;
    }
}