BaseJob.php 2.2 KB
<?php
/**
 * +--------------------------------------------------------------------------------------------------------------------
 * Job:基类
 * +--------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Jobs
 * @package   App\Jobs
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年4月14日14:05:37
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

/**
 * Class BaseJob
 *
 * @category  App\Jobs
 * @package   App\Jobs
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年4月14日14:05:37
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class BaseJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $model;

    protected $desc =  '基类';
    protected $channel =  'queue';

    /**
     * Create a new job instance.
     *
     * @param $model
     * @param int $delay
     */
    public function __construct($model, int $delay = 0)
    {
        $this->model = $model;

        // 设置延迟的时间,delay() 方法的参数代表多少秒之后执行
        $this->delay($delay);
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
    }

    /**
     * 记录操作日志
     *
     * @param string $desc
     * @param string $position
     */
    public function log($desc = '', $position = '')
    {
        if (!$desc) {
            $desc =  $this->desc;
        }
        record_log($this->channel, $desc, $position);
    }

    public function enableQueryLog()
    {
        DB::connection()->enableQueryLog();
    }

    public function logQueryLog()
    {
        Log::channel('queue')->info(json_encode(DB::getQueryLog()));
    }
}