UpdateLog.php 2.4 KB
<?php

namespace App\Models\Com;

use Illuminate\Database\Eloquent\Model;

class UpdateLog extends Model
{
    //设置关联表名
    protected $table = 'gl_update_log';

    const STATUS_UN = 0;//未开始
    const STATUS_ING = 1;//导入中
    const STATUS_COM = 2;//导入完成

    const COLLECT_STATUS_UN = 0;//未开始
    const COLLECT_STATUS_COM = 1;//全站小语种采集完成
    const COLLECT_STATUS_MAIN = 2;//英语主站采集完成

    /**
     * 创建更新日志
     * @param $project_id
     * @param $type
     * @param $url
     * @param $sort
     * @return mixed
     */
    public static function createLog($project_id, $type, $url)
    {
        $log = self::where('project_id', $project_id)->where('api_type', $type)->first();
        if (!$log) {
            $log = new self();
            $log->project_id = $project_id;
            $log->api_type = $type;
            $log->api_url = $url;
            $log->sort = ($type == 'category' || $type == 'category_news' || $type == 'tag') ? 0 : 1;
            $log->collect_status = ($type == 'category' || $type == 'category_news' || $type == 'website_info' || $type == 'tag') ? 1 : 0;
            return $log->save();
        }
        return true;
    }

    /**
     * 重置更新日志
     * @param $project_id
     * @return bool
     * @author Akun
     * @date 2023/11/24 11:43
     */
    public static function updateLog($project_id)
    {
        $logs = self::where('project_id', $project_id)->get();

        foreach ($logs as $log) {
            $log->status = 0;
            if (!in_array($log->api_type, ['website_info', 'category'])) {
                $log->collect_status = 0;
            }
            $log->save();
        }

        return true;
    }

    /**
     * 获取项目当前采集情况
     * @param $project_id
     * @return string
     * @author Akun
     * @date 2024/05/27 17:04
     */
    public static function getProjectUpdate($project_id)
    {
        $collect_time = '';
        $collect_un_count = UpdateLog::where('project_id', $project_id)->where('collect_status', 0)->count();
        if ($collect_un_count > 0) {
            $collect_time = '采集中';
        } else {
            $collect_info = UpdateLog::where('project_id', $project_id)->orderBy('updated_at', 'desc')->first();
            if(!empty($collect_info)){
                $collect_time = $collect_info->updated_at->format('Y-m-d H:i:s');
            }
        }

        return $collect_time;
    }
}