作者 zhl

u

@@ -7,8 +7,11 @@ @@ -7,8 +7,11 @@
7 */ 7 */
8 namespace App\Http\Controllers\Api; 8 namespace App\Http\Controllers\Api;
9 9
  10 +use App\Models\Domain\DomainInfo;
10 use App\Models\Project\OnlineCheck; 11 use App\Models\Project\OnlineCheck;
11 use App\Models\Project\Project; 12 use App\Models\Project\Project;
  13 +use App\Models\RouteMap\RouteMap;
  14 +use App\Services\ProjectServer;
12 use Illuminate\Http\Request; 15 use Illuminate\Http\Request;
13 16
14 /** 17 /**
@@ -35,4 +38,41 @@ class PrivateController extends BaseController @@ -35,4 +38,41 @@ class PrivateController extends BaseController
35 ->toArray(); 38 ->toArray();
36 return $this->success($result); 39 return $this->success($result);
37 } 40 }
  41 +
  42 + /**
  43 + * 获取项目链接
  44 + * FIXME 当前直接获取的产品和产品分类, 后期需要封装到内部, 需要添加完整的链接规则
  45 + * @param Request $request
  46 + * @return false|string
  47 + */
  48 + public function getProjectRoute(Request $request)
  49 + {
  50 + $project_id = intval($request->input('project_id'));
  51 +// $type = $request->input('type');
  52 + $type = [RouteMap::SOURCE_PRODUCT, RouteMap::SOURCE_PRODUCT_CATE];
  53 +
  54 + $project = Project::where(['id' => $project_id])->first();
  55 + if (empty($project))
  56 + return $this->error('未发现需要查找的项目!');
  57 +
  58 + $project = ProjectServer::useProject($project_id);
  59 +
  60 + $domain = DomainInfo::where(['project_id' => $project_id])->first();
  61 + $host = FALSE == empty($domain) ? 'https://' . $domain->domain . '/' : $project->deploy_build->test_domain;
  62 +
  63 + $list = RouteMap::where(['project_id' => $project_id])
  64 + ->when($type, function ($query) use ($type) {
  65 + return $query->whereIn('source', $type);
  66 + })
  67 + ->get();
  68 +
  69 + $result = [];
  70 + foreach ($list as $val) {
  71 + // 排除首页
  72 + if ($val->source == RouteMap::SOURCE_PAGE && in_array($val->route, ['index', '']))
  73 + continue;
  74 + $result[$val->source][] = $host . $val->route;
  75 + }
  76 + return $this->success($result);
  77 + }
38 } 78 }
@@ -19,4 +19,5 @@ Route::middleware('auth:sanctum')->get('/user', function (Request $request) { @@ -19,4 +19,5 @@ Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
19 }); 19 });
20 20
21 Route::any('traffic_visit', [\App\Http\Controllers\Api\NoticeController::class, 'trafficVisit'])->name('api.traffic_visit'); 21 Route::any('traffic_visit', [\App\Http\Controllers\Api\NoticeController::class, 'trafficVisit'])->name('api.traffic_visit');
22 -Route::get('optimize_project_list', [\App\Http\Controllers\Api\PrivateController::class, 'optimizeProjectList'])->name('api.optimize_project_list');  
  22 +Route::get('optimize_project_list', [\App\Http\Controllers\Api\PrivateController::class, 'optimizeProjectList'])->name('api.optimize_project_list');
  23 +Route::get('get_project_route', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectRoute'])->name('api.get_project_route');