EmergencyResultExport.php 2.8 KB
<?php

namespace App\Console\Commands\Domain;

use App\Models\Devops\Servers;
use App\Models\Domain\DomainInfo;
use App\Models\Project\Project;
use App\Models\Project\ProjectServerBackup;
use App\Services\BatchExportService;
use Illuminate\Console\Command;

class EmergencyResultExport extends Command
{
    protected $signature = 'emergency_result_export';
    protected $description = '恢复项目服务器结果导出';

    public function handle()
    {
        $map = ['项目id', '名称', '域名', '现属服务器', '恢复结果',];

        //获取所有恢复项目
        $backup_model = new ProjectServerBackup();
        $backup_list = $backup_model->orderBy('status', 'asc')->get();
        $data = [];
        if ($backup_list->count() > 0) {
            $project_model = new Project();
            $domain_model = new DomainInfo();
            $server_model = new Servers();
            foreach ($backup_list as $value) {
                $project_info = $project_model->read(['id' => $value->project_id], ['id', 'company']);
                $domain_info = $domain_model->read(['project_id' => $value->project_id], ['domain']);

                //获取现属服务器
                if ($value->status == 1) {
                    $server_info = $server_model->read(['id' => $value->server_id], ['server_name']);
                    $server_name = $server_info['server_name'];
                    $status = '恢复成功';
                } elseif ($value->status == 2) {
                    $server_name = '硅谷云服务器';
                    $status = '继续留在240';
                } elseif ($value->status == 3) {
                    $server_name = '未知';
                    $status = '恢复失败:项目解除了域名绑定';
                } else {
                    $server_name = '未知';
                    $status = '恢复失败:项目解析未在6.0服务器';
                }

                $data[] = [
                    $value->project_id,
                    $project_info ? $project_info['company'] : '未知',
                    $domain_info ? $domain_info['domain'] : '未知',
                    $server_name,
                    $status
                ];
            }
        }

        //生成文件,发送到客户端
        if ($data) {
            $table = new BatchExportService("项目站点恢复结果导出");
            $file = $table->head($map)->data($data)->save();
            if (!$file) {
                throw new \Exception('文件生成失败,请重试');
            }

            $this->output('export success');
        }

        $this->output('no data');
    }

    /**
     * 输出处理日志
     * @param $message
     */
    public function output($message)
    {
        echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
    }
}