ServerConfigController.php 3.4 KB
<?php

namespace App\Http\Controllers\Aside\Devops;

use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Devops\ServerConfigLogic;
use App\Http\Requests\Aside\Devops\ServerConfigRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;

/**
 * 项目服务器、数据库配置
 * Class ServerConfigController
 * @package App\Http\Controllers\Aside
 * @author zbj
 * @date 2023/4/24
 */
class ServerConfigController extends BaseController
{

    /**
     * @remark :服务器列表
     * @name   :lists
     * @author :lyh
     * @method :post
     * @time   :2023/8/2 14:48
     */
    public function lists(ServerConfigLogic $logic){
        if(isset($this->map['title']) && !empty($this->map['title'])){
            $this->map['title'] = ['like','%'.$this->map['title'].'%'];
        }
        if(isset($this->map['host']) && !empty($this->map['host'])){
            $this->map['host'] = ['like','%'.$this->map['host'].'%'];
        }
        $lists = $logic->serviceConfigList($this->map,$this->page,$this->row,$this->order);
        $this->response('success',Code::SUCCESS,$lists);
    }

    /**
     * @remark :获取数据详情
     * @name   :info
     * @author :lyh
     * @method :post
     * @time   :2023/8/2 17:52
     */
    public function info(ServerConfigLogic $logic){
        $this->request->validate([
            'id'=>'required'
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $info = $logic->getServiceConfig();
        $this->response('success',Code::SUCCESS,$info);
    }

    /**
     * 保存配置
     * @param ServerConfigRequest $request
     * @param ServerConfigLogic $logic
     * @author zbj
     * @date 2023/4/23
     */
    public function save(ServerConfigRequest $request, ServerConfigLogic $logic){
        $request->validated();
        $logic->serviceConfigSave();
        $this->response('success');
    }

    /**
     * @remark :删除配置
     * @name   :del
     * @author :lyh
     * @method :post
     * @time   :2023/8/2 15:41
     */
    public function del(ServerConfigLogic $logic){
        $this->request->validate([
            'id'=>'required'
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $logic->delServiceConfig();
        return $this->response('success');
    }


    /**
     * 更新表结构
     * @param ServerConfigLogic $logic
     * @author zbj
     * @date 2023/4/24
     */
    public function updateDatabase(Request $request, ServerConfigLogic $logic){
        $request->validate([
            'type' => 'in:1,2,3',
            'id'=> Rule::requiredIf($request->type == 1),
            'sql' => ['required', function ($attribute, $value, $fail) {
                if(Str::contains(Str::lower($value), ['drop', 'delete', 'truncate'])){
                    $fail('危险操作');
                }
            }]
        ],[
            'id.required' => 'ID不能为空',
            'sql.required' => '请输入Sql语句',
        ]);

        switch ($this->param['type']){
            case "1":
                $data = $logic->updateTable($this->param);
                break;
            case "2":
                $data = $logic->updateLocalTable($this->param);
                break;
            case "3":
                $data = $logic->updateAllTable($this->param);
                break;
        }
        $this->response('success',Code::SUCCESS,$data);
    }

}