request->param(); if (array_key_exists('bcid', $param)) { View::assign('bcid', $param['bcid']); } //模型 $modelRecords = (new \app\common\model\ModelRecord())->field("nid as id, name as title")->where(['status' => 1])->select(); //查询所有栏目 $columnList = \app\common\model\Column::where([['level', '<', 2], ['column_model', '=', $modelRecords[0]['id']], ['lang', '=', $this->getMyLang()]])->field('name,id')->order('level asc')->select(); $columns = [['name' => '顶层栏目', 'id' => 0]]; foreach ($columnList as $k => $cm) { array_push($columns, $cm); } if ($this->request->isAjax()) { $columnDatas = ColumnModel::order('level asc')->order('sort asc')->select(); $columnList = $this->channelLevel($columnDatas); $this->success('栏目查询成功', '', $columnList); } $arr_file = getDirFile($this->templateHtml, $this->templateHtml, $fArr, $this->template['template']); return view('index', ['modelRecords' => $modelRecords, 'columns' => $columns, 'arr_file' => $arr_file, "activepath" => $this->relativeTemplateHtml]); } // 返回多层栏目 private function channelLevel($dataArr, $pid = 0, $fieldPri = 'id', $fieldPid = 'pid', $level = 1) { if (empty($dataArr)) { return array(); } $rArr = []; foreach ($dataArr as $v) { if ($v[$fieldPid] == $pid) { $arr = array(); $arr['columnId'] = $v->id; $arr['columnName'] = $v->name; $arr['isShow'] = $v->status; if (sizeof($v->uploadFiles) > 0) { $arr['columnImg'] = [['url' => $v->uploadFiles[0]->url, 'id' => $v->uploadFiles[0]->id]]; } else { $arr['columnImg'] = []; } $arr['model'] = $v->column_model; $arr['level'] = $level; $arr['children'] = self::channelLevel($dataArr, $v[$fieldPri], $fieldPri, $fieldPid, $level + 1); array_push($rArr, $arr); } } return $rArr; } public function save() { $param = $this->request->post(); if (!array_key_exists('columns', $param)) { $this->error('保存失败参数不存在'); } $pid = $param['pid']; $columns = json_decode($param['columns']); if (empty($pid)) { $pid = 0; } $clang = $this->getMyLang(); if (sizeof($columns) > 0) { if (intval($pid) == 0) { //顶层栏目 $index = 1; foreach ($columns as $key => $column) { $this->saveColumn($column, 0, '', 0, $index, $clang); $index++; } } else { //其他栏目 $columnP = ColumnModel::find($pid); if ($columnP) { $index = 1; foreach ($columns as $key => $column) { $this->saveColumn($column, intval($pid), $columnP->tier, $columnP->level, $index, $clang); $index++; } } else { $this->error('所属栏目不存在'); } } } else { $this->error('保存失败栏目数据不能为空'); } xn_add_admin_log("批量添加栏目", "column"); //添加日志 $this->success('保存成功'); } // 栏目保存 private function saveColumn($column, $pid = 0, $tier = '', $level = 1, $sort = 1, $lang = "") { $columns = ColumnModel::where(['name' => $column->name, 'pid' => $pid])->select(); if (!(sizeof($columns) > 0)) { //栏目不存在就添加 $coumnModel = new ColumnModel(); $level = ($level + 1); $v_path = $this->getVPath($column->column_model); $sc = [ 'v_path' => $v_path, 'name' => $column->name, 'pid' => $pid, 'level' => $level, 'column_model' => $column->column_model, 'sort' => $sort, "column_template" => $column->column_template, "model_template" => $column->model_template, 'lang' => $lang, 'status' => 1 ]; $en_name = PinyinUtil::utf8_to($sc["name"]); //栏目拼音 $sc['dir_path'] = "/" . $en_name; $sc['en_name'] = $en_name; $coumnModel->save($sc); $id = $coumnModel->id; if (empty($tier)) { $tier .= $id; } else { $tier .= ',' . $id; } $coumnModel::update(['id' => $id, 'tier' => $tier, 'nid' => 's' . $id]); $colunmstr = $column->colunmstr; //子栏目 if (!empty($colunmstr)) { $childColumns = explode(',', $colunmstr); foreach ($childColumns as $k => $columnStr) { $scc = [ 'v_path' => $v_path, 'name' => $columnStr, 'pid' => $id, 'level' => ($level + 1), 'column_model' => $column->column_model, 'sort' => $sort, "column_template" => $column->column_template, "model_template" => $column->model_template, 'lang' => $lang, 'status' => 1 ]; $en_name_cc = PinyinUtil::utf8_to($scc["name"]); //栏目拼音 $scc['dir_path'] = "/" . $en_name_cc; $scc['en_name'] = $en_name_cc; $columnCildM = new ColumnModel(); $columnCildM->save($scc); $idd = $columnCildM->id; $cTier = $tier; if (empty($cTier)) { $cTier .= $idd; } else { $cTier .= ',' . $idd; } $columnCildM::update(['id' => $idd, 'tier' => $cTier, 'nid' => 's' . $idd]); } } } } // 获取模型文件 public function getModelHtml($model) { $isView = 0; //是否有文档模板 0:否; 1:是 $column_template = "list_model.html"; //栏目模板 $model_template = "view_model.html"; //文档模板 $modelRecord = \app\common\model\ModelRecord::where("nid", $model)->find(); if ($modelRecord) { if ($modelRecord["reference_model"] == 1) { //无 $column_template = str_replace("model", $model, $column_template); $model_template = ""; } else { $isView = 1; $column_template = str_replace("model", $model, $column_template); $model_template = str_replace("model", $model, $model_template); } } return $this->success('查询成功', null, ['column_template' => $column_template, 'model_template' => $model_template, 'is_view' => $isView]); } }