You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
simple-yewu/console/models/Crontab.php

84 lines
1.7 KiB

5 years ago
<?php
/**
* Created by PhpStorm.
* User: xzz
* Date: 2018/4/11
* Time: 9:33
*/
namespace console\models;
use Yii;
use console\helpers\CronParser;
/**
* 定时任务模型
* @author jlb
*/
class Crontab extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'tb_crontab';
}
/**
* switch字段的文字映射
* @var array
*/
private $switchTextMap = [
0 => '关闭',
1 => '开启',
];
/**
* status字段的文字映射
* @var array
*/
private $statusTextMap = [
0 => '正常',
1 => '任务保存',
];
// public static function getDb()
// {
// #注意!!!替换成自己的数据库配置组件名称
// parent::getDb();
// }
/**
* 获取switch字段对应的文字
* @author jlb
* @return ''|string
*/
public function getSwitchText()
{
if(!isset($this->switchTextMap[$this->switch])) {
return '';
}
return $this->switchTextMap[$this->switch];
}
/**
* 获取status字段对应的文字
* @author jlb
* @return ''|string
*/
public function getStatusText()
{
if(!isset($this->statusTextMap[$this->status])) {
return '';
}
return $this->statusTextMap[$this->status];
}
/**
* 计算下次运行时间
* @author jlb
*/
public function getNextRunDate()
{
if (!CronParser::check($this->crontab_str)) {
throw new \Exception("格式校验失败: {$this->crontab_str}", 1);
}
return CronParser::formatToDate($this->crontab_str, 1)[0];
}
}