|
...
|
...
|
@@ -116,4 +116,79 @@ class NavLogic extends BaseLogic |
|
|
|
}
|
|
|
|
return $this->success();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 一键导入 对应分类
|
|
|
|
* @throws \App\Exceptions\AsideGlobalException
|
|
|
|
* @throws \App\Exceptions\BsideGlobalException
|
|
|
|
*/
|
|
|
|
public function importNav(){
|
|
|
|
$nav = $this->getInfo($this->param['id']);
|
|
|
|
if(!in_array($nav['url'], array_keys(BNav::ableImportMap()))){
|
|
|
|
$this->fail('该菜单不支持一键导入');
|
|
|
|
}
|
|
|
|
|
|
|
|
$class = BNav::ableImportMap($nav['url']);
|
|
|
|
$category = new $class();
|
|
|
|
$fields = ['id', 'name', 'pid', 'alias'];
|
|
|
|
if($nav['url'] == 'products'){
|
|
|
|
$fields = ['id', 'title as name', 'pid', 'route as alias'];
|
|
|
|
}
|
|
|
|
$this->addByPid($category, $nav, $fields);
|
|
|
|
return $this->success();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 一级一级的加
|
|
|
|
* @author zbj
|
|
|
|
* @date 2023/11/22
|
|
|
|
*/
|
|
|
|
protected function addByPid($category, $nav, $fields, $pid = 0)
|
|
|
|
{
|
|
|
|
$nav_pid = $nav['id'];
|
|
|
|
if($pid){
|
|
|
|
$p_cate = $category->where('id', $pid)->select($fields)->first();
|
|
|
|
if($p_cate){
|
|
|
|
$nav_pid = $this->model->where('import_id', $nav['id'])->where('url', $p_cate['alias'])->value('id');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$list = $category->list(['pid' => $pid], 'id', $fields, 'asc');
|
|
|
|
$data = [];
|
|
|
|
$time = date('Y-m-d H:i:s');
|
|
|
|
foreach ($list as $item) {
|
|
|
|
$exists_info = $this->model->where('import_id', $nav['id'])->where('url', $item['alias'])->first();
|
|
|
|
if($exists_info){
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$data[] = [
|
|
|
|
'pid' => $nav_pid,
|
|
|
|
'name' => $item['name'],
|
|
|
|
'url' => $item['alias'],
|
|
|
|
'project_id' => $this->project['id'],
|
|
|
|
'location' => $nav['location'],
|
|
|
|
'group_id' => $nav['group_id'],
|
|
|
|
'status' => BNav::STATUS_ACTIVE,
|
|
|
|
'import_id' => $nav['id'],
|
|
|
|
'created_at' => $time,
|
|
|
|
'updated_at' => $time,
|
|
|
|
];
|
|
|
|
}
|
|
|
|
//每500条更一次
|
|
|
|
$data_chunk = array_chunk($data,500);
|
|
|
|
foreach ($data_chunk as $chunk){
|
|
|
|
$this->model->insert($chunk);
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($list as $item) {
|
|
|
|
$this->addByPid($category, $nav, $fields, $item['id']);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
...
|
...
|
|