|
@@ -2,8 +2,14 @@ |
|
@@ -2,8 +2,14 @@ |
|
2
|
|
2
|
|
|
3
|
namespace App\Http\Controllers\Bside;
|
3
|
namespace App\Http\Controllers\Bside;
|
|
4
|
|
4
|
|
|
|
|
5
|
+
|
|
|
|
6
|
+use App\Helper\GoogleSpeedApi;
|
|
|
|
7
|
+use App\Helper\QuanqiusouApi;
|
|
|
|
8
|
+use App\Http\Logic\Aside\Project\ProjectLogic;
|
|
5
|
use App\Http\Logic\Bside\RankDataLogic;
|
9
|
use App\Http\Logic\Bside\RankDataLogic;
|
|
6
|
-use Illuminate\Http\Request;
|
10
|
+use App\Models\RankData\Speed as GoogleSpeedModel;
|
|
|
|
11
|
+use App\Services\BatchExportService;
|
|
|
|
12
|
+use Illuminate\Support\Facades\Storage;
|
|
7
|
|
13
|
|
|
8
|
/**
|
14
|
/**
|
|
9
|
* Class GoogleRankController
|
15
|
* Class GoogleRankController
|
|
@@ -20,8 +26,126 @@ class RankDataController extends BaseController |
|
@@ -20,8 +26,126 @@ class RankDataController extends BaseController |
|
20
|
return $this->success($data);
|
26
|
return $this->success($data);
|
|
21
|
}
|
27
|
}
|
|
22
|
|
28
|
|
|
|
|
29
|
+ /**
|
|
|
|
30
|
+ * 关键词排名列表
|
|
|
|
31
|
+ * @param RankDataLogic $logic
|
|
|
|
32
|
+ * @return \Illuminate\Http\JsonResponse
|
|
|
|
33
|
+ * @author zbj
|
|
|
|
34
|
+ * @date 2023/5/15
|
|
|
|
35
|
+ */
|
|
23
|
public function keywords_rank_list(RankDataLogic $logic){
|
36
|
public function keywords_rank_list(RankDataLogic $logic){
|
|
24
|
$data = $logic->keywords_rank_list();
|
37
|
$data = $logic->keywords_rank_list();
|
|
25
|
return $this->success($data);
|
38
|
return $this->success($data);
|
|
26
|
}
|
39
|
}
|
|
|
|
40
|
+
|
|
|
|
41
|
+
|
|
|
|
42
|
+ /**
|
|
|
|
43
|
+ * 刷新测速
|
|
|
|
44
|
+ * @param ProjectLogic $projectLogic
|
|
|
|
45
|
+ * @param GoogleSpeedApi $googleSpeedApi
|
|
|
|
46
|
+ * @return \Illuminate\Http\JsonResponse
|
|
|
|
47
|
+ * @throws \App\Exceptions\AsideGlobalException
|
|
|
|
48
|
+ * @throws \App\Exceptions\BsideGlobalException
|
|
|
|
49
|
+ * @author zbj
|
|
|
|
50
|
+ * @date 2023/5/15
|
|
|
|
51
|
+ */
|
|
|
|
52
|
+ public function speed(ProjectLogic $projectLogic, GoogleSpeedApi $googleSpeedApi){
|
|
|
|
53
|
+ $project_id = $this->user['project_id'];
|
|
|
|
54
|
+ $project = $projectLogic->getInfo($project_id);
|
|
|
|
55
|
+ $domain = $project['deploy_optimize']['domain'] ?? '';
|
|
|
|
56
|
+ $data = $googleSpeedApi->run($domain);
|
|
|
|
57
|
+ if($data){
|
|
|
|
58
|
+ $model = GoogleSpeedModel::where('project_id', $project_id)->first();
|
|
|
|
59
|
+ $model->project_id = $project_id;
|
|
|
|
60
|
+ $model->data = $data;
|
|
|
|
61
|
+ $model->updated_date = date('Y-m-d');
|
|
|
|
62
|
+ $model->save();
|
|
|
|
63
|
+ }
|
|
|
|
64
|
+ return $this->success($data);
|
|
|
|
65
|
+ }
|
|
|
|
66
|
+
|
|
|
|
67
|
+ /**
|
|
|
|
68
|
+ * 数据导出
|
|
|
|
69
|
+ * @author zbj
|
|
|
|
70
|
+ * @date 2023/5/15
|
|
|
|
71
|
+ */
|
|
|
|
72
|
+ public function export(RankDataLogic $logic){
|
|
|
|
73
|
+ $data = $logic->keywords_rank_list(true);
|
|
|
|
74
|
+ foreach ($data as &$item){
|
|
|
|
75
|
+ $item['domain'] = explode(':', $item['domain'])[1];
|
|
|
|
76
|
+ $item['lang'] = $this->request['lang'] ?: 'en';
|
|
|
|
77
|
+ $item['g_text'] = $item['g'] == 1 ? '主关键词' : '拓展关键词';
|
|
|
|
78
|
+ foreach ($item['position'] as $date => $position){
|
|
|
|
79
|
+ $item[$date] = $position;
|
|
|
|
80
|
+ }
|
|
|
|
81
|
+ }
|
|
|
|
82
|
+
|
|
|
|
83
|
+ $map = [
|
|
|
|
84
|
+ 'keyword' => '关键词',
|
|
|
|
85
|
+ 'domain' => '排名网址',
|
|
|
|
86
|
+ 'lang' => '语言',
|
|
|
|
87
|
+ 'g_text' => '关键词类型',
|
|
|
|
88
|
+ ];
|
|
|
|
89
|
+ foreach ($data[0]['position'] as $date => $position){
|
|
|
|
90
|
+ $map[$date] = $date;
|
|
|
|
91
|
+ }
|
|
|
|
92
|
+
|
|
|
|
93
|
+ //生成文件,发送到客户端
|
|
|
|
94
|
+ $table = new BatchExportService("关键词数据导出");
|
|
|
|
95
|
+ $file = $table->head($map)->data($data)->save();
|
|
|
|
96
|
+ if (!$file) {
|
|
|
|
97
|
+ throw new \Exception('文件生成失败,请重试');
|
|
|
|
98
|
+ }
|
|
|
|
99
|
+ $fileurl = Storage::disk('runtime')->url($file);
|
|
|
|
100
|
+// return Storage::disk('runtime')->download($file); //直接下载
|
|
|
|
101
|
+ return $this->success(['url' => $fileurl]);
|
|
|
|
102
|
+ }
|
|
|
|
103
|
+
|
|
|
|
104
|
+ /**
|
|
|
|
105
|
+ * 数据导出
|
|
|
|
106
|
+ * @author zbj
|
|
|
|
107
|
+ * @date 2023/5/15
|
|
|
|
108
|
+ */
|
|
|
|
109
|
+ public function export_history(RankDataLogic $logic, ProjectLogic $projectLogic, QuanqiusouApi $quanqiusouApi){
|
|
|
|
110
|
+ $project_id = $this->user['project_id'];
|
|
|
|
111
|
+ $project = $projectLogic->getInfo($project_id);
|
|
|
|
112
|
+ $lang = $this->request['lang'] ??'';
|
|
|
|
113
|
+ $data = $quanqiusouApi->getHistoryCount($project['deploy_optimize']['api_no'], $lang);
|
|
|
|
114
|
+ if($lang){
|
|
|
|
115
|
+ foreach ($data['data'] as &$item){
|
|
|
|
116
|
+ $item['c_date'] = date("Y-m-d",strtotime($item['c_date'] . ' +1day'));
|
|
|
|
117
|
+ $item['reach'] = $item['home_cnt'] >= $data['bz_count'] ? '是' : '否';
|
|
|
|
118
|
+ }
|
|
|
|
119
|
+ $map = [
|
|
|
|
120
|
+ 'c_date' => '日期',
|
|
|
|
121
|
+ 'home_cnt' => '第一页',
|
|
|
|
122
|
+ 'reach' => '是否达标',
|
|
|
|
123
|
+ ];
|
|
|
|
124
|
+ }else{
|
|
|
|
125
|
+ foreach ($data['data'] as &$item){
|
|
|
|
126
|
+ $item['c_date'] = date("Y-m-d",strtotime($item['c_date'] . ' +1day'));
|
|
|
|
127
|
+ $item['reach'] = $item['cnt_home'] >= $project['deploy_build']['keyword_num'] ? '是' : '否';
|
|
|
|
128
|
+ }
|
|
|
|
129
|
+ $map = [
|
|
|
|
130
|
+ 'c_date' => '日期',
|
|
|
|
131
|
+ 'cnt_first' => '排名第一',
|
|
|
|
132
|
+ 'cnt_home' => '第一页',
|
|
|
|
133
|
+ 'cnt_thirty' => '前三页',
|
|
|
|
134
|
+ 'cnt_fifty' => '前五页',
|
|
|
|
135
|
+ 'cnt_hundred' => '前十页',
|
|
|
|
136
|
+ 'reach' => '是否达标',
|
|
|
|
137
|
+ ];
|
|
|
|
138
|
+ }
|
|
|
|
139
|
+
|
|
|
|
140
|
+
|
|
|
|
141
|
+ //生成文件,发送到客户端
|
|
|
|
142
|
+ $table = new BatchExportService($lang . "关键词历史数据导出");
|
|
|
|
143
|
+ $file = $table->head($map)->data($data['data'])->save();
|
|
|
|
144
|
+ if (!$file) {
|
|
|
|
145
|
+ throw new \Exception('文件生成失败,请重试');
|
|
|
|
146
|
+ }
|
|
|
|
147
|
+ $fileurl = Storage::disk('runtime')->url($file);
|
|
|
|
148
|
+// return Storage::disk('runtime')->download($file); //直接下载
|
|
|
|
149
|
+ return $this->success(['url' => $fileurl]);
|
|
|
|
150
|
+ }
|
|
27
|
} |
151
|
} |