|
...
|
...
|
@@ -2,8 +2,14 @@ |
|
|
|
|
|
|
|
namespace App\Http\Controllers\Bside;
|
|
|
|
|
|
|
|
|
|
|
|
use App\Helper\GoogleSpeedApi;
|
|
|
|
use App\Helper\QuanqiusouApi;
|
|
|
|
use App\Http\Logic\Aside\Project\ProjectLogic;
|
|
|
|
use App\Http\Logic\Bside\RankDataLogic;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use App\Models\RankData\Speed as GoogleSpeedModel;
|
|
|
|
use App\Services\BatchExportService;
|
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Class GoogleRankController
|
|
...
|
...
|
@@ -20,8 +26,126 @@ class RankDataController extends BaseController |
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 关键词排名列表
|
|
|
|
* @param RankDataLogic $logic
|
|
|
|
* @return \Illuminate\Http\JsonResponse
|
|
|
|
* @author zbj
|
|
|
|
* @date 2023/5/15
|
|
|
|
*/
|
|
|
|
public function keywords_rank_list(RankDataLogic $logic){
|
|
|
|
$data = $logic->keywords_rank_list();
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 刷新测速
|
|
|
|
* @param ProjectLogic $projectLogic
|
|
|
|
* @param GoogleSpeedApi $googleSpeedApi
|
|
|
|
* @return \Illuminate\Http\JsonResponse
|
|
|
|
* @throws \App\Exceptions\AsideGlobalException
|
|
|
|
* @throws \App\Exceptions\BsideGlobalException
|
|
|
|
* @author zbj
|
|
|
|
* @date 2023/5/15
|
|
|
|
*/
|
|
|
|
public function speed(ProjectLogic $projectLogic, GoogleSpeedApi $googleSpeedApi){
|
|
|
|
$project_id = $this->user['project_id'];
|
|
|
|
$project = $projectLogic->getInfo($project_id);
|
|
|
|
$domain = $project['deploy_optimize']['domain'] ?? '';
|
|
|
|
$data = $googleSpeedApi->run($domain);
|
|
|
|
if($data){
|
|
|
|
$model = GoogleSpeedModel::where('project_id', $project_id)->first();
|
|
|
|
$model->project_id = $project_id;
|
|
|
|
$model->data = $data;
|
|
|
|
$model->updated_date = date('Y-m-d');
|
|
|
|
$model->save();
|
|
|
|
}
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 数据导出
|
|
|
|
* @author zbj
|
|
|
|
* @date 2023/5/15
|
|
|
|
*/
|
|
|
|
public function export(RankDataLogic $logic){
|
|
|
|
$data = $logic->keywords_rank_list(true);
|
|
|
|
foreach ($data as &$item){
|
|
|
|
$item['domain'] = explode(':', $item['domain'])[1];
|
|
|
|
$item['lang'] = $this->request['lang'] ?: 'en';
|
|
|
|
$item['g_text'] = $item['g'] == 1 ? '主关键词' : '拓展关键词';
|
|
|
|
foreach ($item['position'] as $date => $position){
|
|
|
|
$item[$date] = $position;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$map = [
|
|
|
|
'keyword' => '关键词',
|
|
|
|
'domain' => '排名网址',
|
|
|
|
'lang' => '语言',
|
|
|
|
'g_text' => '关键词类型',
|
|
|
|
];
|
|
|
|
foreach ($data[0]['position'] as $date => $position){
|
|
|
|
$map[$date] = $date;
|
|
|
|
}
|
|
|
|
|
|
|
|
//生成文件,发送到客户端
|
|
|
|
$table = new BatchExportService("关键词数据导出");
|
|
|
|
$file = $table->head($map)->data($data)->save();
|
|
|
|
if (!$file) {
|
|
|
|
throw new \Exception('文件生成失败,请重试');
|
|
|
|
}
|
|
|
|
$fileurl = Storage::disk('runtime')->url($file);
|
|
|
|
// return Storage::disk('runtime')->download($file); //直接下载
|
|
|
|
return $this->success(['url' => $fileurl]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 数据导出
|
|
|
|
* @author zbj
|
|
|
|
* @date 2023/5/15
|
|
|
|
*/
|
|
|
|
public function export_history(RankDataLogic $logic, ProjectLogic $projectLogic, QuanqiusouApi $quanqiusouApi){
|
|
|
|
$project_id = $this->user['project_id'];
|
|
|
|
$project = $projectLogic->getInfo($project_id);
|
|
|
|
$lang = $this->request['lang'] ??'';
|
|
|
|
$data = $quanqiusouApi->getHistoryCount($project['deploy_optimize']['api_no'], $lang);
|
|
|
|
if($lang){
|
|
|
|
foreach ($data['data'] as &$item){
|
|
|
|
$item['c_date'] = date("Y-m-d",strtotime($item['c_date'] . ' +1day'));
|
|
|
|
$item['reach'] = $item['home_cnt'] >= $data['bz_count'] ? '是' : '否';
|
|
|
|
}
|
|
|
|
$map = [
|
|
|
|
'c_date' => '日期',
|
|
|
|
'home_cnt' => '第一页',
|
|
|
|
'reach' => '是否达标',
|
|
|
|
];
|
|
|
|
}else{
|
|
|
|
foreach ($data['data'] as &$item){
|
|
|
|
$item['c_date'] = date("Y-m-d",strtotime($item['c_date'] . ' +1day'));
|
|
|
|
$item['reach'] = $item['cnt_home'] >= $project['deploy_build']['keyword_num'] ? '是' : '否';
|
|
|
|
}
|
|
|
|
$map = [
|
|
|
|
'c_date' => '日期',
|
|
|
|
'cnt_first' => '排名第一',
|
|
|
|
'cnt_home' => '第一页',
|
|
|
|
'cnt_thirty' => '前三页',
|
|
|
|
'cnt_fifty' => '前五页',
|
|
|
|
'cnt_hundred' => '前十页',
|
|
|
|
'reach' => '是否达标',
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//生成文件,发送到客户端
|
|
|
|
$table = new BatchExportService($lang . "关键词历史数据导出");
|
|
|
|
$file = $table->head($map)->data($data['data'])->save();
|
|
|
|
if (!$file) {
|
|
|
|
throw new \Exception('文件生成失败,请重试');
|
|
|
|
}
|
|
|
|
$fileurl = Storage::disk('runtime')->url($file);
|
|
|
|
// return Storage::disk('runtime')->download($file); //直接下载
|
|
|
|
return $this->success(['url' => $fileurl]);
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|