作者 赵彬吉
@@ -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',
@@ -39,7 +39,7 @@ class TestController extends BaseController @@ -39,7 +39,7 @@ class TestController extends BaseController
39 $res_data = []; 39 $res_data = [];
40 // $i = 1; 40 // $i = 1;
41 // while (true){ 41 // while (true){
42 - $url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=200&pagesize=100'; 42 + $url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=1&pagesize=1';
43 $result = http_get($url); 43 $result = http_get($url);
44 $data = $result['data']; 44 $data = $result['data'];
45 // if(empty($data)){ 45 // if(empty($data)){
@@ -13,5 +13,5 @@ use App\Models\Base; @@ -13,5 +13,5 @@ use App\Models\Base;
13 13
14 class CountAllProject extends Base 14 class CountAllProject extends Base
15 { 15 {
16 - protected $table = 'gl_count_all_project'; 16 + protected $table = 'gl_all_project';
17 } 17 }