正在显示
1 个修改的文件
包含
28 行增加
和
75 行删除
| @@ -19,6 +19,7 @@ use App\Services\ProjectServer; | @@ -19,6 +19,7 @@ use App\Services\ProjectServer; | ||
| 19 | use Illuminate\Console\Command; | 19 | use Illuminate\Console\Command; |
| 20 | use Illuminate\Support\Facades\DB; | 20 | use Illuminate\Support\Facades\DB; |
| 21 | use Illuminate\Support\Facades\Log; | 21 | use Illuminate\Support\Facades\Log; |
| 22 | +use Illuminate\Support\Facades\Redis; | ||
| 22 | 23 | ||
| 23 | /** | 24 | /** |
| 24 | * Class SyncInquiryProject | 25 | * Class SyncInquiryProject |
| @@ -38,7 +39,7 @@ class SyncInquiryProject extends Command | @@ -38,7 +39,7 @@ class SyncInquiryProject extends Command | ||
| 38 | * | 39 | * |
| 39 | * @var string | 40 | * @var string |
| 40 | */ | 41 | */ |
| 41 | - protected $description = '同步询盘信息:项目以及对应路由,'; | 42 | + protected $description = '同步询盘信息:项目'; |
| 42 | 43 | ||
| 43 | /** | 44 | /** |
| 44 | * Create a new command instance. | 45 | * Create a new command instance. |
| @@ -61,8 +62,6 @@ class SyncInquiryProject extends Command | @@ -61,8 +62,6 @@ class SyncInquiryProject extends Command | ||
| 61 | $this->syncGloV5(); | 62 | $this->syncGloV5(); |
| 62 | echo '开始同步v6' . PHP_EOL; | 63 | echo '开始同步v6' . PHP_EOL; |
| 63 | $this->syncGloV6(); | 64 | $this->syncGloV6(); |
| 64 | - echo '删除过期数据' . PHP_EOL; | ||
| 65 | - $this->deleteExpire(); | ||
| 66 | return true; | 65 | return true; |
| 67 | } | 66 | } |
| 68 | 67 | ||
| @@ -72,73 +71,47 @@ class SyncInquiryProject extends Command | @@ -72,73 +71,47 @@ class SyncInquiryProject extends Command | ||
| 72 | */ | 71 | */ |
| 73 | public function syncGloV5() | 72 | public function syncGloV5() |
| 74 | { | 73 | { |
| 74 | + $date = intval(date('Ymd')); | ||
| 75 | $result = http_get('https://www.quanqiusou.cn/extend_api/webs/globalso_v5_tg.php'); | 75 | $result = http_get('https://www.quanqiusou.cn/extend_api/webs/globalso_v5_tg.php'); |
| 76 | $channel = Channel::pluck('contact_mobile', 'id')->toArray(); | 76 | $channel = Channel::pluck('contact_mobile', 'id')->toArray(); |
| 77 | foreach ($result as $key=>$val) | 77 | foreach ($result as $key=>$val) |
| 78 | { | 78 | { |
| 79 | echo '同步项目:' . $val['postid'] . ' - ' . $val['company'] . PHP_EOL; | 79 | echo '同步项目:' . $val['postid'] . ' - ' . $val['company'] . PHP_EOL; |
| 80 | // 记录渠道商, 如果渠道有问题, 记录日志, 跳过当前项目, 处理数据后, 第二天再重新同步 | 80 | // 记录渠道商, 如果渠道有问题, 记录日志, 跳过当前项目, 处理数据后, 第二天再重新同步 |
| 81 | - $channel_flag = false; | ||
| 82 | $channel_tmp = []; | 81 | $channel_tmp = []; |
| 83 | foreach ($val['agent'] as $v) { | 82 | foreach ($val['agent'] as $v) { |
| 84 | $channel_id = array_search($v, $channel); | 83 | $channel_id = array_search($v, $channel); |
| 84 | + // 代理信息 只要找到一个, 就需要继续记录 | ||
| 85 | if (empty($channel_id)) { | 85 | if (empty($channel_id)) { |
| 86 | $this->log('ERROR 代理商找不到不记录当前项目, 代理商手机号码:' . $v); | 86 | $this->log('ERROR 代理商找不到不记录当前项目, 代理商手机号码:' . $v); |
| 87 | - $channel_flag = true; | ||
| 88 | - break; | 87 | + continue; |
| 89 | } | 88 | } |
| 90 | array_push($channel_tmp, $channel_id); | 89 | array_push($channel_tmp, $channel_id); |
| 91 | } | 90 | } |
| 92 | 91 | ||
| 93 | - if ($channel_flag || empty($channel_tmp)) { | 92 | + if (empty($channel_tmp)) { |
| 94 | $this->log('ERROR 代理商找不到不记录当前项目, 项目ID:' . $val['postid']); | 93 | $this->log('ERROR 代理商找不到不记录当前项目, 项目ID:' . $val['postid']); |
| 95 | continue; | 94 | continue; |
| 96 | } | 95 | } |
| 97 | 96 | ||
| 98 | - // 保存项目 以及路由 | ||
| 99 | - $project = InquiryProject::saveProject($val['v'], $val['postid'], $val['company'], implode(',', $channel_tmp), $val['main_url'], $val['is_split'], $val['test_url']); | 97 | + // 保存项目 以及 获取路由信息 |
| 98 | + $project = InquiryProject::saveProject($date, $val['v'], $val['postid'], $val['company'], implode(',', $channel_tmp), $val['main_url'], $val['is_split'], $val['test_url']); | ||
| 100 | $route_domain = $val['is_split'] && $val['test_url'] ? $val['test_url'] : $val['main_url']; | 99 | $route_domain = $val['is_split'] && $val['test_url'] ? $val['test_url'] : $val['main_url']; |
| 101 | - $this->syncGloV5Route($project->id, $route_domain); | ||
| 102 | - } | ||
| 103 | - return true; | ||
| 104 | - } | ||
| 105 | - | ||
| 106 | - /** | ||
| 107 | - * 同步v4 v5项目路由 | ||
| 108 | - * @param $project_id | ||
| 109 | - * @param $route_domain | ||
| 110 | - * @return bool | ||
| 111 | - */ | ||
| 112 | - public function syncGloV5Route($project_id, $route_domain) | ||
| 113 | - { | ||
| 114 | try{ | 100 | try{ |
| 115 | $result = http_get($route_domain . 'k_u_api.php'); | 101 | $result = http_get($route_domain . 'k_u_api.php'); |
| 116 | if (empty($result)) { | 102 | if (empty($result)) { |
| 117 | - $this->log('syncGloV5Route 未获取到路由信息:' . $project_id . ', 路由获取地址:' . $route_domain . 'k_u_api.php'); | 103 | + $this->log('syncGloV5Route 未获取到路由信息:' . $project->id . ', 路由获取地址:' . $route_domain . 'k_u_api.php'); |
| 118 | return false; | 104 | return false; |
| 119 | } | 105 | } |
| 106 | + file_put_contents(storage_path('logs/sync_inquiry_project_route/' . $project->id . '.json'), json_encode($result)); | ||
| 107 | + $this->pushTask($project->id); | ||
| 120 | } catch (\Exception $e) { | 108 | } catch (\Exception $e) { |
| 121 | - $this->log('syncGloV5Route 未获取到路由信息:' . $project_id . ', 路由获取地址:' . $route_domain . 'k_u_api.php' . ', 错误信息:' . $e->getMessage()); | ||
| 122 | - echo 'syncGloV5Route 未获取到路由信息:' . $project_id . ', 路由获取地址:' . $route_domain . 'k_u_api.php' . ', 错误信息:' . $e->getMessage() . PHP_EOL; | 109 | + $this->log('syncGloV5Route 未获取到路由信息:' . $project->id . ', 路由获取地址:' . $route_domain . 'k_u_api.php' . ', 错误信息:' . $e->getMessage()); |
| 110 | + echo 'syncGloV5Route 未获取到路由信息:' . $project->id . ', 路由获取地址:' . $route_domain . 'k_u_api.php' . ', 错误信息:' . $e->getMessage() . PHP_EOL; | ||
| 123 | return false; | 111 | return false; |
| 124 | } | 112 | } |
| 125 | - | ||
| 126 | - foreach ($result as $key=>$val) { | ||
| 127 | - try { | ||
| 128 | - $tmp = explode('|', $val); | ||
| 129 | - $url_tmp = parse_url($tmp[0]); | ||
| 130 | - $route = trim($url_tmp['path'], '/'); | ||
| 131 | - $title = str_replace('+', ' ', $tmp[1]); | ||
| 132 | - if (strlen($title) > 200 || strlen($route) > 200) { | ||
| 133 | - $this->log('syncGloV5Route 路由或标题过长,无效记录'); | ||
| 134 | - continue; | ||
| 135 | - } | ||
| 136 | - InquiryProjectRoute::saveProjectRoute($project_id, $title, $route); | ||
| 137 | - } catch (\Exception $e) { | ||
| 138 | - $this->log('syncGloV5Route 解析路径:' . $val . ', 错误信息:' . $e->getMessage()); | ||
| 139 | - echo 'syncGloV5Route 解析路径:' . $val . ', 错误信息:' . $e->getMessage() . PHP_EOL; | ||
| 140 | - } | ||
| 141 | } | 113 | } |
| 114 | + $this->deleteExpire($date); | ||
| 142 | return true; | 115 | return true; |
| 143 | } | 116 | } |
| 144 | 117 | ||
| @@ -148,6 +121,7 @@ class SyncInquiryProject extends Command | @@ -148,6 +121,7 @@ class SyncInquiryProject extends Command | ||
| 148 | */ | 121 | */ |
| 149 | public function syncGloV6() | 122 | public function syncGloV6() |
| 150 | { | 123 | { |
| 124 | + $date = intval(date('Ymd')); | ||
| 151 | // 获取优化中台项目 | 125 | // 获取优化中台项目 |
| 152 | $project = Project::leftJoin('gl_project_online_check', 'gl_project.id', '=', 'gl_project_online_check.project_id') | 126 | $project = Project::leftJoin('gl_project_online_check', 'gl_project.id', '=', 'gl_project_online_check.project_id') |
| 153 | ->where('gl_project.type', Project::TYPE_TWO) | 127 | ->where('gl_project.type', Project::TYPE_TWO) |
| @@ -165,55 +139,34 @@ class SyncInquiryProject extends Command | @@ -165,55 +139,34 @@ class SyncInquiryProject extends Command | ||
| 165 | // 过滤暂停优化项目, 映射类型2, model没有定义常量 | 139 | // 过滤暂停优化项目, 映射类型2, model没有定义常量 |
| 166 | if (in_array(2, $val->level)) | 140 | if (in_array(2, $val->level)) |
| 167 | continue; | 141 | continue; |
| 168 | - $project = InquiryProject::saveProject(InquiryProject::VERSION_SIX, $val->id, $val->title, $val->channel['channel_id'], $domains[$val->id]); | ||
| 169 | - $this->syncGloV6Route($project->id, $val->id); | 142 | + $project = InquiryProject::saveProject($date,InquiryProject::VERSION_SIX, $val->id, $val->title, $val->channel['channel_id'], $domains[$val->id]); |
| 143 | + $this->pushTask($project->id); | ||
| 170 | } | 144 | } |
| 145 | + $this->deleteExpire($date); | ||
| 171 | return true; | 146 | return true; |
| 172 | } | 147 | } |
| 173 | 148 | ||
| 149 | + | ||
| 174 | /** | 150 | /** |
| 175 | - * 同步v6项目路由 | ||
| 176 | - * @param $project_id | ||
| 177 | - * @param $origin_project_id | 151 | + * 删除过期数据, 非当日更新数据, 都删除, 误删第二天再重新同步更新 |
| 152 | + * @param $date | ||
| 178 | * @return bool | 153 | * @return bool |
| 179 | */ | 154 | */ |
| 180 | - public function syncGloV6Route($project_id, $origin_project_id) | 155 | + public function deleteExpire($date) |
| 181 | { | 156 | { |
| 182 | - ProjectServer::useProject($origin_project_id); | ||
| 183 | - // TODO 产品分类标题、路由, 产品标题、路由, 同步到路由表 | ||
| 184 | - $category = Category::where('status', Category::STATUS_ACTIVE)->get(['title', 'route']); | ||
| 185 | - foreach ($category as $key=>$val) { | ||
| 186 | - InquiryProjectRoute::saveProjectRoute($project_id, $val->title, $val->route); | ||
| 187 | - } | ||
| 188 | - | ||
| 189 | - // 产品数量会比较多, 所以使用分页 同步数据 | ||
| 190 | - $id = 0; | ||
| 191 | - while (true) { | ||
| 192 | - echo '同步项目路由:' . $id . PHP_EOL; | ||
| 193 | - $product = Product::where('status', Product::STATUS_ON)->where('id', '>', $id)->orderBy('id', 'asc')->limit(1000)->get(['id', 'title', 'route']); | ||
| 194 | - if ($product->isEmpty()) | ||
| 195 | - break; | ||
| 196 | - | ||
| 197 | - foreach ($product as $key=>$val) { | ||
| 198 | - $id = $val->id; | ||
| 199 | - InquiryProjectRoute::saveProjectRoute($project_id, $val->title, $val->route); | ||
| 200 | - } | ||
| 201 | - } | ||
| 202 | - | ||
| 203 | - DB::disconnect('custom_mysql'); | 157 | + $project_num = InquiryProject::where('date', '<', $date)->delete(); |
| 158 | + $this->log('删除过期项目数量:' . $project_num); | ||
| 204 | return true; | 159 | return true; |
| 205 | } | 160 | } |
| 206 | 161 | ||
| 207 | /** | 162 | /** |
| 208 | - * 删除过期数据, 非当日更新数据, 都删除, 误删第二天再重新同步更新 | 163 | + * 往任务队列中生产数据 |
| 164 | + * @param $id | ||
| 209 | * @return bool | 165 | * @return bool |
| 210 | */ | 166 | */ |
| 211 | - public function deleteExpire() | 167 | + public function pushTask($id) |
| 212 | { | 168 | { |
| 213 | - $date = intval(date('Ymd')); | ||
| 214 | - $project_num = InquiryProject::where('date', '<', $date)->delete(); | ||
| 215 | - $project_route_num = InquiryProjectRoute::where('date', '<', $date)->delete(); | ||
| 216 | - $this->log('删除过期项目数量:' . $project_num . ', 删除过期路由数量:' . $project_route_num); | 169 | + Redis::lPush('sync_inquiry_project_route_task', $id); |
| 217 | return true; | 170 | return true; |
| 218 | } | 171 | } |
| 219 | 172 |
-
请 注册 或 登录 后发表评论