作者 赵彬吉
@@ -62,6 +62,7 @@ class InitProject extends Command @@ -62,6 +62,7 @@ class InitProject extends Command
62 if(!empty($project['mobile'])){ 62 if(!empty($project['mobile'])){
63 $project_logic->createUser($project['mobile'],$project['id'],$project['lead_name']); 63 $project_logic->createUser($project['mobile'],$project['id'],$project['lead_name']);
64 } 64 }
  65 + $project_logic->createdRole($project['id']);
65 //更改服务器状态 66 //更改服务器状态
66 if(!empty($project['serve_id'])){ 67 if(!empty($project['serve_id'])){
67 $project_logic->updateServe($project['serve_id']); 68 $project_logic->updateServe($project['serve_id']);
@@ -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 - $model->add([  
153 - 'type' => 1,  
154 - 'values' => $v_phone,  
155 - 'project_id' => $project_id  
156 - ]); 152 + try {
  153 + $model->add([
  154 + 'type' => 2,
  155 + 'values' => $v_phone,
  156 + 'project_id' => $project_id
  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) {
167 - $model->add([  
168 - 'type' => 2,  
169 - 'values' => $v_email,  
170 - 'project_id' => $project_id  
171 - ]); 172 + try {
  173 + $model->add([
  174 + 'type' => 1,
  175 + 'values' => $v_email,
  176 + 'project_id' => $project_id
  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,15 +418,20 @@ class ProjectUpdate extends Command @@ -405,15 +418,20 @@ 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) {
408 - $parent_id = $model->addReturnId([  
409 - 'project_id' => $project_id,  
410 - 'title' => $item['name'],  
411 - 'pid' => $pid,  
412 - 'keywords' => $item['keywords'] ?? '',  
413 - 'describe' => $item['description'] ?? ''  
414 - ]);  
415 - $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]); 421 + try {
  422 + $parent_id = $model->addReturnId([
  423 + 'project_id' => $project_id,
  424 + 'title' => $item['name'],
  425 + 'pid' => $pid,
  426 + 'keywords' => $item['keywords'] ?? '',
  427 + 'describe' => $item['description'] ?? ''
  428 + ]);
  429 + $route = RouteMap::setRoute($item['url'] ? $this->get_url_route($item['url']) : $item['name'], RouteMap::SOURCE_PRODUCT_CATE, $parent_id, $project_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]);  
345 - }else{  
346 - $p_id = $p_category['id'];  
347 - }  
348 - $return[] = $p_id;  
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]); 344 + $route = RouteMap::setRoute($v, RouteMap::SOURCE_BLOG_CATE, $id, $project_id);
  345 + $this->model->edit(['alias'=>$route],['id'=>$id]);
  346 + }else{
  347 + $id = $category_info['id'];
  348 + }
354 349
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]);  
327 - }else{  
328 - $p_id = $p_category['id'];  
329 - }  
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]); 326 + $route = RouteMap::setRoute($v, RouteMap::SOURCE_NEWS_CATE, $id, $project_id);
  327 + $this->model->edit(['alias'=>$route],['id'=>$id]);
  328 + }else{
  329 + $id = $category_info['id'];
  330 + }
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]);  
316 - }else{  
317 - $p_id = $p_category['id'];  
318 - }  
319 - $return[] = $p_id;  
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]); 315 + $route = RouteMap::setRoute($v, RouteMap::SOURCE_PRODUCT_CATE, $id, $project_id);
  316 + $this->model->edit(['route'=>$route],['id'=>$id]);
  317 + }else{
  318 + $id = $category_info['id'];
  319 + }
325 320
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);
@@ -61,8 +61,8 @@ class ProductLogic extends BaseLogic @@ -61,8 +61,8 @@ class ProductLogic extends BaseLogic
61 }else{ 61 }else{
62 $this->param = $this->addHandleParam($this->param); 62 $this->param = $this->addHandleParam($this->param);
63 $id = $this->model->addReturnId($this->param); 63 $id = $this->model->addReturnId($this->param);
64 - $this->param['route'] = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_PRODUCT, $id, $this->user['project_id']);  
65 } 64 }
  65 + $this->param['route'] = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_PRODUCT, $id, $this->user['project_id']);
66 $this->model->edit(['route'=> $this->param['route']],['id'=>$id]); 66 $this->model->edit(['route'=> $this->param['route']],['id'=>$id]);
67 //产品分类关联 67 //产品分类关联
68 CategoryRelated::saveRelated($id, $category_ids); 68 CategoryRelated::saveRelated($id, $category_ids);
@@ -108,7 +108,13 @@ class ProductLogic extends BaseLogic @@ -108,7 +108,13 @@ class ProductLogic extends BaseLogic
108 unset($v['title']); 108 unset($v['title']);
109 if(!empty($v['values'])){ 109 if(!empty($v['values'])){
110 if($v['type'] == 3 || $v['type'] || 4){ 110 if($v['type'] == 3 || $v['type'] || 4){
111 - $v['values'] = str_replace_url($v['values']); 111 + if(is_array($v['values'])){
  112 + foreach ($v['values'] as $k1=>$v1){
  113 + $v1 = str_replace_url($v1);
  114 + $v['values'][$k1] = $v1;
  115 + }
  116 + $v['values'] = json_encode($v['values']);
  117 + }
112 } 118 }
113 $v['project_id'] = $this->user['project_id']; 119 $v['project_id'] = $this->user['project_id'];
114 $v['product_id'] = $id; 120 $v['product_id'] = $id;
@@ -577,10 +583,10 @@ class ProductLogic extends BaseLogic @@ -577,10 +583,10 @@ class ProductLogic extends BaseLogic
577 $intro = ''; 583 $intro = '';
578 if($data[5]){ 584 if($data[5]){
579 //处理短描述中的图片 585 //处理短描述中的图片
580 - $pattern = '<img src="(.*?)">'; 586 + $pattern = '/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i';
581 preg_match_all($pattern, $data[5], $result_intro); 587 preg_match_all($pattern, $data[5], $result_intro);
582 - if($result_intro[1]){  
583 - foreach ($result_intro[1] as $vi_img){ 588 + if($result_intro[2]){
  589 + foreach ($result_intro[2] as $vi_img){
584 $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]);
585 } 591 }
586 } 592 }
@@ -590,10 +596,10 @@ class ProductLogic extends BaseLogic @@ -590,10 +596,10 @@ class ProductLogic extends BaseLogic
590 $content = ''; 596 $content = '';
591 if($data[6]){ 597 if($data[6]){
592 //处理内容中的图片 598 //处理内容中的图片
593 - $pattern = '<img src="(.*?)">'; 599 + $pattern = '/<img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i';
594 preg_match_all($pattern, $data[6], $result_content); 600 preg_match_all($pattern, $data[6], $result_content);
595 - if($result_content[1]){  
596 - foreach ($result_content[1] as $vc_img){ 601 + if($result_content[2]){
  602 + foreach ($result_content[2] as $vc_img){
597 $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]);
598 } 604 }
599 } 605 }