作者 lyh
@@ -149,11 +149,16 @@ class ProjectUpdate extends Command @@ -149,11 +149,16 @@ class ProjectUpdate extends Command
149 if ($v_phone) { 149 if ($v_phone) {
150 $receiving_phones = $model->read(['type' => 2, 'values' => $v_phone]); 150 $receiving_phones = $model->read(['type' => 2, 'values' => $v_phone]);
151 if (!$receiving_phones) { 151 if (!$receiving_phones) {
  152 + try {
152 $model->add([ 153 $model->add([
153 - 'type' => 1, 154 + 'type' => 2,
154 'values' => $v_phone, 155 'values' => $v_phone,
155 'project_id' => $project_id 156 'project_id' => $project_id
156 ]); 157 ]);
  158 + } catch (\Exception $e) {
  159 + echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;
  160 + continue;
  161 + }
157 } 162 }
158 } 163 }
159 } 164 }
@@ -164,11 +169,16 @@ class ProjectUpdate extends Command @@ -164,11 +169,16 @@ class ProjectUpdate extends Command
164 if ($v_email) { 169 if ($v_email) {
165 $receiving_emails = $model->read(['type' => 1, 'values' => $v_email]); 170 $receiving_emails = $model->read(['type' => 1, 'values' => $v_email]);
166 if (!$receiving_emails) { 171 if (!$receiving_emails) {
  172 + try {
167 $model->add([ 173 $model->add([
168 - 'type' => 2, 174 + 'type' => 1,
169 'values' => $v_email, 175 'values' => $v_email,
170 'project_id' => $project_id 176 'project_id' => $project_id
171 ]); 177 ]);
  178 + } catch (\Exception $e) {
  179 + echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;
  180 + continue;
  181 + }
172 } 182 }
173 } 183 }
174 } 184 }
@@ -207,13 +217,16 @@ class ProjectUpdate extends Command @@ -207,13 +217,16 @@ class ProjectUpdate extends Command
207 $category_id = ''; 217 $category_id = '';
208 if ($item['category'] ?? []) { 218 if ($item['category'] ?? []) {
209 $category_arr = []; 219 $category_arr = [];
210 - foreach ($item['category'] as $cate) {  
211 - if ($cate['parent'] == 0) {  
212 - array_unshift($category_arr, $cate['name']);  
213 - } else {  
214 - array_push($category_arr, $cate['name']); 220 +
  221 + $pid = 0;
  222 + for ($i = 0; $i < count($item['category']); $i++) {
  223 + $return = $this->get_category_name_arr($item['category'], $pid);
  224 + if ($return) {
  225 + $category_arr[] = $return['name'];
  226 + $pid = $return['id'];
215 } 227 }
216 } 228 }
  229 +
217 if ($category_arr) { 230 if ($category_arr) {
218 $categoryLogic = new CategoryLogic(); 231 $categoryLogic = new CategoryLogic();
219 $category_id = $categoryLogic->importProductCategory($project_id, implode('/', $category_arr)); 232 $category_id = $categoryLogic->importProductCategory($project_id, implode('/', $category_arr));
@@ -405,6 +418,7 @@ class ProjectUpdate extends Command @@ -405,6 +418,7 @@ class ProjectUpdate extends Command
405 if ($item['name'] ?? '') { 418 if ($item['name'] ?? '') {
406 $parent = $model->read(['pid' => $pid, 'title' => $item['name']], 'id'); 419 $parent = $model->read(['pid' => $pid, 'title' => $item['name']], 'id');
407 if (!$parent) { 420 if (!$parent) {
  421 + try {
408 $parent_id = $model->addReturnId([ 422 $parent_id = $model->addReturnId([
409 'project_id' => $project_id, 423 'project_id' => $project_id,
410 'title' => $item['name'], 424 'title' => $item['name'],
@@ -414,6 +428,10 @@ class ProjectUpdate extends Command @@ -414,6 +428,10 @@ class ProjectUpdate extends Command
414 ]); 428 ]);
415 $route = RouteMap::setRoute($item['url'] ? $this->get_url_route($item['url']) : $item['name'], RouteMap::SOURCE_PRODUCT_CATE, $parent_id, $project_id); 429 $route = RouteMap::setRoute($item['url'] ? $this->get_url_route($item['url']) : $item['name'], RouteMap::SOURCE_PRODUCT_CATE, $parent_id, $project_id);
416 $model->edit(['route' => $route], ['id' => $parent_id]); 430 $model->edit(['route' => $route], ['id' => $parent_id]);
  431 + } catch (\Exception $e) {
  432 + echo 'date:' . date('Y-m-d H:i:s') . ', category_insert error: ' . $e->getMessage() . PHP_EOL;
  433 + continue;
  434 + }
417 } else { 435 } else {
418 $parent_id = $parent['id']; 436 $parent_id = $parent['id'];
419 } 437 }
@@ -424,4 +442,16 @@ class ProjectUpdate extends Command @@ -424,4 +442,16 @@ class ProjectUpdate extends Command
424 } 442 }
425 } 443 }
426 } 444 }
  445 +
  446 + //获取分类名称数组
  447 + protected function get_category_name_arr($category, $pid = 0)
  448 + {
  449 + foreach ($category as $k => $v) {
  450 + if ($v['parent'] == $pid) {
  451 + return $v;
  452 + }
  453 + }
  454 +
  455 + return [];
  456 + }
427 } 457 }
@@ -333,32 +333,25 @@ class BlogCategoryLogic extends BaseLogic @@ -333,32 +333,25 @@ class BlogCategoryLogic extends BaseLogic
333 $return = []; 333 $return = [];
334 334
335 $cate_arr = explode('/',$category); 335 $cate_arr = explode('/',$category);
336 - $p_cate = $cate_arr[0];  
337 - $c_cate = $cate_arr[1]??'';  
338 336
339 - $p_category = $this->model->read(['name'=>$p_cate,'pid'=>0]);  
340 - if(!$p_category){  
341 - $p_id = $this->model->addReturnId(['name'=>$p_cate,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]); 337 + $pid = 0;
  338 + foreach ($cate_arr as $v){
  339 + if($v){
  340 + $category_info = $this->model->read(['name'=>$v,'pid'=>$pid]);
  341 + if(!$category_info){
  342 + $id = $this->model->addReturnId(['name'=>$v,'pid'=>$pid,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]);
342 343
343 - $route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_BLOG_CATE, $p_id, $project_id);  
344 - $this->model->edit(['alias'=>$route],['id'=>$p_id]); 344 + $route = RouteMap::setRoute($v, RouteMap::SOURCE_BLOG_CATE, $id, $project_id);
  345 + $this->model->edit(['alias'=>$route],['id'=>$id]);
345 }else{ 346 }else{
346 - $p_id = $p_category['id']; 347 + $id = $category_info['id'];
347 } 348 }
348 - $return[] = $p_id;  
349 349
350 - if($c_cate){  
351 - $c_category = $this->model->read(['name'=>$c_cate,'pid'=>$p_id]);  
352 - if(!$c_category){  
353 - $c_id = $this->model->addReturnId(['name'=>$c_cate,'pid'=>$p_id,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]);  
354 -  
355 - $route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_BLOG_CATE, $c_id, $project_id);  
356 - $this->model->edit(['alias'=>$route],['id'=>$c_id]);  
357 - }else{  
358 - $c_id = $c_category['id']; 350 + $return[] = $id;
  351 + $pid = $id;
359 } 352 }
360 - $return[] = $c_id;  
361 } 353 }
  354 +
362 return $this->getLastCategory($return); 355 return $this->getLastCategory($return);
363 } 356 }
364 357
@@ -315,31 +315,23 @@ class NewsCategoryLogic extends BaseLogic @@ -315,31 +315,23 @@ class NewsCategoryLogic extends BaseLogic
315 $return = []; 315 $return = [];
316 316
317 $cate_arr = explode('/',$category); 317 $cate_arr = explode('/',$category);
318 - $p_cate = $cate_arr[0];  
319 - $c_cate = $cate_arr[1]??'';  
320 318
321 - $p_category = $this->model->read(['name'=>$p_cate,'pid'=>0]);  
322 - if(!$p_category){  
323 - $p_id = $this->model->addReturnId(['name'=>$p_cate,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]); 319 + $pid = 0;
  320 + foreach ($cate_arr as $v){
  321 + if($v){
  322 + $category_info = $this->model->read(['name'=>$v,'pid'=>$pid]);
  323 + if(!$category_info){
  324 + $id = $this->model->addReturnId(['name'=>$v,'pid'=>$pid,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]);
324 325
325 - $route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_NEWS_CATE, $p_id, $project_id);  
326 - $this->model->edit(['alias'=>$route],['id'=>$p_id]); 326 + $route = RouteMap::setRoute($v, RouteMap::SOURCE_NEWS_CATE, $id, $project_id);
  327 + $this->model->edit(['alias'=>$route],['id'=>$id]);
327 }else{ 328 }else{
328 - $p_id = $p_category['id']; 329 + $id = $category_info['id'];
329 } 330 }
330 - $return[] = $p_id;  
331 -  
332 - if($c_cate){  
333 - $c_category = $this->model->read(['name'=>$c_cate,'pid'=>$p_id]);  
334 - if(!$c_category){  
335 - $c_id = $this->model->addReturnId(['name'=>$c_cate,'pid'=>$p_id,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]);  
336 331
337 - $route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_NEWS_CATE, $c_id, $project_id);  
338 - $this->model->edit(['alias'=>$route],['id'=>$c_id]);  
339 - }else{  
340 - $c_id = $c_category['id']; 332 + $return[] = $id;
  333 + $pid = $id;
341 } 334 }
342 - $return[] = $c_id;  
343 } 335 }
344 return $this->getLastCategory($return); 336 return $this->getLastCategory($return);
345 } 337 }
@@ -304,32 +304,25 @@ class CategoryLogic extends BaseLogic @@ -304,32 +304,25 @@ class CategoryLogic extends BaseLogic
304 $return = []; 304 $return = [];
305 305
306 $cate_arr = explode('/',$category); 306 $cate_arr = explode('/',$category);
307 - $p_cate = $cate_arr[0];  
308 - $c_cate = $cate_arr[1]??'';  
309 307
310 - $p_category = $this->model->read(['title'=>$p_cate,'pid'=>0]);  
311 - if(!$p_category){  
312 - $p_id = $this->model->addReturnId(['title'=>$p_cate,'project_id'=>$project_id]); 308 + $pid = 0;
  309 + foreach ($cate_arr as $v){
  310 + if($v){
  311 + $category_info = $this->model->read(['title'=>$v,'pid'=>$pid]);
  312 + if(!$category_info){
  313 + $id = $this->model->addReturnId(['title'=>$v,'pid'=>$pid,'project_id'=>$project_id]);
313 314
314 - $route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_PRODUCT_CATE, $p_id, $project_id);  
315 - $this->model->edit(['route'=>$route],['id'=>$p_id]); 315 + $route = RouteMap::setRoute($v, RouteMap::SOURCE_PRODUCT_CATE, $id, $project_id);
  316 + $this->model->edit(['route'=>$route],['id'=>$id]);
316 }else{ 317 }else{
317 - $p_id = $p_category['id']; 318 + $id = $category_info['id'];
318 } 319 }
319 - $return[] = $p_id;  
320 320
321 - if($c_cate){  
322 - $c_category = $this->model->read(['title'=>$c_cate,'pid'=>$p_id]);  
323 - if(!$c_category){  
324 - $c_id = $this->model->addReturnId(['title'=>$c_cate,'pid'=>$p_id,'project_id'=>$project_id]);  
325 -  
326 - $route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_PRODUCT_CATE, $c_id, $project_id);  
327 - $this->model->edit(['route'=>$route],['id'=>$c_id]);  
328 - }else{  
329 - $c_id = $c_category['id']; 321 + $return[] = $id;
  322 + $pid = $id;
330 } 323 }
331 - $return[] = $c_id;  
332 } 324 }
  325 +
333 //清除缓存 326 //清除缓存
334 Common::del_user_cache('product_category',$project_id); 327 Common::del_user_cache('product_category',$project_id);
335 return $this->getLastCategory($return); 328 return $this->getLastCategory($return);
@@ -583,10 +583,10 @@ class ProductLogic extends BaseLogic @@ -583,10 +583,10 @@ class ProductLogic extends BaseLogic
583 $intro = ''; 583 $intro = '';
584 if($data[5]){ 584 if($data[5]){
585 //处理短描述中的图片 585 //处理短描述中的图片
586 - $pattern = '<img src="(.*?)">'; 586 + $pattern = '/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i';
587 preg_match_all($pattern, $data[5], $result_intro); 587 preg_match_all($pattern, $data[5], $result_intro);
588 - if($result_intro[1]){  
589 - foreach ($result_intro[1] as $vi_img){ 588 + if($result_intro[2]){
  589 + foreach ($result_intro[2] as $vi_img){
590 $data[5] = str_replace($vi_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vi_img)),$data[5]); 590 $data[5] = str_replace($vi_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vi_img)),$data[5]);
591 } 591 }
592 } 592 }
@@ -596,10 +596,10 @@ class ProductLogic extends BaseLogic @@ -596,10 +596,10 @@ class ProductLogic extends BaseLogic
596 $content = ''; 596 $content = '';
597 if($data[6]){ 597 if($data[6]){
598 //处理内容中的图片 598 //处理内容中的图片
599 - $pattern = '<img src="(.*?)">'; 599 + $pattern = '/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i';
600 preg_match_all($pattern, $data[6], $result_content); 600 preg_match_all($pattern, $data[6], $result_content);
601 - if($result_content[1]){  
602 - foreach ($result_content[1] as $vc_img){ 601 + if($result_content[2]){
  602 + foreach ($result_content[2] as $vc_img){
603 $data[6] = str_replace($vc_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vc_img)),$data[6]); 603 $data[6] = str_replace($vc_img,getImageUrl(CosService::uploadRemote($project_id,'image_product',$vc_img)),$data[6]);
604 } 604 }
605 } 605 }