作者 刘锟

站点恢复结果导出

  1 +<?php
  2 +
  3 +namespace App\Console\Commands\Domain;
  4 +
  5 +use App\Models\Com\Notify;
  6 +use App\Models\Devops\Servers;
  7 +use App\Models\Devops\ServersIp;
  8 +use App\Models\Domain\DomainCreateTask;
  9 +use App\Models\Domain\DomainInfo;
  10 +use App\Models\Project\Project;
  11 +use App\Models\Project\ProjectServerBackup;
  12 +use App\Services\BatchExportService;
  13 +use Illuminate\Console\Command;
  14 +use Illuminate\Support\Facades\Storage;
  15 +use Symfony\Component\Process\Process;
  16 +
  17 +class EmergencyResultExport extends Command
  18 +{
  19 + protected $signature = 'emergency_result_export';
  20 + protected $description = '恢复项目服务器结果导出';
  21 +
  22 + public function handle()
  23 + {
  24 + $map = ['项目id', '名称', '域名', '现属服务器', '恢复结果',];
  25 +
  26 + //获取所有恢复项目
  27 + $backup_model = new ProjectServerBackup();
  28 + $backup_list = $backup_model->orderBy('status', 'asc')->get();
  29 + $data = [];
  30 + if ($backup_list->count() > 0) {
  31 + $project_model = new Project();
  32 + $domain_model = new DomainInfo();
  33 + $server_model = new Servers();
  34 + foreach ($backup_list as $value) {
  35 + $project_info = $project_model->read(['id' => $value->project_id], ['id', 'company']);
  36 + $domain_info = $domain_model->read(['project_id' => $value->project_id], ['domain']);
  37 +
  38 + //获取现属服务器
  39 + if ($value->status == 1) {
  40 + $server_info = $server_model->read(['id' => $value->server_id], ['server_name']);
  41 + $server_name = $server_info['server_name'];
  42 + $status = '恢复成功';
  43 + } elseif ($value->status == 2) {
  44 + $server_name = '硅谷云服务器';
  45 + $status = '继续留在240';
  46 + } elseif ($value->status == 3) {
  47 + $server_name = '未知';
  48 + $status = '恢复失败:项目解除了域名绑定';
  49 + } else {
  50 + $server_name = '未知';
  51 + $status = '恢复失败:项目解析未在6.0服务器';
  52 + }
  53 +
  54 + $data[] = [
  55 + $value->project_id,
  56 + $project_info ? $project_info['company'] : '未知',
  57 + $domain_info ? $domain_info['domain'] : '未知',
  58 + $server_name,
  59 + $status
  60 + ];
  61 + }
  62 + }
  63 +
  64 + //生成文件,发送到客户端
  65 + if ($data) {
  66 + $table = new BatchExportService("询盘数据导出");
  67 + $file = $table->head($map)->data($data)->save();
  68 + if (!$file) {
  69 + throw new \Exception('文件生成失败,请重试');
  70 + }
  71 +
  72 + $this->output('export success');
  73 + }
  74 +
  75 + $this->output('no data');
  76 + }
  77 +
  78 + /**
  79 + * 输出处理日志
  80 + * @param $message
  81 + */
  82 + public function output($message)
  83 + {
  84 + echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
  85 + }
  86 +}