Browse Source

导入内容bug修复

master
xiaodong 2 weeks ago
parent
commit
603b00ffc5
  1. 48
      app/controller/backend/ContentController.php
  2. 3
      app/validate/ContentValidate.php

48
app/controller/backend/ContentController.php

@ -700,7 +700,13 @@ class ContentController extends BaseController
// 查询栏目 // 查询栏目
$Category = new Category(); $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']; $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'));
// 处理 categoryMap,检查重复的 category_map 值
$categoryMapData = array_column($categories, 'category_map');
$duplicateMaps = array_filter(array_count_values($categoryMapData), function($v) { return $v > 1; });
if (!empty($duplicateMaps)) {
\think\facade\Log::warning('copyToOtherLang: 发现重复的 category_map 值: ' . implode(',', array_keys($duplicateMaps)));
}
$categoryMap = array_combine($categoryMapData, array_column($categories,'id'));
// 查找模型 // 查找模型
$Module = new Module(); $Module = new Module();
$modules = $Module->getAllCustomArrayData(['seller_id'=>$this->admin['seller_id']],'id asc','id,table')['data']; $modules = $Module->getAllCustomArrayData(['seller_id'=>$this->admin['seller_id']],'id asc','id,table')['data'];
@ -722,10 +728,10 @@ class ContentController extends BaseController
$tempContent = []; $tempContent = [];
foreach($content as $item){ foreach($content as $item){
$item['category_id'] = $categoryMap[$item['category_id']] ?? 0; $item['category_id'] = $categoryMap[$item['category_id']] ?? 0;
$item['main_id'] = $mainIds[$item['main_id']];
$item['main_id'] = $mainIds[$item['main_id']] ?? 0;
$item['lang'] = $param['to']; $item['lang'] = $param['to'];
$item['sub_id_map'] = $item['id']; $item['sub_id_map'] = $item['id'];
$subCategoryIds = explode(',',$item['sub_category_ids']);
$subCategoryIds = !empty($item['sub_category_ids']) ? explode(',',$item['sub_category_ids']) : [];
$subCategoryIds = array_map(function($v) use($categoryMap){ $subCategoryIds = array_map(function($v) use($categoryMap){
if(!empty($categoryMap[$v])){ if(!empty($categoryMap[$v])){
return $categoryMap[$v]; return $categoryMap[$v];
@ -733,16 +739,32 @@ class ContentController extends BaseController
return ''; return '';
} }
},$subCategoryIds); },$subCategoryIds);
$item['sub_category_ids'] = implode(',',$subCategoryIds);
$item['sub_category_ids'] = implode(',', array_filter($subCategoryIds));
unset($item['id']); unset($item['id']);
// 时间字段转回时间戳(auto_timestamp 会将 int 转为日期字符串)
if(!empty($item['create_time']) && !is_numeric($item['create_time'])){
$item['create_time'] = strtotime($item['create_time']);
}
if(!empty($item['update_time']) && !is_numeric($item['update_time'])){
$item['update_time'] = strtotime($item['update_time']);
}
$tempContent[] = $item; $tempContent[] = $item;
} }
$res = Db::name('sub_content')->insertAll($tempContent); $res = Db::name('sub_content')->insertAll($tempContent);
var_dump(123); var_dump(123);
$tmpMainContent = []; $tmpMainContent = [];
foreach($mainContent as $value){ foreach($mainContent as $value){
$value['sub_id'] = $subIds[$value['sub_id']];
$value['sub_id'] = $subIds[$value['sub_id']] ?? 0;
$value['lang'] = $param['to'];
$value['lang_pid'] = $value['id'] ?? 0;
unset($value['id']); unset($value['id']);
// 时间字段转回时间戳
if(!empty($value['create_time']) && !is_numeric($value['create_time'])){
$value['create_time'] = strtotime($value['create_time']);
}
if(!empty($value['update_time']) && !is_numeric($value['update_time'])){
$value['update_time'] = strtotime($value['update_time']);
}
$tmpMainContent[] = $value; $tmpMainContent[] = $value;
} }
$res2 = Db::name($module['table'])->insertAll($tmpMainContent); $res2 = Db::name($module['table'])->insertAll($tmpMainContent);
@ -751,7 +773,7 @@ class ContentController extends BaseController
$tmpCategorySub = []; $tmpCategorySub = [];
foreach($CateSub as $val){ foreach($CateSub as $val){
$val['category_id'] = $categoryMap[$val['category_id']] ?? 0; $val['category_id'] = $categoryMap[$val['category_id']] ?? 0;
$val['sub_content_id'] = $subIds[$val['sub_content_id']];
$val['sub_content_id'] = $subIds[$val['sub_content_id']] ?? 0;
unset($val['id']); unset($val['id']);
$tmpCategorySub[] = $val; $tmpCategorySub[] = $val;
} }
@ -766,6 +788,12 @@ class ContentController extends BaseController
foreach($navCate as $v){ foreach($navCate as $v){
$v['lang'] = $param['to']; $v['lang'] = $param['to'];
unset($v['id']); unset($v['id']);
if(!empty($v['create_time']) && !is_numeric($v['create_time'])){
$v['create_time'] = strtotime($v['create_time']);
}
if(!empty($v['update_time']) && !is_numeric($v['update_time'])){
$v['update_time'] = strtotime($v['update_time']);
}
$tmpNavCate[] = $v; $tmpNavCate[] = $v;
} }
$res4 = Db::name('nav_cate')->insertAll($tmpNavCate); $res4 = Db::name('nav_cate')->insertAll($tmpNavCate);
@ -780,8 +808,14 @@ class ContentController extends BaseController
$nav['lang'] = $param['to']; $nav['lang'] = $param['to'];
$nav['nav_cate_id'] = $navCateIdMap[$nav['nav_cate_id']] ?? 0; $nav['nav_cate_id'] = $navCateIdMap[$nav['nav_cate_id']] ?? 0;
$nav['category_id'] = $categoryMap[$nav['category_id']] ?? 0; $nav['category_id'] = $categoryMap[$nav['category_id']] ?? 0;
$nav['parent_id'] = $navMapIds[$nav['parent_id']];
$nav['parent_id'] = $navMapIds[$nav['parent_id']] ?? 0;
unset($nav['id']); unset($nav['id']);
if(!empty($nav['create_time']) && !is_numeric($nav['create_time'])){
$nav['create_time'] = strtotime($nav['create_time']);
}
if(!empty($nav['update_time']) && !is_numeric($nav['update_time'])){
$nav['update_time'] = strtotime($nav['update_time']);
}
$tmpNav[] = $nav; $tmpNav[] = $nav;
} }
$res5 = Db::name('nav')->insertAll($tmpNav); $res5 = Db::name('nav')->insertAll($tmpNav);

3
app/validate/ContentValidate.php

@ -25,6 +25,8 @@ class ContentValidate extends Validate
'lang|语言' => 'require', 'lang|语言' => 'require',
'website_id|站点ID' => 'require|number', 'website_id|站点ID' => 'require|number',
'file|文件' => 'require|file|fileExt:txt', 'file|文件' => 'require|file|fileExt:txt',
'from|源语言' => 'require',
'to|目标语言' => 'require',
]; ];
protected $scene = [ protected $scene = [
@ -37,5 +39,6 @@ class ContentValidate extends Validate
'topOpt' => ['id','is_top'], 'topOpt' => ['id','is_top'],
'addInnerChat' => ['content','website_id'], 'addInnerChat' => ['content','website_id'],
'articleUpload' => ['category_id','file'], 'articleUpload' => ['category_id','file'],
'copyToOtherLang' => ['from','to','website_id'],
]; ];
} }
Loading…
Cancel
Save