|
@@ -34,9 +34,13 @@ class CountAllProject extends Command |
|
@@ -34,9 +34,13 @@ class CountAllProject extends Command |
|
34
|
|
34
|
|
|
35
|
|
35
|
|
|
36
|
public function handle(){
|
36
|
public function handle(){
|
|
|
|
37
|
+ $countAllModel = new AllProject;
|
|
|
|
38
|
+ AllProject::truncate();
|
|
37
|
// $noSixData = [];
|
39
|
// $noSixData = [];
|
|
38
|
-// $noSixData = $this->NoSixProject();
|
40
|
+ $noSixData = $this->NoSixProject();
|
|
|
|
41
|
+ $countAllModel->insert($noSixData);
|
|
39
|
$sixData = $this->sixProject();
|
42
|
$sixData = $this->sixProject();
|
|
|
|
43
|
+ $countAllModel->insert($sixData);
|
|
40
|
$data = array_merge($noSixData ?? [],$sixData ?? []);
|
44
|
$data = array_merge($noSixData ?? [],$sixData ?? []);
|
|
41
|
echo 'success:' .count($data) . PHP_EOL . date('Y-m-d H:i:s');
|
45
|
echo 'success:' .count($data) . PHP_EOL . date('Y-m-d H:i:s');
|
|
42
|
return true;
|
46
|
return true;
|
|
@@ -53,18 +57,34 @@ class CountAllProject extends Command |
|
@@ -53,18 +57,34 @@ class CountAllProject extends Command |
|
53
|
$res_data = [];
|
57
|
$res_data = [];
|
|
54
|
$i = 1;
|
58
|
$i = 1;
|
|
55
|
while (true) {
|
59
|
while (true) {
|
|
56
|
- $url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=' . $i . '&pagesize=100';
|
|
|
|
57
|
- $result = curl_get($url);
|
60
|
+ $url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=' . $i . '&pagesize=50';
|
|
|
|
61
|
+ $result = $this->httpGetProxy($url);
|
|
58
|
// 检查结果是否成功,并且结构符合预期
|
62
|
// 检查结果是否成功,并且结构符合预期
|
|
59
|
if (isset($result['data']['data']) && is_array($result['data']['data'])) {
|
63
|
if (isset($result['data']['data']) && is_array($result['data']['data'])) {
|
|
60
|
$data = $result['data']['data'];
|
64
|
$data = $result['data']['data'];
|
|
61
|
// 如果当前页没有数据,跳出循环
|
65
|
// 如果当前页没有数据,跳出循环
|
|
62
|
- if (empty($data)) {
|
66
|
+ if ($i == 2) {
|
|
63
|
break;
|
67
|
break;
|
|
64
|
}
|
68
|
}
|
|
|
|
69
|
+ foreach ($data as $k => $v){
|
|
|
|
70
|
+ if(empty($v['online_date'])){
|
|
|
|
71
|
+ $v['online_date'] = null;
|
|
|
|
72
|
+ }
|
|
|
|
73
|
+ if($v['is_admin5'] == 5){
|
|
|
|
74
|
+ $v['version'] = 2;
|
|
|
|
75
|
+ }else{
|
|
|
|
76
|
+ $v['version'] = 3;
|
|
|
|
77
|
+ }
|
|
|
|
78
|
+ $v['is_upgrade'] = 0;
|
|
|
|
79
|
+ $v['status'] = 0;
|
|
|
|
80
|
+ $v['created_at'] = $v['updated_at'] = date('Y-m-d H:i:s');
|
|
|
|
81
|
+ $data[$k] = $v;
|
|
|
|
82
|
+ }
|
|
65
|
echo '执行页数:' . $i . PHP_EOL . date('Y-m-d H:i:s') . PHP_EOL;
|
83
|
echo '执行页数:' . $i . PHP_EOL . date('Y-m-d H:i:s') . PHP_EOL;
|
|
66
|
$res_data = array_merge($res_data, $data);
|
84
|
$res_data = array_merge($res_data, $data);
|
|
67
|
$i++;
|
85
|
$i++;
|
|
|
|
86
|
+ // 每次请求后增加 1 秒延迟,防止请求过于频繁
|
|
|
|
87
|
+ sleep(1);
|
|
68
|
} else {
|
88
|
} else {
|
|
69
|
// 如果数据结构不符合预期,输出错误信息并跳出循环
|
89
|
// 如果数据结构不符合预期,输出错误信息并跳出循环
|
|
70
|
echo '数据结构不符合预期或请求失败,停止执行。' . PHP_EOL . json_encode($result);
|
90
|
echo '数据结构不符合预期或请求失败,停止执行。' . PHP_EOL . json_encode($result);
|
|
@@ -74,6 +94,26 @@ class CountAllProject extends Command |
|
@@ -74,6 +94,26 @@ class CountAllProject extends Command |
|
74
|
return $res_data;
|
94
|
return $res_data;
|
|
75
|
}
|
95
|
}
|
|
76
|
|
96
|
|
|
|
|
97
|
+ public function httpGetProxy($url){
|
|
|
|
98
|
+ $ch1 = curl_init();
|
|
|
|
99
|
+ $timeout = 0;
|
|
|
|
100
|
+ curl_setopt($ch1, CURLOPT_URL, $url);
|
|
|
|
101
|
+ curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
102
|
+ curl_setopt($ch1, CURLOPT_PROXY, 'http://69.90.188.183:51395');
|
|
|
|
103
|
+ curl_setopt($ch1, CURLOPT_ENCODING, '');
|
|
|
|
104
|
+ curl_setopt($ch1, CURLOPT_MAXREDIRS, 10);
|
|
|
|
105
|
+ curl_setopt($ch1, CURLOPT_HTTPHEADER, array());
|
|
|
|
106
|
+ curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, $timeout);
|
|
|
|
107
|
+ curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, FALSE);
|
|
|
|
108
|
+ curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, FALSE);
|
|
|
|
109
|
+ curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
|
|
|
|
110
|
+ curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, 'GET');
|
|
|
|
111
|
+ curl_setopt($ch1, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
|
|
|
112
|
+ $content = curl_exec($ch1);
|
|
|
|
113
|
+ curl_close($ch1);
|
|
|
|
114
|
+ return json_decode($content, true);
|
|
|
|
115
|
+ }
|
|
|
|
116
|
+
|
|
77
|
public function sixProject(){
|
117
|
public function sixProject(){
|
|
78
|
$projectModel = new Project();
|
118
|
$projectModel = new Project();
|
|
79
|
$manageModel = new ManageHr();
|
119
|
$manageModel = new ManageHr();
|
|
@@ -100,9 +140,9 @@ class CountAllProject extends Command |
|
@@ -100,9 +140,9 @@ class CountAllProject extends Command |
|
100
|
'online_date'=>$v['uptime'],
|
140
|
'online_date'=>$v['uptime'],
|
|
101
|
'keywords_num'=>$v['key'],
|
141
|
'keywords_num'=>$v['key'],
|
|
102
|
'service_num'=>$v['day'],
|
142
|
'service_num'=>$v['day'],
|
|
103
|
- 'production_num'=>intval(abs(strtotime((empty($v['uptime']) ? date('Y-m-d H:i:s') : $v['uptime'])) - $v['created_at']) / 86400),
|
143
|
+ 'production_num'=>intval(abs((empty($v['uptime']) ? time() : strtotime($v['uptime'])) - strtotime($v['created_at'])) / 86400),
|
|
104
|
'plan'=>Project::planMap()[$v['plan']],
|
144
|
'plan'=>Project::planMap()[$v['plan']],
|
|
105
|
- 'status'=>$v['status'],
|
145
|
+ 'status'=>0,
|
|
106
|
'test_domain'=>$v['test_domain'],
|
146
|
'test_domain'=>$v['test_domain'],
|
|
107
|
'product_domain'=>!empty($v['domain']) ? (new DomainInfo())->getDomain($v['domain']) : '',
|
147
|
'product_domain'=>!empty($v['domain']) ? (new DomainInfo())->getDomain($v['domain']) : '',
|
|
108
|
'project_manager'=>$manageModel->getName($v['manager_mid'] ?? ''),
|
148
|
'project_manager'=>$manageModel->getName($v['manager_mid'] ?? ''),
|
|
@@ -113,6 +153,8 @@ class CountAllProject extends Command |
|
@@ -113,6 +153,8 @@ class CountAllProject extends Command |
|
113
|
'service_optimize'=>$manageModel->getName($v['optimize_optimist_mid'] ??''),
|
153
|
'service_optimize'=>$manageModel->getName($v['optimize_optimist_mid'] ??''),
|
|
114
|
'service_assistant'=>$manageModel->getName($v['optimize_assist_mid'] ??''),
|
154
|
'service_assistant'=>$manageModel->getName($v['optimize_assist_mid'] ??''),
|
|
115
|
'qa'=>$manageModel->getName($v['quality_mid'] ??''),
|
155
|
'qa'=>$manageModel->getName($v['quality_mid'] ??''),
|
|
|
|
156
|
+ 'created_at'=>date('Y-m-d H:i:s'),
|
|
|
|
157
|
+ 'updated_at'=>date('Y-m-d H:i:s'),
|
|
116
|
];
|
158
|
];
|
|
117
|
}
|
159
|
}
|
|
118
|
$i++;
|
160
|
$i++;
|
|
@@ -131,6 +173,7 @@ class CountAllProject extends Command |
|
@@ -131,6 +173,7 @@ class CountAllProject extends Command |
|
131
|
'gl_project.channel AS channel',
|
173
|
'gl_project.channel AS channel',
|
|
132
|
'gl_project.company AS company',
|
174
|
'gl_project.company AS company',
|
|
133
|
'gl_project.type AS type',
|
175
|
'gl_project.type AS type',
|
|
|
|
176
|
+ 'gl_project.status AS status',
|
|
134
|
'gl_project.extend_type AS extend_type',
|
177
|
'gl_project.extend_type AS extend_type',
|
|
135
|
'gl_project.uptime AS uptime',
|
178
|
'gl_project.uptime AS uptime',
|
|
136
|
'gl_project.is_upgrade AS is_upgrade',
|
179
|
'gl_project.is_upgrade AS is_upgrade',
|