DomainTime.php 2.9 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();
        if ( empty( $all ) ) {
            $this->info( '未获取到数据' );
            return;
        }
        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;
    }
}