作者 李宇航

合并分支 'lyh-server' 到 'master'

Lyh server



查看合并请求 !1638
@@ -13,6 +13,7 @@ use App\Enums\Common\Code; @@ -13,6 +13,7 @@ use App\Enums\Common\Code;
13 use App\Http\Controllers\Bside\BaseController; 13 use App\Http\Controllers\Bside\BaseController;
14 use App\Http\Logic\Bside\GoogleKeywordInsight\GoogleKeywordInsightLogic; 14 use App\Http\Logic\Bside\GoogleKeywordInsight\GoogleKeywordInsightLogic;
15 use App\Models\GoogleKeywordInsight\GoogleKeywordInsightDetail; 15 use App\Models\GoogleKeywordInsight\GoogleKeywordInsightDetail;
  16 +use App\Models\Project\ProjectKeyword;
16 17
17 /** 18 /**
18 * @remark :谷歌洞察数据 19 * @remark :谷歌洞察数据
@@ -41,4 +42,86 @@ class GoogleKeywordInsightController extends BaseController @@ -41,4 +42,86 @@ class GoogleKeywordInsightController extends BaseController
41 $data = $detailModel->lists(['search'=>$this->param['keyword']],$this->page,$this->row); 42 $data = $detailModel->lists(['search'=>$this->param['keyword']],$this->page,$this->row);
42 $this->response('success',Code::SUCCESS,$data); 43 $this->response('success',Code::SUCCESS,$data);
43 } 44 }
  45 +
  46 + /**
  47 + * @remark :获取优化关键词列表
  48 + * @name :getOptimizeList
  49 + * @author :lyh
  50 + * @method :post
  51 + * @time :2025/4/1 9:12
  52 + */
  53 + public function getOptimizeList(){
  54 + $this->request->validate([
  55 + 'field' => 'required'
  56 + ],[
  57 + 'field.required' => 'field不能为空',
  58 + ]);
  59 + $projectKeywordModel = new ProjectKeyword();
  60 + $info = $projectKeywordModel->read(['project_id'=>$this->user['project_id']],['main_keyword','customer_keywords']);
  61 + if($info === false){
  62 + $this->response('success');
  63 + }
  64 + $main_keyword = explode("\n", $info[$this->param['field']]);
  65 + $detailModel = new GoogleKeywordInsightDetail();
  66 + $resultData = [];
  67 + if(!empty($main_keyword)){
  68 + $result = [];
  69 + $resultData = $this->paginateArray($main_keyword,$this->page,$this->row);
  70 + $detailList = $detailModel->read(['search'=>['in',$resultData['data']]]);
  71 + foreach ($resultData['data'] as $key => $item){
  72 + $result[]['keyword'] = $item;
  73 + $searchKeyword = $this->getSearchDetail($item,$detailList);
  74 + if($searchKeyword === false){
  75 + $result[]['data'] = [];
  76 + }else{
  77 + $result[]['data'] = $searchKeyword;
  78 + }
  79 + }
  80 + $resultData['data'] = $result;
  81 + }
  82 + $this->response('success',Code::SUCCESS,$resultData);
  83 + }
  84 +
  85 + /**
  86 + * @remark :查看当前数据是否存在数组中
  87 + * @name :getSearchDetail
  88 + * @author :lyh
  89 + * @method :post
  90 + * @time :2025/4/1 9:56
  91 + */
  92 + public function getSearchDetail($keyword,$detailList){
  93 + if(!empty($detailList)){
  94 + foreach ($detailList as $value){
  95 + if($keyword == $value['search']){
  96 + return $value;
  97 + }
  98 + }
  99 + }
  100 + return [];
  101 + }
  102 +
  103 + /**
  104 + * @remark :返回分页数据
  105 + * @name :paginateArray
  106 + * @author :lyh
  107 + * @method :post
  108 + * @time :2025/4/1 9:41
  109 + */
  110 + public function paginateArray($array, $page = 1, $pageSize = 20) {
  111 + $totalItems = count($array);
  112 + $totalPages = ceil($totalItems / $pageSize);
  113 + // 确保页码有效
  114 + $page = max(1, min($page, $totalPages));
  115 + $offset = ($page - 1) * $pageSize;
  116 + $data = array_slice($array, $offset, $pageSize);
  117 + return [
  118 + 'list'=>[
  119 + 'page' => $page,
  120 + 'size' => $pageSize,
  121 + 'total_page' => $totalPages,
  122 + 'total' => $totalItems,
  123 + ],
  124 + 'data' => $data
  125 + ];
  126 + }
44 } 127 }
@@ -699,6 +699,7 @@ Route::middleware(['bloginauth'])->group(function () { @@ -699,6 +699,7 @@ Route::middleware(['bloginauth'])->group(function () {
699 //google数据洞察 699 //google数据洞察
700 Route::prefix('google_keyword_insight')->group(function () { 700 Route::prefix('google_keyword_insight')->group(function () {
701 Route::any('/getKeywordInsight', [\App\Http\Controllers\Bside\GoogleKeyword\GoogleKeywordInsightController::class, 'getKeywordInsight'])->name('google_keyword_insight_getKeywordInsight'); 701 Route::any('/getKeywordInsight', [\App\Http\Controllers\Bside\GoogleKeyword\GoogleKeywordInsightController::class, 'getKeywordInsight'])->name('google_keyword_insight_getKeywordInsight');
  702 + Route::any('/getOptimizeList', [\App\Http\Controllers\Bside\GoogleKeyword\GoogleKeywordInsightController::class, 'getOptimizeList'])->name('google_keyword_insight_getOptimizeList');
702 }); 703 });
703 //google搜索数据 704 //google搜索数据
704 Route::prefix('google_search')->group(function () { 705 Route::prefix('google_search')->group(function () {