Cron.class.php 6.08 KB
<?php

/**
 * Cron.class.php
 * 计划任务接口操作类
 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
 * @copyright  Copyright (c) 2014 - ? VcySDK (http://www.vchangyi.com/)
 * @author zhuxun37
 * @version 1.0.0
 */
namespace VcySDK;

class Cron
{

    /**
     * 查询
     * %s = {apiUrl}/b/{enumber}
     *
     * @var string
     */
    const LIST_URL = '%s/cron/list';

    /**
     * 添加
     * %s = {apiUrl}/b/{enumber}
     *
     * @var string
     */
    const ADD_URL = '%s/cron/add';

    /**
     * 更新
     * %s = {apiUrl}/b/{enumber}
     *
     * @var string
     */
    const UPDATE_URL = '%s/cron/update';

    /**
     * 删除
     * %s = {apiUrl}/b/{enumber}
     *
     * @var string
     */
    const DELETE_URL = '%s/cron/delete';

    /**
     * 详情
     * %s = {apiUrl}/b/{enumber}
     *
     * @var string
     */
    const GET_URL = '%s/cron/get';

    /**
     * 暂停
     * %s = {apiUrl}/b/{enumber}
     *
     * @var string
     */
    const PAUSE_URL = '%s/cron/pause';

    /**
     * 恢复
     * %s = {apiUrl}/b/{enumber}
     *
     * @var string
     */
    const RESUME_URL = '%s/cron/resume';

    /**
     * 回调任务 1: 简单任务 2: 回调任务
     */
    const CR_TYPE_EASY = 1;
    const CR_TYPE_CALLBACK = 2;

    /**
     * 回调请求类型
     */
    const CR_METHOD_GET = 'GET';
    const CR_METHOD_POST = 'POST';
    const CR_METHOD_PUT = 'PUT';
    const CR_METHOD_DELETE = 'DELETE';

    /**
     * 监控作业执行时状态 1: true 0: false
     */
    const CR_MONITOR_EXECUTION_TRUE = 1;
    const CR_MONITOR_EXECUTION_FALSE = 0;

    /**
     * 接口调用类
     *
     * @var object
     */
    private $serv = null;

    /**
     * 初始化
     *
     * @param object $serv 接口调用类
     */
    public function __construct($serv)
    {

        $this->serv = $serv;
    }

    /**
     * 查询
     *
     * @param array $condition 查询条件
     *        + int $crServerStatus 任务运行状态,1=READY,2=RUNNING,3=DISABLED,4=PAUSED,5=CRASHED,6=SHUTDOWN
     *        + int int $crExecuteStatus 任务处理状态,0=未执行,1=成功,2=失败
     *        + int $crType 任务类型,1=简单任务,2=回调任务
     *        + string $crRemark 任务标识(sign_in,sign_on等)
     * @param int $pageNum 页码
     * @param int $pageSize 每页条数
     * @param array $orderList 排序
     *        + string column 排序字段
     *        + string orderType 排序类型
     * @return mixed
     */
    public function listAll($condition = array(), $pageNum = 1, $pageSize = 30, $orderList = array())
    {
        $condition = $this->serv->mergeListApiParams($condition, $orderList, $pageNum, $pageSize);

        return $this->serv->postSDK(self::LIST_URL, $condition, 'generateApiUrlE');
    }

    /**
     * 添加
     *
     * @param array $params 提交数据
     *        + String $crRemark 任务标识(sign_in,sign_on等)
     *        + String $crCron cron表达式(具体使用方式百度or谷歌)
     *        + String $crDescription 任务描述
     *        + int $crType 任务类型,1=简单任务,2=回调任务(默认1)
     *        + String $crParams 请求参数(注意:如果传了此参数,数据格式必须为json)
     *        + String $crMethod 请求Method方法(GET,POST,PUT,DELETE),回调型任务此参数为必填
     *        + String $crReqUrl 回调地址(回调型任务此参数为必填)
     *        + int $crTimes 计划任务需要运行的次数(默认0为不限制)
     *        + int $crMonitorExecution 监控作业执行时状态,1=true,0=false(每次作业执行时间和间隔时间均非常短的情况,建议不监控作业运行时状态以提升效率,因为是瞬时状态,所以无必要监控。默认0)
     * @return mixed
     */
    public function add($params)
    {

        return $this->serv->postSDK(self::ADD_URL, $params, 'generateApiUrlE');
    }

    /**
     * 更新
     *
     * @param array $params 提交数据
     *        + String $crId 任务ID
     *        + String $crParams 请求参数(数据格式为json)
     *        + String $crMethod 请求Method方法(GET,POST,PUT,DELETE),回调型任务此参数为必填
     *        + String $crReqUrl 回调地址(回调型任务此参数为必填)
     *        + Int $crTimes 计划任务需要运行的次数(默认0为不限制)
     *        + String $crCron cron表达式(具体使用方式百度or谷歌)
     *        + Int $crMonitorExecution 监控作业执行时状态,1=true,0=false(每次作业执行时间和间隔时间均非常短的情况,建议不监控作业运行时状态以提升效率,因为是瞬时状态,所以无必要监控。默认0)
     *        + String $crDescription 任务描述
     * @return mixed
     */
    public function update($params)
    {

        return $this->serv->postSDK(self::UPDATE_URL, $params, 'generateApiUrlE');
    }

    /**
     * 删除
     *
     * @param String $crId 任务ID
     * @return mixed
     */
    public function delete($crId)
    {
        $params = [
            'crId' => $crId,
        ];
        try{
            $result = $this->serv->postSDK(self::DELETE_URL, $params, 'generateApiUrlE');
        } catch (\Exception $e) {
           return [];
        }
        return $result;
    }

    /**
     * 获取任务详情
     *
     * @param string $crId 任务ID
     * @return mixed
     */
    public function get($crId)
    {
        $params = [
            'crId' => $crId,
        ];

        return $this->serv->postSDK(self::GET_URL, $params, 'generateApiUrlE');
    }

    /**
     * 暂停
     *
     * @param string $crId 任务ID
     * @return mixed
     */
    public function pause($crId)
    {
        $params = [
            'crId' => $crId,
        ];

        return $this->serv->postSDK(self::PAUSE_URL, $params, 'generateApiUrlE');
    }

    /**
     * 恢复
     *
     * @param string $crId 任务ID
     * @return mixed
     */
    public function resume($crId)
    {
        $params = [
            'crId' => $crId,
        ];

        return $this->serv->postSDK(self::RESUME_URL, $params, 'generateApiUrlE');
    }
}