DomainTime.php 2.8 KB
<?php

namespace App\Console\Commands\Domain;

use App\Exceptions\AsideGlobalException;
use App\Exceptions\BsideGlobalException;
use App\Helper\AyrShare as AyrShareHelper;
use App\Http\Logic\Aside\Domain\DomainInfoLogic;
use App\Models\AyrShare\AyrRelease as AyrReleaseModel;
use Carbon\Carbon;
use App\Models\AyrShare\AyrShare as AyrShareModel;
use Illuminate\Console\Command;

class DomainTime extends Command
{
    public $error = 0;
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'domain_time';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '域名定时任务 更新域名|证书到期时间';

    /**
     * @name   :(定时执行)handle
     * @author :lyh
     * @method :post
     * @time   :2023/5/12 14:48
     */
    public function handle()
    {
        echo $this->update_domain_time();
    }

    /**
     * 更新域名|证书到期时间
     * @return int|mixed|void
     * @throws AsideGlobalException
     * @throws BsideGlobalException
     */
    protected function update_domain_time()
    {
        $domainCon = new DomainInfoLogic();
        $all = $domainCon->getAllDomain();
        $all = $all->toArray();

        foreach ($all as $item) {
            $domain = $item['domain'];
            // 域名到期时间
            $domainT = $domainCon->getDomainTime($domain);
            if ($domainT) {
                $domain_time = $item['domain_end_time'];
                $domainValidFrom = $domainT['validFrom'];
                $domainValidTo = $domainT['validTo'];
                if (strtotime($domain_time) < strtotime($domainValidTo)) {
                    $this->info($domain . '域名到期时间更新成功');
                    $domainCon->updateDomain($item['id'], ['domain_end_time' => $domainValidTo]);
                }
            } else {
                $this->error++;
                $this->info($domain . '域名到期时间获取失败');
            }
            // 证书到期时间
            $certificateT = $domainCon->getDomainCertificateTime($domain);
            if ($certificateT) {
                $certificate_time = $item['certificate_end_time'];
                $certificateValidFrom = $certificateT['validFrom'];
                $certificateValidTo = $certificateT['validTo'];
                if (strtotime($certificate_time) < strtotime($certificateValidTo)) {
                    $this->info($domain . '证书到期时间更新成功');
                    $domainCon->updateDomain($item['id'], ['certificate_end_time' => $certificateValidTo]);
                }
            } else {
                $this->error++;
                $this->info($domain . '证书到期时间获取失败');
            }
            return $this->error;
        }

    }
}