作者 zhl

u

... ... @@ -7,8 +7,11 @@
*/
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;
/**
... ... @@ -35,4 +38,41 @@ class PrivateController extends BaseController
->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);
}
}
\ No newline at end of file
... ...
... ... @@ -20,3 +20,4 @@ Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
Route::any('traffic_visit', [\App\Http\Controllers\Api\NoticeController::class, 'trafficVisit'])->name('api.traffic_visit');
Route::get('optimize_project_list', [\App\Http\Controllers\Api\PrivateController::class, 'optimizeProjectList'])->name('api.optimize_project_list');
Route::get('get_project_route', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectRoute'])->name('api.get_project_route');
\ No newline at end of file
... ...