WebsiteData.php 2.1 KB
<?php

namespace App\Console\Commands;

use App\Models\File\DataFile;
use Illuminate\Console\Command;

class WebsiteData extends Command
{
    use CmdSignal;

    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'website_data';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '向AICC推送数据';

    // 最大支持5个进程
    public $maxRunNumber = 50;

    protected $time;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->time = date('Y-m');
        parent::__construct();
    }

    public function start(): int
    {
        # 0 - 未推送
        # 1 - 已推送
        # 2 - 其他问题
        $status = 0;
        $lists  = DataFile::query()->where('status', $status)
                          ->where('created_at', 'like', $this->time . '%')->first();
        if (is_null($lists)) {
            $this->debug_echo('没有任务,等待中');
            sleep(30);
            return 0;
        }

        $key         = $this->signature . '-' . $lists->id;
        $count       = redis_get($key);
        $data        = $lists;
        $url         = env('AICC_URL');
        $msg         = http_post($url, json_encode(compact('data')));
        $status_code = 0;
        if ($msg) {
            $status_code = (int)$msg['status'];
        }
        if ($status_code != 200) {
            if ($count == 2) {
                $lists->status = 2;
                $lists->save();
                $this->debug_echo('项目文件数据保存失败! - 其他原因 - ' . $key);
            } else {
                redis_set($key, $count + 1);
                $this->debug_echo('项目文件数据保存失败! - ' . $key);
            }
        }
        $lists->status = 1;
        $lists->save();
        $this->info('项目文件数据保存成功!');
        return 0;
    }

    public function post_data($data)
    {
        $url = env('AICC_URL');
        $msg = http_post($url, json_encode(compact('data')));
        print_r($msg);
    }

}