作者 lyh

gx数据

@@ -92,4 +92,17 @@ class GeoQuestionResController extends BaseController @@ -92,4 +92,17 @@ class GeoQuestionResController extends BaseController
92 $data = $this->logic->getResultInfo(); 92 $data = $this->logic->getResultInfo();
93 $this->response('success',Code::SUCCESS,$data); 93 $this->response('success',Code::SUCCESS,$data);
94 } 94 }
  95 +
  96 + /**
  97 + * @remark :统计数量
  98 + * @name :countQuantity
  99 + * @author :lyh
  100 + * @method :post
  101 + * @time :2025/7/21 10:58
  102 + */
  103 + public function countQuantity(){
  104 + $data = $this->logic->countQuantity();
  105 + $data['platform'] = $this->logic->platformHitCount();
  106 + $this->response('success',Code::SUCCESS,$data);
  107 + }
95 } 108 }
@@ -10,6 +10,8 @@ @@ -10,6 +10,8 @@
10 namespace App\Http\Logic\Bside\Geo; 10 namespace App\Http\Logic\Bside\Geo;
11 11
12 use App\Http\Logic\Bside\BaseLogic; 12 use App\Http\Logic\Bside\BaseLogic;
  13 +use App\Models\Geo\GeoPlatform;
  14 +use App\Models\Geo\GeoQuestion;
13 use App\Models\Geo\GeoQuestionResult; 15 use App\Models\Geo\GeoQuestionResult;
14 16
15 class GeoQuestionResLogic extends BaseLogic 17 class GeoQuestionResLogic extends BaseLogic
@@ -64,4 +66,60 @@ class GeoQuestionResLogic extends BaseLogic @@ -64,4 +66,60 @@ class GeoQuestionResLogic extends BaseLogic
64 $data = $this->model->read($this->param); 66 $data = $this->model->read($this->param);
65 return $this->success($data); 67 return $this->success($data);
66 } 68 }
  69 +
  70 + /**
  71 + * @remark :统计数量
  72 + * @name :countQuantity
  73 + * @author :lyh
  74 + * @method :post
  75 + * @time :2025/7/21 11:12
  76 + */
  77 + public function countQuantity(){
  78 + $questionModel = new GeoQuestion();
  79 + $list = $questionModel->list(['project_id',$this->user['project_id']],['question','keywords','url']);
  80 + $questionTotalCount = $urlTotalCount = $keywordsTotalCount = $keywordUrlCount = 0;
  81 + foreach ($list as $item){
  82 + $questionTotalCount += count($item['question'] ?? []);
  83 + $keywordsTotalCount += count($item['keywords'] ?? []);
  84 + $urlTotalCount += count($item['url'] ?? []);
  85 + }
  86 + $keywordArr = [];
  87 + $questionResModel = new GeoQuestionResult();
  88 + $resList = $questionResModel->list(['project_id',$this->user['project_id']],['keywords_num','url_num']);
  89 + foreach ($resList as $resItem){
  90 + $keywordsNumArr = json_decode($resItem['keywords_num'] ?? [], true); // 转为 PHP 关联数组
  91 + $keywordUrlCount += array_sum($keywordsNumArr); // 获取值的总和
  92 + $urlNumArr = json_decode($resItem['url'] ?? [],true);
  93 + $keywordUrlCount += array_sum($urlNumArr); // 获取值的总和
  94 + foreach ($resItem['keywords_num'] as $key => $value) {
  95 + $keywordArr[$key] = ($keywordArr[$key] ?? 0) + $value;
  96 + }
  97 + }
  98 + $data = [
  99 + 'keywords_count'=>$keywordsTotalCount,
  100 + 'url_count'=>$urlTotalCount,
  101 + 'question_count'=>$questionTotalCount,
  102 + 'keywords_url_count'=>$keywordUrlCount,
  103 + 'keywords_arr' => $keywordArr,
  104 + ];
  105 + return $this->success($data);
  106 + }
  107 +
  108 + /**
  109 + * @remark :按平台统计问题数量
  110 + * @name :platformHitCount
  111 + * @author :lyh
  112 + * @method :post
  113 + * @time :2025/7/21 15:00
  114 + */
  115 + public function platformHitCount(){
  116 + $data = [];
  117 + $platformModel = new GeoPlatform();
  118 + $list = $platformModel->list(['status'=>1],'id',['name','en_name']);
  119 + $questionResModel = new GeoQuestionResult();
  120 + foreach ($list as $item){
  121 + $data[$item['name']] = $questionResModel->counts(['project_id'=>$this->user['project_id'],'hit'=>['!=',0],'platform'=>$item['en_name']]);
  122 + }
  123 + return $this->success($data);
  124 + }
67 } 125 }
@@ -69,4 +69,34 @@ class GeoQuestionResult extends Base @@ -69,4 +69,34 @@ class GeoQuestionResult extends Base
69 } 69 }
70 return $value; 70 return $value;
71 } 71 }
  72 +
  73 + /**
  74 + * @remark :命中的关键词数量
  75 + * @name :getKeywordsNumAttribute
  76 + * @author :lyh
  77 + * @method :post
  78 + * @time :2025/7/21 11:33
  79 + */
  80 + public function getKeywordsNumAttribute($value)
  81 + {
  82 + if($value){
  83 + $value = Arr::s2a($value);
  84 + }
  85 + return $value;
  86 + }
  87 +
  88 + /**
  89 + * @remark :命中的url数量
  90 + * @name :getUrlNumAttribute
  91 + * @author :lyh
  92 + * @method :post
  93 + * @time :2025/7/21 11:34
  94 + */
  95 + public function getUrlNumAttribute($value)
  96 + {
  97 + if($value){
  98 + $value = Arr::s2a($value);
  99 + }
  100 + return $value;
  101 + }
72 } 102 }
@@ -755,6 +755,7 @@ Route::middleware(['bloginauth'])->group(function () { @@ -755,6 +755,7 @@ Route::middleware(['bloginauth'])->group(function () {
755 Route::any('/getInfo', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class,'getInfo'])->name('geo_result_getInfo'); 755 Route::any('/getInfo', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class,'getInfo'])->name('geo_result_getInfo');
756 Route::any('/getType', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class, 'getType'])->name('geo_result_getType');//geo设置类型 756 Route::any('/getType', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class, 'getType'])->name('geo_result_getType');//geo设置类型
757 Route::any('/getCount', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class, 'getCount'])->name('geo_result_getCount');//geo设置类型统计数量 757 Route::any('/getCount', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class, 'getCount'])->name('geo_result_getCount');//geo设置类型统计数量
  758 + Route::any('/countQuantity', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class, 'countQuantity'])->name('geo_result_countQuantity');//geo统计
758 }); 759 });
759 }); 760 });
760 //无需登录验证的路由组 761 //无需登录验证的路由组