AutoPullController.php 2.3 KB
<?php

namespace App\Http\Controllers\Aside\AutoPull;

use App\Enums\Common\Code;
use App\Helper\Arr;
use App\Http\Controllers\Aside\BaseController;
use App\Models\AutoPull\AutoPullNotify;
use App\Models\Manage\Manage;

class AutoPullController extends BaseController
{
    /**
     * 获取自动拉取代码任务列表
     * @author Akun
     * @date 2024/08/26 15:49
     */
    public function getTaskLists()
    {
        $autoModule = new AutoPullNotify();
        $lists = $autoModule->lists($this->map, $this->page, $this->row);
        if (!empty($lists)) {
            $manage_model = new Manage();
            foreach ($lists['list'] as $k => $v) {
                $lists['list'][$k]['operator_name'] = $manage_model->getName($v['user_id']);
                $lists['list'][$k]['server_name'] = AutoPullNotify::serversMap()[$v['server_id']];

                $process = Arr::s2a($v['process']);
                $process_name = [];
                if ($process) {
                    foreach ($process as $kp => $vp) {
                        $process_name[$kp] = AutoPullNotify::processMap()[$vp];
                    }
                }

                $lists['list'][$k]['process_name'] = $process_name;
            }
        }

        $this->response('success', Code::SUCCESS, $lists);
    }

    /**
     * 添加自动拉取代码任务
     * @author Akun
     * @date 2024/08/26 16:31
     */
    public function saveTask()
    {
        $this->request->validate([
            'server_id' => 'required',
        ], [
            'server_id.required' => '服务器不能为空'
        ]);

        $model = new AutoPullNotify();

        foreach ($this->param['server_id'] as $v) {
            $model->add([
                'user_id' => $this->uid,
                'server_id' => $v,
                'process' => Arr::a2s($this->param['process'] ?? []),
                'status' => 0
            ]);
        }

        $this->response('success');
    }

    /**
     * 获取服务器及进程配置
     * @author Akun
     * @date 2024/08/26 16:07
     */
    public function taskMap()
    {
        $servers = AutoPullNotify::serversMap();
        $process = AutoPullNotify::processMap();

        $lists = [
            'servers' => $servers,
            'process' => $process
        ];

        $this->response('success', Code::SUCCESS, $lists);
    }
}