作者 刘锟

update

@@ -107,7 +107,6 @@ class ProjectUpdate extends Command @@ -107,7 +107,6 @@ class ProjectUpdate extends Command
107 $page_list = array_column($data_page, 'path'); 107 $page_list = array_column($data_page, 'path');
108 } 108 }
109 109
110 - $is_flush = 0;  
111 //设置数据库 110 //设置数据库
112 $project = ProjectServer::useProject($project_id); 111 $project = ProjectServer::useProject($project_id);
113 if ($project) { 112 if ($project) {
@@ -250,23 +249,25 @@ class ProjectUpdate extends Command @@ -250,23 +249,25 @@ class ProjectUpdate extends Command
250 foreach ($items as $item) { 249 foreach ($items as $item) {
251 $route = $this->get_url_route($item['url'] ?? ''); 250 $route = $this->get_url_route($item['url'] ?? '');
252 if ($route) { 251 if ($route) {
253 - $product = $model->read(['route' => $route], 'id');  
254 - if (!$product) {  
255 - //图片  
256 - $gallery = [];  
257 - if ($item['images'] ?? []) {  
258 - foreach ($item['images'] as $k_img => $img) {  
259 - $gallery[] = ['alt' => '', 'url' => $this->source_download($img, $project_id, $domain_arr['host'], $web_url_domain, $home_url)];  
260 - }  
261 - }  
262 - //分类  
263 - $category_id = '';  
264 - if ($item['category'] ?? []) {  
265 - $category_arr = $category_model->list(['original_id' => ['in', array_column($item['category'], 'id')]]);  
266 - $category_id = $logic->getLastCategory(array_column($category_arr, 'id')); 252 + //图片
  253 + $gallery = [];
  254 + if ($item['images'] ?? []) {
  255 + foreach ($item['images'] as $k_img => $img) {
  256 + $gallery[] = ['alt' => '', 'url' => $this->source_download($img, $project_id, $domain_arr['host'], $web_url_domain, $home_url)];
267 } 257 }
268 - try {  
269 - $item['ttile'] = $this->special2str($item['ttile'] ?? ''); 258 + }
  259 + //分类
  260 + $category_id = '';
  261 + if ($item['category'] ?? []) {
  262 + $category_arr = $category_model->list(['original_id' => ['in', array_column($item['category'], 'id')]]);
  263 + $category_id = $logic->getLastCategory(array_column($category_arr, 'id'));
  264 + }
  265 + //名称去掉特殊符号
  266 + $item['ttile'] = $this->special2str($item['ttile'] ?? '');
  267 +
  268 + try {
  269 + $product = $model->read(['route' => $route], 'id');
  270 + if (!$product) {
270 $id = $model->insertGetId([ 271 $id = $model->insertGetId([
271 'project_id' => $project_id, 272 'project_id' => $project_id,
272 'title' => $item['ttile'], 273 'title' => $item['ttile'],
@@ -290,43 +291,25 @@ class ProjectUpdate extends Command @@ -290,43 +291,25 @@ class ProjectUpdate extends Command
290 ]); 291 ]);
291 $this->set_map($route, RouteMap::SOURCE_PRODUCT, $id, $project_id); 292 $this->set_map($route, RouteMap::SOURCE_PRODUCT, $id, $project_id);
292 293
293 - //扩展字段  
294 - if ($item['extend'] ?? []) {  
295 - foreach (array_reverse($item['extend']) as $ke => $ve) {  
296 - $extend = $extend_model->read(['title' => $ke]);  
297 - if (!$extend) {  
298 - $extend_key = $this->get_extend_key($extend_model);  
299 - $extend_model->add([  
300 - 'project_id' => $project_id,  
301 - 'title' => $ke,  
302 - 'type' => 1,  
303 - 'key' => $extend_key  
304 - ]);  
305 - } else {  
306 - $extend_key = $extend['key'];  
307 - }  
308 -  
309 - $extend_info = $extend_info_model->read(['key' => $extend_key, 'product_id' => $id]);  
310 - if (!$extend_info) {  
311 - $extend_info_model->add([  
312 - 'key' => $extend_key,  
313 - 'project_id' => $project_id,  
314 - 'product_id' => $id,  
315 - 'values' => $ve,  
316 - 'type' => 1  
317 - ]);  
318 - }  
319 - }  
320 - }  
321 -  
322 CollectTask::_insert($item['url'], $project_id, RouteMap::SOURCE_PRODUCT, $id, $link_type, $language_list, $page_list); 294 CollectTask::_insert($item['url'], $project_id, RouteMap::SOURCE_PRODUCT, $id, $link_type, $language_list, $page_list);
323 - $is_flush = 1;  
324 - } catch (\Exception $e) {  
325 - echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;  
326 - continue; 295 + } else {
  296 + $id = $product['id'];
  297 + $model->edit([
  298 + 'title' => $item['ttile'],
  299 + 'intro' => $item['short_description'] ?? '',
  300 + 'content' => $item['content'] ?? '',
  301 + 'category_id' => $category_id,
  302 + 'thumb' => isset($gallery[0]) ? Arr::a2s($gallery[0]) : '',
  303 + 'gallery' => Arr::a2s($gallery),
  304 + 'seo_mate' => Arr::a2s([
  305 + 'title' => $item['ttile'],
  306 + 'keyword' => $item['keywords'] ?? '',
  307 + 'description' => $item['description'] ?? ''
  308 + ]),
  309 + 'sort' => $item['sort'] ?? 0,
  310 + ], ['id' => $id]);
327 } 311 }
328 - }else{  
329 - $id = $product['id']; 312 +
330 //扩展字段 313 //扩展字段
331 if ($item['extend'] ?? []) { 314 if ($item['extend'] ?? []) {
332 foreach (array_reverse($item['extend']) as $ke => $ve) { 315 foreach (array_reverse($item['extend']) as $ke => $ve) {
@@ -355,6 +338,9 @@ class ProjectUpdate extends Command @@ -355,6 +338,9 @@ class ProjectUpdate extends Command
355 } 338 }
356 } 339 }
357 } 340 }
  341 + } catch (\Exception $e) {
  342 + echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;
  343 + continue;
358 } 344 }
359 } 345 }
360 } 346 }
@@ -388,23 +374,25 @@ class ProjectUpdate extends Command @@ -388,23 +374,25 @@ class ProjectUpdate extends Command
388 foreach ($items as $item) { 374 foreach ($items as $item) {
389 $route = $this->get_url_route($item['url'] ?? ''); 375 $route = $this->get_url_route($item['url'] ?? '');
390 if ($route) { 376 if ($route) {
391 - $news = $model->read(['url' => $route], 'id');  
392 - if (!$news) {  
393 - //分类  
394 - $category_id = '';  
395 - if ($api_type == 'news' && ($item['category'] ?? [])) {  
396 - $category_arr = $category_model->list(['original_id' => ['in', array_column($item['category'], 'id')]]);  
397 - $category_id = $logic->getCategory(array_column($category_arr, 'id'));  
398 - }  
399 - try {  
400 - $item['ttile'] = $this->special2str($item['ttile'] ?? '');  
401 -  
402 - if (is_array($item['images'])) {  
403 - $image = $item['images'][0] ?? '';  
404 - } else {  
405 - $image = $item['images'] ?? '';  
406 - } 377 + //分类
  378 + $category_id = '';
  379 + if ($api_type == 'news' && ($item['category'] ?? [])) {
  380 + $category_arr = $category_model->list(['original_id' => ['in', array_column($item['category'], 'id')]]);
  381 + $category_id = $logic->getCategory(array_column($category_arr, 'id'));
  382 + }
  383 + //图片
  384 + if (is_array($item['images'])) {
  385 + $image = $item['images'][0] ?? '';
  386 + } else {
  387 + $image = $item['images'] ?? '';
  388 + }
  389 + $new_img = $this->source_download($image, $project_id, $domain_arr['host'], $web_url_domain, $home_url);
  390 + //名称去掉特殊符号
  391 + $item['ttile'] = $this->special2str($item['ttile'] ?? '');
407 392
  393 + try {
  394 + $news = $model->read(['url' => $route], 'id');
  395 + if (!$news) {
408 $id = $model->insertGetId([ 396 $id = $model->insertGetId([
409 'project_id' => $project_id, 397 'project_id' => $project_id,
410 'name' => $item['ttile'], 398 'name' => $item['ttile'],
@@ -413,7 +401,7 @@ class ProjectUpdate extends Command @@ -413,7 +401,7 @@ class ProjectUpdate extends Command
413 'seo_keywords' => $item['keywords'] ?? '', 401 'seo_keywords' => $item['keywords'] ?? '',
414 'seo_description' => $item['description'] ?? '', 402 'seo_description' => $item['description'] ?? '',
415 'text' => $item['content'] ?? '', 403 'text' => $item['content'] ?? '',
416 - 'image' => $this->source_download($image, $project_id, $domain_arr['host'], $web_url_domain, $home_url), 404 + 'image' => $new_img,
417 'status' => $api_type == 'news' ? News::STATUS_ONE : Blog::STATUS_ONE, 405 'status' => $api_type == 'news' ? News::STATUS_ONE : Blog::STATUS_ONE,
418 'created_at' => $item['post_date'] ?? date('Y-m-d H:i:s'), 406 'created_at' => $item['post_date'] ?? date('Y-m-d H:i:s'),
419 'updated_at' => $item['post_date'] ?? date('Y-m-d H:i:s'), 407 'updated_at' => $item['post_date'] ?? date('Y-m-d H:i:s'),
@@ -425,11 +413,22 @@ class ProjectUpdate extends Command @@ -425,11 +413,22 @@ class ProjectUpdate extends Command
425 $this->set_map($route, $api_type == 'news' ? RouteMap::SOURCE_NEWS : RouteMap::SOURCE_BLOG, $id, $project_id); 413 $this->set_map($route, $api_type == 'news' ? RouteMap::SOURCE_NEWS : RouteMap::SOURCE_BLOG, $id, $project_id);
426 414
427 CollectTask::_insert($item['url'], $project_id, $api_type == 'news' ? RouteMap::SOURCE_NEWS : RouteMap::SOURCE_BLOG, $id, $link_type, $language_list, $page_list); 415 CollectTask::_insert($item['url'], $project_id, $api_type == 'news' ? RouteMap::SOURCE_NEWS : RouteMap::SOURCE_BLOG, $id, $link_type, $language_list, $page_list);
428 - $is_flush = 1;  
429 - } catch (\Exception $e) {  
430 - echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;  
431 - continue; 416 + } else {
  417 + $id = $news['id'];
  418 + $model->edit([
  419 + 'name' => $item['ttile'],
  420 + 'category_id' => $category_id,
  421 + 'seo_title' => $item['ttile'],
  422 + 'seo_keywords' => $item['keywords'] ?? '',
  423 + 'seo_description' => $item['description'] ?? '',
  424 + 'text' => $item['content'] ?? '',
  425 + 'image' => $new_img,
  426 + 'sort' => $item['sort'] ?? 0,
  427 + ], ['id' => $id]);
432 } 428 }
  429 + } catch (\Exception $e) {
  430 + echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;
  431 + continue;
433 } 432 }
434 } 433 }
435 } 434 }
@@ -457,10 +456,11 @@ class ProjectUpdate extends Command @@ -457,10 +456,11 @@ class ProjectUpdate extends Command
457 foreach ($items as $item) { 456 foreach ($items as $item) {
458 $route = $this->get_url_route($item['url'] ?? ''); 457 $route = $this->get_url_route($item['url'] ?? '');
459 if ($route) { 458 if ($route) {
460 - $custom = $model->read(['url' => $route], 'id');  
461 - if (!$custom) {  
462 - try {  
463 - $item['ttile'] = $this->special2str($item['ttile'] ?? ''); 459 + //名称去掉特殊符号
  460 + $item['ttile'] = $this->special2str($item['ttile'] ?? '');
  461 + try {
  462 + $custom = $model->read(['url' => $route], 'id');
  463 + if (!$custom) {
464 $id = $model->insertGetId([ 464 $id = $model->insertGetId([
465 'project_id' => $project_id, 465 'project_id' => $project_id,
466 'name' => $item['ttile'], 466 'name' => $item['ttile'],
@@ -478,11 +478,19 @@ class ProjectUpdate extends Command @@ -478,11 +478,19 @@ class ProjectUpdate extends Command
478 $this->set_map($route, RouteMap::SOURCE_PAGE, $id, $project_id); 478 $this->set_map($route, RouteMap::SOURCE_PAGE, $id, $project_id);
479 479
480 CollectTask::_insert($item['url'], $project_id, RouteMap::SOURCE_PAGE, $id, $link_type, $language_list, $page_list); 480 CollectTask::_insert($item['url'], $project_id, RouteMap::SOURCE_PAGE, $id, $link_type, $language_list, $page_list);
481 - $is_flush = 1;  
482 - } catch (\Exception $e) {  
483 - echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;  
484 - continue; 481 + } else {
  482 + $id = $custom['id'];
  483 + $model->edit([
  484 + 'name' => $item['ttile'],
  485 + 'title' => $item['ttile'],
  486 + 'keywords' => $item['keywords'] ?? '',
  487 + 'description' => $item['description'] ?? '',
  488 + 'html' => $item['content'] ?? '',
  489 + ], ['id' => $id]);
485 } 490 }
  491 + } catch (\Exception $e) {
  492 + echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;
  493 + continue;
486 } 494 }
487 } 495 }
488 } 496 }
@@ -497,9 +505,6 @@ class ProjectUpdate extends Command @@ -497,9 +505,6 @@ class ProjectUpdate extends Command
497 DB::disconnect('custom_mysql'); 505 DB::disconnect('custom_mysql');
498 506
499 $task->status = UpdateLog::STATUS_COM;//同步完成 507 $task->status = UpdateLog::STATUS_COM;//同步完成
500 - if ($is_flush) {  
501 - $task->collect_status = UpdateLog::COLLECT_STATUS_UN;  
502 - }  
503 $task->save(); 508 $task->save();
504 509
505 echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', task_type: ' . $api_type . ', update end ' . PHP_EOL; 510 echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', task_type: ' . $api_type . ', update end ' . PHP_EOL;