作者 赵彬吉
... ... @@ -492,6 +492,13 @@ class OptimizeController extends BaseController
$this->processChunkedList($productCategoryModel, ['status' => $productCategoryModel::STATUS_ACTIVE], ['id', 'title', 'route'], $domain, $data, 'product_category');
$productKeywordModel = new Keyword();
$this->processChunkedList($productKeywordModel, ['status' => $productKeywordModel::STATUS_ACTIVE], ['id', 'title', 'route'], $domain, $data, 'product_keyword');
$aiBlogModel = new AiBlog();
$list = $aiBlogModel->list(['route'=>['!=',null]],'id',['route','new_title']);
if(!empty($list)){
foreach ($list as $v){
$data['ai_blog'][] = $domain . 'blog/' . $v['route'] . '/{' . $v['new_title'] . '}';
}
}
DB::disconnect('custom_mysql');
$this->response('success', Code::SUCCESS, $data);
}
... ...
... ... @@ -13,6 +13,7 @@ use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\GoogleKeywordInsight\GoogleKeywordInsightLogic;
use App\Models\GoogleKeywordInsight\GoogleKeywordInsightDetail;
use App\Models\Project\ProjectKeyword;
/**
* @remark :谷歌洞察数据
... ... @@ -41,4 +42,81 @@ class GoogleKeywordInsightController extends BaseController
$data = $detailModel->lists(['search'=>$this->param['keyword']],$this->page,$this->row);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取优化关键词列表
* @name :getOptimizeList
* @author :lyh
* @method :post
* @time :2025/4/1 9:12
*/
public function getOptimizeList(){
$projectKeywordModel = new ProjectKeyword();
$info = $projectKeywordModel->read(['project_id'=>$this->user['project_id']],['main_keyword','customer_keywords']);
if($info === false){
$this->response('success');
}
$main_keyword = explode("\r\n", $info['main_keyword']);
$customer_keywords = explode("\r\n", $info['customer_keywords']);
$array = array_merge($main_keyword, $customer_keywords);
$detailModel = new GoogleKeywordInsightDetail();
$resultData = [];
if(!empty($array)){
$resultData = $this->paginateArray($array,$this->page,$this->row);
$detailList = $detailModel->read(['search'=>['in',$resultData['list']]]);
foreach ($resultData['list'] as $key => $item){
$result['keyword'] = $item;
$searchKeyword = $this->getSearchDetail($item,$detailList);
if($searchKeyword === false){
$result['data'] = [];
}else{
$result['data'] = $searchKeyword;
}
$resultData['list'][$key] = $result;
}
}
$this->response('success',Code::SUCCESS,$resultData);
}
/**
* @remark :查看当前数据是否存在数组中
* @name :getSearchDetail
* @author :lyh
* @method :post
* @time :2025/4/1 9:56
*/
public function getSearchDetail($keyword,$detailList){
if(!empty($detailList)){
foreach ($detailList as $value){
if($keyword == $value['search']){
return $value;
}
}
}
return [];
}
/**
* @remark :返回分页数据
* @name :paginateArray
* @author :lyh
* @method :post
* @time :2025/4/1 9:41
*/
public function paginateArray($array, $page = 1, $pageSize = 20) {
$totalItems = count($array);
$totalPages = ceil($totalItems / $pageSize);
// 确保页码有效
$page = max(1, min($page, $totalPages));
$offset = ($page - 1) * $pageSize;
$data = array_slice($array, $offset, $pageSize);
return [
'list' => $data,
'page' => $page,
'size' => $pageSize,
'total_page' => $totalPages,
'total' => $totalItems,
];
}
}
... ...
... ... @@ -699,6 +699,7 @@ Route::middleware(['bloginauth'])->group(function () {
//google数据洞察
Route::prefix('google_keyword_insight')->group(function () {
Route::any('/getKeywordInsight', [\App\Http\Controllers\Bside\GoogleKeyword\GoogleKeywordInsightController::class, 'getKeywordInsight'])->name('google_keyword_insight_getKeywordInsight');
Route::any('/getOptimizeList', [\App\Http\Controllers\Bside\GoogleKeyword\GoogleKeywordInsightController::class, 'getOptimizeList'])->name('google_keyword_insight_getOptimizeList');
});
//google搜索数据
Route::prefix('google_search')->group(function () {
... ...