作者 刘锟

静态页面打包任务

  1 +<?php
  2 +
  3 +namespace App\Http\Controllers\Aside\PackDir;
  4 +
  5 +use App\Enums\Common\Code;
  6 +use App\Http\Controllers\Aside\BaseController;
  7 +use App\Models\Devops\Servers;
  8 +use App\Models\Devops\ServersIp;
  9 +use App\Models\Domain\DomainInfo;
  10 +use App\Models\Manage\Manage;
  11 +use App\Models\PackDir\SitePackTask;
  12 +use App\Models\Project\Project;
  13 +
  14 +class PackDirController extends BaseController
  15 +{
  16 + /**
  17 + * 获取打包静态页面任务列表
  18 + * @author Akun
  19 + * @date 2024/10/08 16:12
  20 + */
  21 + public function getTaskLists()
  22 + {
  23 + $autoModule = new SitePackTask();
  24 + $lists = $autoModule->lists($this->map, $this->page, $this->row);
  25 + if (!empty($lists)) {
  26 + $projectModel = new Project();
  27 + $manageModel = new Manage();
  28 + $serverModel = new Servers();
  29 + $domainModel = new DomainInfo();
  30 + foreach ($lists['list'] as $k => $v) {
  31 + $lists['list'][$k]['operator_name'] = $manageModel->getName($v['user_id']);
  32 + $lists['list'][$k]['project_name'] = $projectModel->getProjectName($v['project_id']);
  33 +
  34 + $download_url = '';
  35 + if ($v['status'] == 2) {
  36 + $server_info = $serverModel->read(['id' => $v['server_id']], ['init_domain']);
  37 + $domain_info = $domainModel->read(['project_id' => $v['project_id']], ['domain']);
  38 + if ($server_info && $domain_info) {
  39 + $download_url = 'https://' . $server_info['init_domain'] . '/pack_sites/' . $domain_info['domain'] . '.zip';
  40 + }
  41 + }
  42 + $lists['list'][$k]['download_url'] = $download_url;
  43 + }
  44 + }
  45 +
  46 + $this->response('success', Code::SUCCESS, $lists);
  47 + }
  48 +
  49 + /**
  50 + * 添加静态页面打包任务
  51 + * @throws \App\Exceptions\AsideGlobalException
  52 + * @author Akun
  53 + * @date 2024/10/08 16:39
  54 + */
  55 + public function saveTask()
  56 + {
  57 + $this->request->validate([
  58 + 'project_id' => 'required',
  59 + ], [
  60 + 'server_id.required' => '项目不能为空'
  61 + ]);
  62 +
  63 + $domainModel = new DomainInfo();
  64 + $domain_info = $domainModel->read(['project_id' => $this->param['project_id']], ['domain']);
  65 + if (!$domain_info) {
  66 + $this->fail('项目未上线,无法打包静态页面');
  67 + }
  68 + $projectModel = new Project();
  69 + $project_info = $projectModel->read(['id' => $this->param['project_id']], ['serve_id']);
  70 + if (!$project_info) {
  71 + $this->fail('未查询到项目所属服务器信息');
  72 + }
  73 + $serverIpModel = new ServersIp();
  74 + $server_ip_info = $serverIpModel->read(['id' => $project_info['serve_id']], ['servers_id']);
  75 + if (!$server_ip_info) {
  76 + $this->fail('未查询到项目所属服务器信息');
  77 + }
  78 +
  79 + $data = [
  80 + 'user_id' => $this->uid,
  81 + 'project_id' => $this->param['project_id'],
  82 + 'server_id' => $server_ip_info['servers_id']
  83 + ];
  84 + $model = new SitePackTask();
  85 + $pack_info = $model->read(array_merge($data, ['status' => ['in', [SitePackTask::STATUS_UN, SitePackTask::STATUS_ING]]]));
  86 + if ($pack_info) {
  87 + $this->fail('当前项目已有打包任务进行中,请勿重复提交');
  88 + }
  89 + $model->add($data);
  90 +
  91 + $this->response('success');
  92 + }
  93 +}
  1 +<?php
  2 +
  3 +namespace App\Models\PackDir;
  4 +
  5 +use App\Models\Base;
  6 +
  7 +class SitePackTask extends Base
  8 +{
  9 + protected $table = 'gl_site_pack_task';
  10 +
  11 + const STATUS_UN = 0;
  12 + const STATUS_ING = 1;
  13 + const STATUS_SUC = 2;
  14 + const STATUS_FAL = 3;
  15 + const STATUS_EXP = 4;
  16 +}
@@ -473,6 +473,13 @@ Route::middleware(['aloginauth'])->group(function () { @@ -473,6 +473,13 @@ Route::middleware(['aloginauth'])->group(function () {
473 Route::any('/saveTask', [Aside\AutoPull\AutoPullController::class, 'saveTask'])->name('admin.auto_pull_saveTask'); 473 Route::any('/saveTask', [Aside\AutoPull\AutoPullController::class, 'saveTask'])->name('admin.auto_pull_saveTask');
474 Route::any('/taskMap', [Aside\AutoPull\AutoPullController::class, 'taskMap'])->name('admin.auto_pull_taskMap'); 474 Route::any('/taskMap', [Aside\AutoPull\AutoPullController::class, 'taskMap'])->name('admin.auto_pull_taskMap');
475 }); 475 });
  476 + /**
  477 + * 打包静态页面模块
  478 + */
  479 + Route::prefix('pack_dir')->group(function () {
  480 + Route::any('/', [Aside\PackDir\PackDirController::class, 'getTaskLists'])->name('admin.pack_dir_getTaskLists');
  481 + Route::any('/saveTask', [Aside\PackDir\PackDirController::class, 'saveTask'])->name('admin.pack_dir_saveTask');
  482 + });
476 }); 483 });
477 484
478 //无需登录验证的路由组 485 //无需登录验证的路由组