isAjax()) { $where = array(); if (!empty($param['keywords'])) { $where[] = ['a.id|a.title|a.keywords|a.desc|a.content|c.title', 'like', '%' . $param['keywords'] . '%']; } if (!empty($param['cate_id'])) { $where[] = ['a.cate_id', '=', $param['cate_id']]; } if ($param['share'] == 1) { $where[] = ['a.is_share', '=', 1]; } else { $where[] = ['a.admin_id', '=', $this->uid]; } $where[] = ['a.delete_time', '=', 0]; $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; $content = KnowledgeList::where($where) ->field('a.*,c.id as cate_id,a.id as id,c.title as cate_title,a.title as title,u.name as user') ->alias('a') ->join('KnowledgeCate c', 'a.cate_id = c.id') ->join('admin u', 'a.admin_id = u.id', 'LEFT') ->order('a.create_time asc') ->paginate($rows, false, ['query' => $param]) ->each(function ($item, $key) { $item->views = Db::name('KnowledgeDoc')->where([['delete_time', '=', 0], ['knowledge_id', '=', $item->id]])->sum('read'); $item->sections = Db::name('KnowledgeDoc')->where([['delete_time', '=', 0], ['knowledge_id', '=', $item->id]])->count(); $item->tagsid = $item->tags; $item->tags = Db::name('KnowledgeTags')->where(['id' => $item['tags']])->value('name'); }); return table_assign(0, '', $content); } else { $eid = isset($param['eid']) ? $param['eid'] : 0; $kid = isset($param['kid']) ? $param['kid'] : 0; View::assign('eid', $eid); View::assign('kid', $kid); return view(); } } public function list() { $param = get_params(); if (request()->isAjax()) { $where = array(); if (!empty($param['keywords'])) { $where[] = ['a.id|a.title|a.keywords|a.desc|a.content|c.title', 'like', '%' . $param['keywords'] . '%']; } if (!empty($param['cate_id'])) { $where[] = ['a.cate_id', '=', $param['cate_id']]; } $where[] = ['a.delete_time', '=', 0]; $where[] = ['a.is_share', '=', 1]; $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; $content = KnowledgeList::where($where) ->field('a.*,c.id as cate_id,a.id as id,c.title as cate_title,a.title as title,u.name as user') ->alias('a') ->join('KnowledgeCate c', 'a.cate_id = c.id') ->join('admin u', 'a.admin_id = u.id', 'LEFT') ->order('a.create_time desc') ->paginate($rows, false, ['query' => $param]); return table_assign(0, '', $content); } else { $eid = isset($param['eid']) ? $param['eid'] : 0; $kid = isset($param['kid']) ? $param['kid'] : 0; View::assign('eid', $eid); View::assign('kid', $kid); return view(); } } // 获取标签 public function get_tags() { $tags = Db::name('KnowledgeTags')->field('id, name')->select(); return json(['data' => $tags]); } //添加&&编辑 public function add() { $param = get_params(); if (request()->isPost()) { if (!empty($param['id']) && $param['id'] > 0) { try { validate(KnowledgeCheck::class)->scene('edit')->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 return to_assign(1, $e->getError()); } $param['update_time'] = time(); $res = KnowledgeList::where('id', $param['id'])->strict(false)->field(true)->update($param); if ($res) { add_log('edit', $param['id'], $param); } return to_assign(0, '编辑成功', $param['id']); } else { try { validate(KnowledgeCheck::class)->scene('add')->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 return to_assign(1, $e->getError()); } $param['admin_id'] = $this->uid; $param['create_time'] = time(); $kid = KnowledgeList::strict(false)->field(true)->insertGetId($param); if ($kid) { add_log('add', $kid, $param); } return to_assign(0, '添加成功', $kid); } } else { $id = isset($param['id']) ? $param['id'] : 0; if ($id > 0) { $knowledge = Db::name('Knowledge')->where(['id' => $id])->find(); View::assign('knowledge', $knowledge); } View::assign('id', $id); return view(); } } //查看 public function view() { $id = get_params("id"); $detail = (new KnowledgeList())->detail($id); // if ($detail['admin_id'] != $this->uid) { // return to_assign(1, "您不是该知识库创建者,无权限操作"); // } View::assign('detail', $detail); return view(); } //删除 public function delete() { $id = get_params("id"); $data['id'] = $id; $data['delete_time'] = time(); if (Db::name('Knowledge')->update($data) !== false) { add_log('delete', $id); return to_assign(0, "删除成功"); } else { return to_assign(1, "删除失败"); } } //文档添加&&编辑 public function doc_add() { $param = get_params(); if (request()->isPost()) { if (isset($param['table-align'])) { unset($param['table-align']); } if (isset($param['docContent-html-code'])) { $param['content'] = $param['docContent-html-code']; unset($param['docContent-html-code']); } if (isset($param['id']) && $param['id'] > 0) { $param['update_time'] = time(); $res = Db::name('KnowledgeDoc')->strict(false)->field(true)->update($param); $aid = $param['id']; if ($res) { add_log('edit', $param['id'], $param); return to_assign(); } else { return to_assign(1, '操作失败'); } } else { $param['admin_id'] = $this->uid; $param['create_time'] = time(); if (isset($param['content'])) { $param['desc'] = getDescriptionFromContent($param['content'], 100); } $aid = Db::name('KnowledgeDoc')->strict(false)->field(true)->insertGetId($param); if ($aid) { add_log('add', $aid, $param); return to_assign(0, '保存成功', $aid); } else { return to_assign(1, '操作失败'); } } } else { $id = empty($param['id']) ? 0 : $param['id']; $pid = empty($param['pid']) ? 0 : $param['pid']; View::assign('id', $id); View::assign('pid', $pid); if ($id > 0) { $detail = Db::name('KnowledgeDoc')->where(['id' => $id])->find(); View::assign('detail', $detail); } return view(); } } //删除文档 public function doc_delete() { $id = get_params("id"); $count = Db::name('KnowledgeDoc')->where(["pid" => $id, "delete_time" => 0])->count(); if ($count > 0) { return to_assign(1, "该分类下还有子文档,无法删除"); } $data['id'] = $id; $data['delete_time'] = time(); if (Db::name('KnowledgeDoc')->update($data) !== false) { add_log('delete', $id); return to_assign(0, "删除成功"); } else { return to_assign(1, "删除失败"); } } /* *文档详情 */ public function doc_detail() { $param = get_params(); $kid = empty($param['kid']) ? 0 : $param['kid']; $id = empty($param['id']) ? 0 : $param['id']; if (request()->isAjax()) { $info = Db::name('KnowledgeDoc')->where(['id' => $id])->find(); Db::name('KnowledgeDoc')->where(['id' => $id])->inc('read')->update(); add_log('view', $id); return to_assign(0, '', $info); } else { $where = array(); $where[] = ['knowledge_id', '=', $kid]; $where[] = ['delete_time', '=', 0]; $list = Db::name('KnowledgeDoc')->where($where) ->field('id,pid,title,type,knowledge_id,link,read,sort,create_time,update_time') ->order('sort asc,id asc') ->select()->toArray(); $detail = (new KnowledgeList())->detail($kid); $info = []; if ($id == 0 && !empty($list)) { $id = $list[0]['id']; } $info = Db::name('KnowledgeDoc')->where(['id' => $id])->find(); Db::name('KnowledgeDoc')->where(['id' => $id])->inc('read')->update(); View::assign([ 'detail' => $detail, 'info' => $info, 'kid' => $kid, 'id' => $id ]); add_log('view', $id); return View(); } } }