TaskService.class.php 1.68 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 17/4/20
 * Time: 15:10
 */
namespace Common\Service;

use VcySDK\Service;
use VcySDK\Cron;
use Common\Model\TaskModel;
use Common\Common\Constant;

class TaskService extends AbstractService
{
    // 构造方法
    public function __construct()
    {
        parent::__construct();
        $this->_d = new TaskModel();
    }

    /**
     * 创建计划任务
     * @author zhonglei
     * @param int $source_id 素材ID
     * @return bool
     */
    public function create($source_id)
    {
        $task = $this->get_by_conds(['source_id' => $source_id]);

        if (!empty($task)) {

            return true;
        }

        // 创建计划任务
        $cronSdk = new Cron(Service::instance());
        $result = $cronSdk->add([
            'crRemark' => sprintf('%s/%s/%s/CheckAttach', QY_DOMAIN, APP_IDENTIFIER, $source_id),
            'crDescription' => '定时检查附件',
            'crReqUrl' => oaUrl('Frontend/Callback/CheckAttach/Index', ['source_id' => $source_id]),
            'crMethod' => 'GET',
            'crCron' => Constant::TASK_CRON_TIME,
        ]);

        // 记录计划任务ID、素材ID
        if (is_array($result) && isset($result['crId'])) {

            $this->insert([
                'source_id' => $source_id,
                'cron_id' => $result['crId'],
            ]);

            // 修改计划任务(将计划任务ID也带上)
            $cronSdk->update([
                'crId' => $result['crId'],
                'crReqUrl' => oaUrl('Frontend/Callback/CheckAttach/Index', ['source_id' => $source_id, 'cron_id' => $result['crId']]),
            ]);
        }

        return true;
    }
}