PrivateController.php
2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
/**
* Created by PhpStorm.
* User: zhl
* Date: 2024/1/6
* Time: 17:41
*/
namespace App\Http\Controllers\Api;
use App\Models\Domain\DomainInfo;
use App\Models\Project\OnlineCheck;
use App\Models\Project\Project;
use App\Models\RouteMap\RouteMap;
use App\Services\ProjectServer;
use Illuminate\Http\Request;
/**
* Class PrivateController
* @package App\Http\Controllers\Api
*/
class PrivateController extends BaseController
{
/**
* 优化中项目列表
* @param Request $request
* @return false|string
*/
public function optimizeProjectList(Request $request)
{
$page_size = $request->input('page_size', 20);
$field = ['gl_project.id', 'gl_project.company', 'gl_project.is_upgrade', 'b.start_date', 'd.domain'];
$result = Project::select($field)->leftJoin('gl_project_deploy_optimize as b', 'gl_project.id', '=', 'b.project_id')
->leftJoin('gl_project_online_check as c', 'gl_project.id', '=', 'c.project_id')
->leftJoin('gl_domain_info as d', 'gl_project.id', '=', 'd.project_id')
->where('c.qa_status', '=', OnlineCheck::STATUS_ONLINE_TRUE)
->whereIn('gl_project.type', [Project::TYPE_TWO, Project::TYPE_FOUR])
->paginate($page_size)
->toArray();
return $this->success($result);
}
/**
* 获取项目链接
* FIXME 当前直接获取的产品和产品分类, 后期需要封装到内部, 需要添加完整的链接规则
* @param Request $request
* @return false|string
*/
public function getProjectRoute(Request $request)
{
$project_id = intval($request->input('project_id'));
// $type = $request->input('type');
$type = [RouteMap::SOURCE_PRODUCT, RouteMap::SOURCE_PRODUCT_CATE];
$project = Project::where(['id' => $project_id])->first();
if (empty($project))
return $this->error('未发现需要查找的项目!');
$project = ProjectServer::useProject($project_id);
$domain = DomainInfo::where(['project_id' => $project_id])->first();
$host = FALSE == empty($domain) ? 'https://' . $domain->domain . '/' : $project->deploy_build->test_domain;
$list = RouteMap::where(['project_id' => $project_id])
->when($type, function ($query) use ($type) {
return $query->whereIn('source', $type);
})
->get();
$result = [];
foreach ($list as $val) {
// 排除首页
if ($val->source == RouteMap::SOURCE_PAGE && in_array($val->route, ['index', '']))
continue;
$result[$val->source][] = $host . $val->route;
}
return $this->success($result);
}
}