作者 lyh

gx数据

... ... @@ -92,4 +92,17 @@ class GeoQuestionResController extends BaseController
$data = $this->logic->getResultInfo();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :统计数量
* @name :countQuantity
* @author :lyh
* @method :post
* @time :2025/7/21 10:58
*/
public function countQuantity(){
$data = $this->logic->countQuantity();
$data['platform'] = $this->logic->platformHitCount();
$this->response('success',Code::SUCCESS,$data);
}
}
... ...
... ... @@ -10,6 +10,8 @@
namespace App\Http\Logic\Bside\Geo;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Geo\GeoPlatform;
use App\Models\Geo\GeoQuestion;
use App\Models\Geo\GeoQuestionResult;
class GeoQuestionResLogic extends BaseLogic
... ... @@ -64,4 +66,60 @@ class GeoQuestionResLogic extends BaseLogic
$data = $this->model->read($this->param);
return $this->success($data);
}
/**
* @remark :统计数量
* @name :countQuantity
* @author :lyh
* @method :post
* @time :2025/7/21 11:12
*/
public function countQuantity(){
$questionModel = new GeoQuestion();
$list = $questionModel->list(['project_id',$this->user['project_id']],['question','keywords','url']);
$questionTotalCount = $urlTotalCount = $keywordsTotalCount = $keywordUrlCount = 0;
foreach ($list as $item){
$questionTotalCount += count($item['question'] ?? []);
$keywordsTotalCount += count($item['keywords'] ?? []);
$urlTotalCount += count($item['url'] ?? []);
}
$keywordArr = [];
$questionResModel = new GeoQuestionResult();
$resList = $questionResModel->list(['project_id',$this->user['project_id']],['keywords_num','url_num']);
foreach ($resList as $resItem){
$keywordsNumArr = json_decode($resItem['keywords_num'] ?? [], true); // 转为 PHP 关联数组
$keywordUrlCount += array_sum($keywordsNumArr); // 获取值的总和
$urlNumArr = json_decode($resItem['url'] ?? [],true);
$keywordUrlCount += array_sum($urlNumArr); // 获取值的总和
foreach ($resItem['keywords_num'] as $key => $value) {
$keywordArr[$key] = ($keywordArr[$key] ?? 0) + $value;
}
}
$data = [
'keywords_count'=>$keywordsTotalCount,
'url_count'=>$urlTotalCount,
'question_count'=>$questionTotalCount,
'keywords_url_count'=>$keywordUrlCount,
'keywords_arr' => $keywordArr,
];
return $this->success($data);
}
/**
* @remark :按平台统计问题数量
* @name :platformHitCount
* @author :lyh
* @method :post
* @time :2025/7/21 15:00
*/
public function platformHitCount(){
$data = [];
$platformModel = new GeoPlatform();
$list = $platformModel->list(['status'=>1],'id',['name','en_name']);
$questionResModel = new GeoQuestionResult();
foreach ($list as $item){
$data[$item['name']] = $questionResModel->counts(['project_id'=>$this->user['project_id'],'hit'=>['!=',0],'platform'=>$item['en_name']]);
}
return $this->success($data);
}
}
... ...
... ... @@ -69,4 +69,34 @@ class GeoQuestionResult extends Base
}
return $value;
}
/**
* @remark :命中的关键词数量
* @name :getKeywordsNumAttribute
* @author :lyh
* @method :post
* @time :2025/7/21 11:33
*/
public function getKeywordsNumAttribute($value)
{
if($value){
$value = Arr::s2a($value);
}
return $value;
}
/**
* @remark :命中的url数量
* @name :getUrlNumAttribute
* @author :lyh
* @method :post
* @time :2025/7/21 11:34
*/
public function getUrlNumAttribute($value)
{
if($value){
$value = Arr::s2a($value);
}
return $value;
}
}
... ...
... ... @@ -755,6 +755,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/getInfo', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class,'getInfo'])->name('geo_result_getInfo');
Route::any('/getType', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class, 'getType'])->name('geo_result_getType');//geo设置类型
Route::any('/getCount', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class, 'getCount'])->name('geo_result_getCount');//geo设置类型统计数量
Route::any('/countQuantity', [\App\Http\Controllers\Bside\Geo\GeoQuestionResController::class, 'countQuantity'])->name('geo_result_countQuantity');//geo统计
});
});
//无需登录验证的路由组
... ...