作者 周海龙

合并分支 'zhl' 到 'master'

内部接口



查看合并请求 !747
... ... @@ -12,6 +12,7 @@ use App\Http\Logic\Bside\User\UserLoginLogic;
use App\Models\Domain\DomainInfo;
use App\Models\Product\Category;
use App\Models\Product\CategoryRelated;
use App\Models\Product\Keyword;
use App\Models\Product\Product;
use App\Models\Project\OnlineCheck;
use App\Models\Project\Project;
... ... @@ -151,11 +152,7 @@ class PrivateController extends BaseController
}
/**
* @remark :模拟登录返回token
* @name :getToken
* @author :lyh
* @method :post
* @time :2024/3/29 16:19
* 模拟登录返回token
*/
public function getAutoToken(){
$this->request->validate([
... ... @@ -201,4 +198,96 @@ class PrivateController extends BaseController
$product_route = Product::where(['status' => Product::STATUS_ON])->whereNotIn('id', $feature_product)->pluck('route')->toArray();
return $this->success($product_route);
}
/**
* 获取项目信息---站群服务
* @param Request $request
* @return false|string
*/
public function getProjectByDomain(Request $request)
{
$domain = trim($request->input('domain'));
if (empty($domain)) {
return $this->error('非法参数!');
}
$project = Project::getProjectByDomain($domain);
if (empty($project)) {
return $this->error('未找到当前域名对应的项目!');
}
$optimize = $project->optimize;
$keyword = $project->project_keyword;
$keywords = explode("\r\n", $keyword ? $keyword->main_keyword : []);
$result = [
'company' => $project->company,
'company_en_name' => $optimize ? $optimize->company_en_name : '',
'company_en_description' => $optimize ? $optimize->company_en_description : '',
'keywords' => $keywords
];
return $this->success($result);
}
/**
* 获取产品信息---站群服务
* @param Request $request
* @return false|string
*/
public function getProjectProduct(Request $request)
{
$domain = trim($request->input('domain'));
$page_size = intval($request->input('page_size', 20));
if (empty($domain)) {
return $this->error('非法参数!');
}
$project = Project::getProjectByDomain($domain);
if (empty($project)) {
return $this->error('未找到当前域名对应的项目!');
}
ProjectServer::useProject($project->id);
$products = Product::with('category')->where(['status' => Product::STATUS_ON])->paginate($page_size);
// $products_ids = $products->pluck('id')->toArray();
// $category_ids = CategoryRelated::whereIn('product_id', $products_ids)->pluck('cate_id')->toArray();
// $category = Category::whereIn('id', $category_ids)->pluck('title', 'id')->toArray();
$keyword_id = $products->pluck('keyword_id')->toArray();
$keyword_ids = array_reduce($keyword_id, 'array_merge', array());
$keyword = Keyword::whereIn('id', $keyword_ids)->pluck('title', 'id')->toArray();
$result = [];
foreach ($products as $product) {
$product_keyword = [];
foreach ($product->keyword_id as $k_id) {
array_push($product_keyword, $keyword[$k_id]);
}
$product_category = $product->category->pluck('title')->toArray();
$result[] = [
'title' => $product->title,
'thumb' => $product->thumb,
'gallery' => $product->gallery,
'intro' => $product->intro,
'content' => $product->content,
'category' => $product_category,
'keyword' => $product_keyword,
'route' => $product->route
];
}
return $this->success($result);
}
/**
* 获取上线项目 --- 监控服务
* @param Request $request
* @return false|string
*/
public function getProjectOnline(Request $request)
{
$page_size = intval($request->input('page_size', 20));
$projects = Project::select(['id', 'title', 'company', 'type', 'finish_remain_day', 'remain_day'])->whereIn('type', [2, 3, 4, 6])->where('delete_status', 0)->paginate($page_size);
foreach ($projects as $project) {
$project->domain = $project->domainInfo ? $project->domainInfo->domain : '';
}
return $this->success($projects);
}
}
... ...
... ... @@ -39,6 +39,15 @@ Route::any('getAutoToken', [\App\Http\Controllers\Api\PrivateController::class,
// 特殊项目 有效产品路由
Route::any('valid_product_route', [\App\Http\Controllers\Api\PrivateController::class, 'getProductRoute'])->name('api.valid_product_route');
// --------------------- 站群服务 ------------------------------------------
// 获取项目信息
Route::any('get_project_detail', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectByDomain'])->name('api.project_detail');
// 获取项目产品信息
Route::any('get_project_product', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectProduct'])->name('api.project_product');
// --------------------- 站群服务 ------------------------------------------
// --------------------- 监控服务 ------------------------------------------
Route::any('get_project_online', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectOnline'])->name('api.get_project_online');
//自建站接口转接
Route::post('selfSiteApi', [\App\Http\Controllers\Api\SelfSiteController::class, 'selfSiteApi']);
Route::post('selfSiteNotify', [\App\Http\Controllers\Api\SelfSiteController::class, 'selfSiteNotify']);
... ...