|
|
|
@ -5,7 +5,11 @@ namespace app\controller\backend; |
|
|
|
|
|
|
|
use app\exception\ModelEmptyException; |
|
|
|
use app\exception\ModelException; |
|
|
|
use app\model\Category; |
|
|
|
use app\model\InnerChart; |
|
|
|
use app\model\Module; |
|
|
|
use app\model\Nav; |
|
|
|
use app\model\NavCate; |
|
|
|
use app\model\RecycleBin; |
|
|
|
use app\model\SubContent; |
|
|
|
use app\model\SubContentCheck; |
|
|
|
@ -681,5 +685,119 @@ class ContentController extends BaseController |
|
|
|
} |
|
|
|
return jsonReturn(0,lang('导入成功')); |
|
|
|
} |
|
|
|
// 内容复制到其他语言
|
|
|
|
public function copyToOtherLang(ContentService $contentService) |
|
|
|
{ |
|
|
|
$param = $this->request->only(['from','website_id','to']); |
|
|
|
try{ |
|
|
|
validate(ContentValidate::class)->scene('copyToOtherLang')->check($param); |
|
|
|
}catch (ValidateException $e){ |
|
|
|
return jsonReturn(422, $e->getError()); |
|
|
|
} |
|
|
|
|
|
|
|
Db::startTrans(); |
|
|
|
try{ |
|
|
|
// 查询栏目
|
|
|
|
$Category = new Category(); |
|
|
|
$categories = $Category->getAllCustomArrayData(['seller_id'=>$this->admin['seller_id'],'website_id'=>$param['website_id'],'lang'=>$param['to']],'id asc','id,category_map')['data']; |
|
|
|
$categoryMap = array_combine(array_column($categories,'category_map'),array_column($categories,'id')); |
|
|
|
// 查找模型
|
|
|
|
$Module = new Module(); |
|
|
|
$modules = $Module->getAllCustomArrayData(['seller_id'=>$this->admin['seller_id']],'id asc','id,table')['data']; |
|
|
|
$SubContent = new SubContent(); |
|
|
|
|
|
|
|
foreach($modules as $module){ |
|
|
|
// 副表的内容
|
|
|
|
$content = $SubContent -> getAllCustomArrayData(['seller_id'=>$this->admin['seller_id'],'module_id'=>$module['id'],'lang'=>$param['from'],'is_del'=>1],'id asc')['data']; |
|
|
|
if(empty($content)){ |
|
|
|
continue; |
|
|
|
} |
|
|
|
// 主表内容
|
|
|
|
$contentIds = array_column($content,'id'); |
|
|
|
// 主表ID累加映射
|
|
|
|
$subIds = $this->getMapIds('sub_content',$contentIds); |
|
|
|
$mainContent = Db::name($module['table'])->where([['sub_id','in',$contentIds]])->select()->toArray(); |
|
|
|
// 附表ID累加映射
|
|
|
|
$mainIds = $this->getMapIds($module['table'],array_column($mainContent,'id')); |
|
|
|
$tempContent = []; |
|
|
|
foreach($content as $item){ |
|
|
|
$item['category_id'] = $categoryMap[$item['category_id']] ?? 0; |
|
|
|
$item['main_id'] = $mainIds[$item['main_id']]; |
|
|
|
$item['lang'] = $param['to']; |
|
|
|
$item['sub_id_map'] = $item['id']; |
|
|
|
$subCategoryIds = explode(',',$item['sub_category_ids']); |
|
|
|
$subCategoryIds = array_map(function($v) use($categoryMap){ |
|
|
|
if(!empty($categoryMap[$v])){ |
|
|
|
return $categoryMap[$v]; |
|
|
|
}else{ |
|
|
|
return ''; |
|
|
|
} |
|
|
|
},$subCategoryIds); |
|
|
|
$item['sub_category_ids'] = implode(',',$subCategoryIds); |
|
|
|
unset($item['id']); |
|
|
|
$tempContent[] = $item; |
|
|
|
} |
|
|
|
$res = Db::name('sub_content')->insertAll($tempContent); |
|
|
|
var_dump(123); |
|
|
|
$tmpMainContent = []; |
|
|
|
foreach($mainContent as $value){ |
|
|
|
$value['sub_id'] = $subIds[$value['sub_id']]; |
|
|
|
unset($value['id']); |
|
|
|
$tmpMainContent[] = $value; |
|
|
|
} |
|
|
|
$res2 = Db::name($module['table'])->insertAll($tmpMainContent); |
|
|
|
// 栏目和内容关系
|
|
|
|
$CateSub = Db::name('category_sub_content')->where([['sub_content_id','in',$contentIds]])->select()->toArray(); |
|
|
|
$tmpCategorySub = []; |
|
|
|
foreach($CateSub as $val){ |
|
|
|
$val['category_id'] = $categoryMap[$val['category_id']] ?? 0; |
|
|
|
$val['sub_content_id'] = $subIds[$val['sub_content_id']]; |
|
|
|
unset($val['id']); |
|
|
|
$tmpCategorySub[] = $val; |
|
|
|
} |
|
|
|
$res3 = Db::name('category_sub_content')->insertAll($tmpCategorySub); |
|
|
|
} |
|
|
|
// 导航分类
|
|
|
|
$NavCate = new NavCate(); |
|
|
|
$navCate = $NavCate->getAllCustomArrayData(['seller_id'=>$this->admin['seller_id'],'lang'=>$param['from']],'id asc')['data']; |
|
|
|
$navCateIds = array_column($navCate,'id'); |
|
|
|
$navCateIdMap = $this->getMapIds('nav_cate',$navCateIds); |
|
|
|
$tmpNavCate =[]; |
|
|
|
foreach($navCate as $v){ |
|
|
|
$v['lang'] = $param['to']; |
|
|
|
unset($v['id']); |
|
|
|
$tmpNavCate[] = $v; |
|
|
|
} |
|
|
|
$res4 = Db::name('nav_cate')->insertAll($tmpNavCate); |
|
|
|
// 导航
|
|
|
|
$Nav = new Nav(); |
|
|
|
$navs = $Nav->getAllCustomArrayData(['seller_id'=>$this->admin['seller_id'],'lang'=>$param['from']],'id asc')['data']; |
|
|
|
$navIds = array_column($navs,'id'); |
|
|
|
$navMapIds = $this->getMapIds('nav',$navIds); |
|
|
|
$navMapIds[0]=0; |
|
|
|
$tmpNav = []; |
|
|
|
foreach($navs as $nav){ |
|
|
|
$nav['lang'] = $param['to']; |
|
|
|
$nav['nav_cate_id'] = $navCateIdMap[$nav['nav_cate_id']] ?? 0; |
|
|
|
$nav['category_id'] = $categoryMap[$nav['category_id']] ?? 0; |
|
|
|
$nav['parent_id'] = $navMapIds[$nav['parent_id']]; |
|
|
|
unset($nav['id']); |
|
|
|
$tmpNav[] = $nav; |
|
|
|
} |
|
|
|
$res5 = Db::name('nav')->insertAll($tmpNav); |
|
|
|
// 关联内容更新
|
|
|
|
$contentService->exchangeRelationContent($this->admin['seller_id'],$param['to']); |
|
|
|
|
|
|
|
Db::commit(); |
|
|
|
}catch (\Exception $e){ |
|
|
|
Db::rollback(); |
|
|
|
dump($item,123); |
|
|
|
dump($e->getMessage()); |
|
|
|
dd($e->getLine()); |
|
|
|
die; |
|
|
|
|
|
|
|
} |
|
|
|
dd($categoryMap); |
|
|
|
} |
|
|
|
|
|
|
|
} |