作者 lyh

Merge branch 'develop' of http://47.244.231.31:8099/zhl/globalso-v6 into develop

@@ -4,6 +4,7 @@ namespace App\Console\Commands\Import; @@ -4,6 +4,7 @@ namespace App\Console\Commands\Import;
4 4
5 use App\Http\Logic\Bside\Blog\BlogLogic; 5 use App\Http\Logic\Bside\Blog\BlogLogic;
6 use App\Http\Logic\Bside\News\NewsLogic; 6 use App\Http\Logic\Bside\News\NewsLogic;
  7 +use App\Http\Logic\Bside\Product\ProductLogic;
7 use App\Models\Import\ImportTask; 8 use App\Models\Import\ImportTask;
8 use App\Services\ProjectServer; 9 use App\Services\ProjectServer;
9 use Illuminate\Console\Command; 10 use Illuminate\Console\Command;
@@ -80,11 +81,14 @@ class ProjectImport extends Command @@ -80,11 +81,14 @@ class ProjectImport extends Command
80 if ((new NewsLogic())->importNews($task->project_id, $task->user_id, $v)) { 81 if ((new NewsLogic())->importNews($task->project_id, $task->user_id, $v)) {
81 $success_count += 1; 82 $success_count += 1;
82 } 83 }
83 - }  
84 - if ($task->type == ImportTask::TYPE_BLOG) { 84 + } elseif ($task->type == ImportTask::TYPE_BLOG) {
85 if ((new BlogLogic())->importBlog($task->project_id, $task->user_id, $v)) { 85 if ((new BlogLogic())->importBlog($task->project_id, $task->user_id, $v)) {
86 $success_count += 1; 86 $success_count += 1;
87 } 87 }
  88 + } else {
  89 + if ((new ProductLogic())->importProduct($task->project_id, $task->user_id, $v)) {
  90 + $success_count += 1;
  91 + }
88 } 92 }
89 } 93 }
90 } 94 }
@@ -311,7 +311,7 @@ class BlogCategoryLogic extends BaseLogic @@ -311,7 +311,7 @@ class BlogCategoryLogic extends BaseLogic
311 if(!$p_category){ 311 if(!$p_category){
312 $p_id = $this->model->addReturnId(['name'=>$p_cate,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]); 312 $p_id = $this->model->addReturnId(['name'=>$p_cate,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]);
313 313
314 - $route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_NEWS_CATE, $p_id, $project_id); 314 + $route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_BLOG_CATE, $p_id, $project_id);
315 $this->model->edit(['alias'=>$route],['id'=>$p_id]); 315 $this->model->edit(['alias'=>$route],['id'=>$p_id]);
316 }else{ 316 }else{
317 $p_id = $p_category['id']; 317 $p_id = $p_category['id'];
@@ -323,7 +323,7 @@ class BlogCategoryLogic extends BaseLogic @@ -323,7 +323,7 @@ class BlogCategoryLogic extends BaseLogic
323 if(!$c_category){ 323 if(!$c_category){
324 $c_id = $this->model->addReturnId(['name'=>$c_cate,'pid'=>$p_id,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]); 324 $c_id = $this->model->addReturnId(['name'=>$c_cate,'pid'=>$p_id,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]);
325 325
326 - $route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_NEWS_CATE, $c_id, $project_id); 326 + $route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_BLOG_CATE, $c_id, $project_id);
327 $this->model->edit(['alias'=>$route],['id'=>$c_id]); 327 $this->model->edit(['alias'=>$route],['id'=>$c_id]);
328 }else{ 328 }else{
329 $c_id = $c_category['id']; 329 $c_id = $c_category['id'];
@@ -277,8 +277,8 @@ class BlogLogic extends BaseLogic @@ -277,8 +277,8 @@ class BlogLogic extends BaseLogic
277 $category_id = $blogCategoryLogic->importBlogCategory($project_id, $user_id, $data[2]); 277 $category_id = $blogCategoryLogic->importBlogCategory($project_id, $user_id, $data[2]);
278 } 278 }
279 279
280 - $news = $this->model->read(['name' => $data[0]]);  
281 - if (!$news) { 280 + $blog = $this->model->read(['name' => $data[0]]);
  281 + if (!$blog) {
282 $id = $this->model->addReturnId( 282 $id = $this->model->addReturnId(
283 [ 283 [
284 'name' => $data[0], 284 'name' => $data[0],
@@ -297,7 +297,7 @@ class BlogLogic extends BaseLogic @@ -297,7 +297,7 @@ class BlogLogic extends BaseLogic
297 ] 297 ]
298 ); 298 );
299 //更新路由 299 //更新路由
300 - $route = RouteMap::setRoute($data[1] ?: $data[0], RouteMap::SOURCE_NEWS, $id, $project_id); 300 + $route = RouteMap::setRoute($data[1] ?: $data[0], RouteMap::SOURCE_BLOG, $id, $project_id);
301 $this->edit(['url' => $route], ['id' => $id]); 301 $this->edit(['url' => $route], ['id' => $id]);
302 302
303 return true; 303 return true;
@@ -186,4 +186,50 @@ class CategoryLogic extends BaseLogic @@ -186,4 +186,50 @@ class CategoryLogic extends BaseLogic
186 $this->setRouteDeleteSave($data); 186 $this->setRouteDeleteSave($data);
187 return $this->success(); 187 return $this->success();
188 } 188 }
  189 +
  190 + /**
  191 + * 产品导入:分类处理
  192 + * @param $project_id
  193 + * @param $category
  194 + * @return string
  195 + * @throws \Exception
  196 + * @author Akun
  197 + * @date 2023/09/21 14:55
  198 + */
  199 + public function importProductCategory($project_id,$category){
  200 + $return = [];
  201 +
  202 + $cate_arr = explode('/',$category);
  203 + $p_cate = $cate_arr[0];
  204 + $c_cate = $cate_arr[1];
  205 +
  206 + $p_category = $this->model->read(['title'=>$p_cate,'pid'=>0]);
  207 + if(!$p_category){
  208 + $p_id = $this->model->addReturnId(['title'=>$p_cate,'project_id'=>$project_id]);
  209 +
  210 + $route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_PRODUCT_CATE, $p_id, $project_id);
  211 + $this->model->edit(['route'=>$route],['id'=>$p_id]);
  212 + }else{
  213 + $p_id = $p_category['id'];
  214 + }
  215 + $return[] = $p_id;
  216 +
  217 + if($c_cate){
  218 + $c_category = $this->model->read(['title'=>$c_cate,'pid'=>$p_id]);
  219 + if(!$c_category){
  220 + $c_id = $this->model->addReturnId(['title'=>$c_cate,'pid'=>$p_id,'project_id'=>$project_id]);
  221 +
  222 + $route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_PRODUCT_CATE, $c_id, $project_id);
  223 + $this->model->edit(['route'=>$route],['id'=>$c_id]);
  224 + }else{
  225 + $c_id = $c_category['id'];
  226 + }
  227 + $return[] = $c_id;
  228 + }
  229 +
  230 + //清除缓存
  231 + Common::del_user_cache('product_category',$project_id);
  232 +
  233 + return ','.implode(',',$return).',';
  234 + }
189 } 235 }
@@ -139,4 +139,36 @@ class KeywordLogic extends BaseLogic @@ -139,4 +139,36 @@ class KeywordLogic extends BaseLogic
139 $this->setRouteDeleteSave($data); 139 $this->setRouteDeleteSave($data);
140 return $this->success(); 140 return $this->success();
141 } 141 }
  142 +
  143 + /**
  144 + * 产品导入:关键词处理
  145 + * @param $project_id
  146 + * @param $keyword
  147 + * @return string
  148 + * @throws \Exception
  149 + * @author Akun
  150 + * @date 2023/09/21 14:55
  151 + */
  152 + public function importProductKeyword($project_id,$keyword){
  153 + $return = [];
  154 +
  155 + $keyword_arr = explode(',',$keyword);
  156 +
  157 + foreach ($keyword_arr as $v){
  158 + $keyword_info = $this->model->read(['title'=>$v]);
  159 + if(!$keyword_info){
  160 + $k_id = $this->model->addReturnId(['title'=>$v,'project_id'=>$project_id]);
  161 + $route = RouteMap::setRoute($v, RouteMap::SOURCE_PRODUCT_KEYWORD, $k_id, $project_id);
  162 + $this->model->edit(['route'=>$route],['id'=>$k_id]);
  163 + }else{
  164 + $k_id = $keyword_info['id'];
  165 + }
  166 + $return[] = $k_id;
  167 + }
  168 +
  169 + //清除缓存
  170 + Common::del_user_cache('product_keyword',$project_id);
  171 +
  172 + return ','.implode(',',$return).',';
  173 + }
142 } 174 }
@@ -8,6 +8,7 @@ use App\Models\Product\CategoryRelated; @@ -8,6 +8,7 @@ use App\Models\Product\CategoryRelated;
8 use App\Models\Product\Product; 8 use App\Models\Product\Product;
9 use App\Models\RouteMap\RouteMap; 9 use App\Models\RouteMap\RouteMap;
10 use App\Models\Template\BTemplate; 10 use App\Models\Template\BTemplate;
  11 +use App\Services\CosService;
11 use Illuminate\Support\Facades\DB; 12 use Illuminate\Support\Facades\DB;
12 13
13 /** 14 /**
@@ -367,4 +368,80 @@ class ProductLogic extends BaseLogic @@ -367,4 +368,80 @@ class ProductLogic extends BaseLogic
367 } 368 }
368 return $this->success(); 369 return $this->success();
369 } 370 }
  371 +
  372 + /**
  373 + * 产品导入
  374 + * @param $project_id
  375 + * @param $user_id
  376 + * @param $data
  377 + * @return bool
  378 + * @throws \Exception
  379 + * @author Akun
  380 + * @date 2023/09/21 14:55
  381 + */
  382 + public function importProduct($project_id, $user_id, $data)
  383 + {
  384 + $category_id = '';
  385 + if ($data[2]) {
  386 + //处理分类
  387 + $categoryLogic = new CategoryLogic();
  388 + $category_id = $categoryLogic->importProductCategory($project_id, $data[2]);
  389 + }
  390 +
  391 + $keyword_id = '';
  392 + if($data[3]){
  393 + //处理关键词
  394 + $keywordLogic = new KeywordLogic();
  395 + $keyword_id = $keywordLogic->importProductKeyword($project_id, $data[3]);
  396 + }
  397 +
  398 + $gallery = [];
  399 + if($data[7]){
  400 + //处理图片集
  401 + $img_arr = explode(',',$data[7]);
  402 + foreach ($img_arr as $v_img){
  403 + $one_img = CosService::uploadRemote($project_id,'image_product',$v_img);
  404 + if($one_img){
  405 + $gallery[] = [
  406 + 'alt' => '这是一张产品图',
  407 + 'url' => $one_img
  408 + ];
  409 + }
  410 + }
  411 + }
  412 +
  413 + //处理seo
  414 + $seo_mate = [
  415 + 'title' => $data[8]??'',
  416 + 'keyword' => $data[9]??'',
  417 + 'description' => $data[10]??''
  418 + ];
  419 +
  420 + $product = $this->model->read(['title' => $data[0]]);
  421 + if (!$product) {
  422 + $id = $this->model->addReturnId(
  423 + [
  424 + 'project_id' => $project_id,
  425 + 'title' => $data[0],
  426 + 'thumb' => $gallery[0] ? Arr::a2s($gallery[0]) : '',
  427 + 'gallery' => Arr::a2s($gallery),
  428 + 'attrs' => $data[4] ? $data[4] : Arr::a2s([]),
  429 + 'category_id' => $category_id,
  430 + 'keyword_id' => $keyword_id,
  431 + 'intro' => $data[5] ?? '',
  432 + 'content' => $data[6] ?? '',
  433 + 'seo_mate' => Arr::a2s($seo_mate),
  434 + 'created_uid' => $user_id,
  435 + 'status' => Product::STATUS_ON
  436 + ]
  437 + );
  438 + //更新路由
  439 + $route = RouteMap::setRoute($data[1] ?: $data[0], RouteMap::SOURCE_PRODUCT, $id, $project_id);
  440 + $this->edit(['route' => $route], ['id' => $id]);
  441 +
  442 + return true;
  443 + }
  444 +
  445 + return false;
  446 + }
370 } 447 }