作者 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;
use App\Http\Logic\Bside\Blog\BlogLogic;
use App\Http\Logic\Bside\News\NewsLogic;
use App\Http\Logic\Bside\Product\ProductLogic;
use App\Models\Import\ImportTask;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
... ... @@ -80,11 +81,14 @@ class ProjectImport extends Command
if ((new NewsLogic())->importNews($task->project_id, $task->user_id, $v)) {
$success_count += 1;
}
}
if ($task->type == ImportTask::TYPE_BLOG) {
} elseif ($task->type == ImportTask::TYPE_BLOG) {
if ((new BlogLogic())->importBlog($task->project_id, $task->user_id, $v)) {
$success_count += 1;
}
} else {
if ((new ProductLogic())->importProduct($task->project_id, $task->user_id, $v)) {
$success_count += 1;
}
}
}
}
... ...
... ... @@ -311,7 +311,7 @@ class BlogCategoryLogic extends BaseLogic
if(!$p_category){
$p_id = $this->model->addReturnId(['name'=>$p_cate,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]);
$route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_NEWS_CATE, $p_id, $project_id);
$route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_BLOG_CATE, $p_id, $project_id);
$this->model->edit(['alias'=>$route],['id'=>$p_id]);
}else{
$p_id = $p_category['id'];
... ... @@ -323,7 +323,7 @@ class BlogCategoryLogic extends BaseLogic
if(!$c_category){
$c_id = $this->model->addReturnId(['name'=>$c_cate,'pid'=>$p_id,'project_id'=>$project_id,'operator_id'=>$user_id,'create_id'=>$user_id]);
$route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_NEWS_CATE, $c_id, $project_id);
$route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_BLOG_CATE, $c_id, $project_id);
$this->model->edit(['alias'=>$route],['id'=>$c_id]);
}else{
$c_id = $c_category['id'];
... ...
... ... @@ -277,8 +277,8 @@ class BlogLogic extends BaseLogic
$category_id = $blogCategoryLogic->importBlogCategory($project_id, $user_id, $data[2]);
}
$news = $this->model->read(['name' => $data[0]]);
if (!$news) {
$blog = $this->model->read(['name' => $data[0]]);
if (!$blog) {
$id = $this->model->addReturnId(
[
'name' => $data[0],
... ... @@ -297,7 +297,7 @@ class BlogLogic extends BaseLogic
]
);
//更新路由
$route = RouteMap::setRoute($data[1] ?: $data[0], RouteMap::SOURCE_NEWS, $id, $project_id);
$route = RouteMap::setRoute($data[1] ?: $data[0], RouteMap::SOURCE_BLOG, $id, $project_id);
$this->edit(['url' => $route], ['id' => $id]);
return true;
... ...
... ... @@ -186,4 +186,50 @@ class CategoryLogic extends BaseLogic
$this->setRouteDeleteSave($data);
return $this->success();
}
/**
* 产品导入:分类处理
* @param $project_id
* @param $category
* @return string
* @throws \Exception
* @author Akun
* @date 2023/09/21 14:55
*/
public function importProductCategory($project_id,$category){
$return = [];
$cate_arr = explode('/',$category);
$p_cate = $cate_arr[0];
$c_cate = $cate_arr[1];
$p_category = $this->model->read(['title'=>$p_cate,'pid'=>0]);
if(!$p_category){
$p_id = $this->model->addReturnId(['title'=>$p_cate,'project_id'=>$project_id]);
$route = RouteMap::setRoute($p_cate, RouteMap::SOURCE_PRODUCT_CATE, $p_id, $project_id);
$this->model->edit(['route'=>$route],['id'=>$p_id]);
}else{
$p_id = $p_category['id'];
}
$return[] = $p_id;
if($c_cate){
$c_category = $this->model->read(['title'=>$c_cate,'pid'=>$p_id]);
if(!$c_category){
$c_id = $this->model->addReturnId(['title'=>$c_cate,'pid'=>$p_id,'project_id'=>$project_id]);
$route = RouteMap::setRoute($c_cate, RouteMap::SOURCE_PRODUCT_CATE, $c_id, $project_id);
$this->model->edit(['route'=>$route],['id'=>$c_id]);
}else{
$c_id = $c_category['id'];
}
$return[] = $c_id;
}
//清除缓存
Common::del_user_cache('product_category',$project_id);
return ','.implode(',',$return).',';
}
}
... ...
... ... @@ -139,4 +139,36 @@ class KeywordLogic extends BaseLogic
$this->setRouteDeleteSave($data);
return $this->success();
}
/**
* 产品导入:关键词处理
* @param $project_id
* @param $keyword
* @return string
* @throws \Exception
* @author Akun
* @date 2023/09/21 14:55
*/
public function importProductKeyword($project_id,$keyword){
$return = [];
$keyword_arr = explode(',',$keyword);
foreach ($keyword_arr as $v){
$keyword_info = $this->model->read(['title'=>$v]);
if(!$keyword_info){
$k_id = $this->model->addReturnId(['title'=>$v,'project_id'=>$project_id]);
$route = RouteMap::setRoute($v, RouteMap::SOURCE_PRODUCT_KEYWORD, $k_id, $project_id);
$this->model->edit(['route'=>$route],['id'=>$k_id]);
}else{
$k_id = $keyword_info['id'];
}
$return[] = $k_id;
}
//清除缓存
Common::del_user_cache('product_keyword',$project_id);
return ','.implode(',',$return).',';
}
}
... ...
... ... @@ -8,6 +8,7 @@ use App\Models\Product\CategoryRelated;
use App\Models\Product\Product;
use App\Models\RouteMap\RouteMap;
use App\Models\Template\BTemplate;
use App\Services\CosService;
use Illuminate\Support\Facades\DB;
/**
... ... @@ -367,4 +368,80 @@ class ProductLogic extends BaseLogic
}
return $this->success();
}
/**
* 产品导入
* @param $project_id
* @param $user_id
* @param $data
* @return bool
* @throws \Exception
* @author Akun
* @date 2023/09/21 14:55
*/
public function importProduct($project_id, $user_id, $data)
{
$category_id = '';
if ($data[2]) {
//处理分类
$categoryLogic = new CategoryLogic();
$category_id = $categoryLogic->importProductCategory($project_id, $data[2]);
}
$keyword_id = '';
if($data[3]){
//处理关键词
$keywordLogic = new KeywordLogic();
$keyword_id = $keywordLogic->importProductKeyword($project_id, $data[3]);
}
$gallery = [];
if($data[7]){
//处理图片集
$img_arr = explode(',',$data[7]);
foreach ($img_arr as $v_img){
$one_img = CosService::uploadRemote($project_id,'image_product',$v_img);
if($one_img){
$gallery[] = [
'alt' => '这是一张产品图',
'url' => $one_img
];
}
}
}
//处理seo
$seo_mate = [
'title' => $data[8]??'',
'keyword' => $data[9]??'',
'description' => $data[10]??''
];
$product = $this->model->read(['title' => $data[0]]);
if (!$product) {
$id = $this->model->addReturnId(
[
'project_id' => $project_id,
'title' => $data[0],
'thumb' => $gallery[0] ? Arr::a2s($gallery[0]) : '',
'gallery' => Arr::a2s($gallery),
'attrs' => $data[4] ? $data[4] : Arr::a2s([]),
'category_id' => $category_id,
'keyword_id' => $keyword_id,
'intro' => $data[5] ?? '',
'content' => $data[6] ?? '',
'seo_mate' => Arr::a2s($seo_mate),
'created_uid' => $user_id,
'status' => Product::STATUS_ON
]
);
//更新路由
$route = RouteMap::setRoute($data[1] ?: $data[0], RouteMap::SOURCE_PRODUCT, $id, $project_id);
$this->edit(['route' => $route], ['id' => $id]);
return true;
}
return false;
}
}
... ...