DomainInfoLogic.php 4.1 KB
<?php

namespace App\Http\Logic\Aside\Domain;


use App\Http\Logic\Aside\BaseLogic;
use App\Models\Domain\DomainInfo;
use App\Models\Project\DeployOptimize;
use App\Models\Project\Project;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Support\Carbon;

class DomainInfoLogic extends BaseLogic
{

    public function __construct()
    {
        parent::__construct();
        $this->model = new DomainInfo();
        $this->param = $this->requestAll;

    }

    /**
     * @remark :保存域名
     * @name   :createDomain
     * @author :lyh
     * @method :post
     * @time   :2023/8/1 14:52
     */
    public function saveDomain()
    {
        $domain = parse_url($this->param['domain'], PHP_URL_HOST);
        if(!empty($domain)){
            $this->param['domain'] = $domain['host'];
        }
        //验证域名
        $this->verifyDomain($this->param['domain'],isset($this->param['id']) ?? '');
        if(isset($this->param['id']) && !empty($this->param['id'])){
            $rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
        }else{
            $rs = $this->model->add($this->param);
        }
        if($rs === false){
            $this->fail('error');
        }
        return $this->success();
    }


    /**
     * @remark :验证域名是否存在
     * @name   :verifyDomain
     * @author :lyh
     * @method :post
     * @time   :2023/8/1 14:59
     */
    public function verifyDomain($domain,$id = ''){
        if(!empty($id)){
            $info = $this->model->read(['domain'=>$domain,'id'=>['!=',$id]]);
            if ($info !== false) {
                $this->fail('当前域名已存在');
            }
        }else{
            $info = $this->model->read(['domain'=>$domain]);
            if ($info !== false) {
                $this->fail('当前域名已存在');
            }
        }
        return $this->success();
    }

    /**
     * @remark :修改当前域名状态
     * @name   :editStatus
     * @author :lyh
     * @method :post
     * @time   :2023/8/1 15:43
     */
    public function editDomainStatus(){
        //查看当前域名是否有项目在使用
        if($this->param['status'] != $this->model::STATUS_ONE){
            $info = $this->model->read(['id'=>$this->param['id']]);
            if($info === false){
                $this->fail('当前域名有项目正在使用中');
            }
        }
        $rs = $this->model->edit(['status'=>$this->param['status']],['id'=>$this->param['id']]);
        if($rs === false){
            $this->fail('error');
        }
        return $this->success();
    }

    /**
     * @remark :获取所有项目列表
     * @name   :getProjectList
     * @author :lyh
     * @method :post
     * @time   :2023/8/1 16:10
     */
    public function getProjectList($map){
        $projectModel = new Project();
        $lists = $projectModel->list($map,'id',['id','title']);
        return $this->success($lists);
    }

    /**
     * @remark :删除域名
     * @name   :delDomain
     * @author :lyh
     * @method :post
     * @time   :2023/8/1 15:41
     */
    public function delDomain(){
        $ids = $this->param['id'];
        foreach ($ids as $k => $v){
            $info = $this->model->read(['id'=>$v]);
            $deployOptimizeModel = new DeployOptimize();
            $domainInfo = $deployOptimizeModel->read(['domain'=>$info['domain']]);
            if($domainInfo !== false){
                $this->fail('当前域名正在使用中');
            }
        }
        $this->param['id'] = ['in',$ids];
        $rs = $this->model->del($this->param);
        if($rs === false){
            $this->fail('error');
        }
        return $this->success();
    }


    public function infoDomain(){
        $info = $this->model->read(['id'=>$this->param['id']]);
        if($info === false){
            $this->fail('当前数据不存在或者已被删除');
        }
        if(!empty($info['project_id'])){
            $info['company'] = (new Project())->read(['id'=>$info['project_id']],['title'])['title'];
        }
        return $this->success($info);
    }





}