count(); // 查询当前页数据(分页) $list = TkSubjects::where('is_deleted', 0) ->order('sort ASC, level ASC, id ASC') ->field('id, name, code, parent_id, level, sort') ->page($page, $limit) ->select() ->toArray(); if (Request::isPost()) { // POST请求返回JSON - 分页数据 return json([ 'code' => 0, 'msg' => 'success', 'data' => $list, 'count' => $total ]); } else { // GET请求渲染视图,传递最大层级 // 这里需要获取全部数据以便计算最大层级 $allList = TkSubjects::where('is_deleted', 0) ->field('level') ->select() ->toArray(); $maxLevel = 0; if (!empty($allList)) { $maxLevel = max(array_column($allList, 'level')); } View::assign([ 'maxLevel' => $maxLevel // 传递最大层级给视图 ]); return View::fetch(); } } catch (\Exception $e) { return json([ 'code' => 1, 'msg' => '获取分类数据失败', 'data' => [], 'count' => 0, 'error' => $e->getMessage() ]); } } //题目分类增加 public function categoryadd() { if (Request::isPost()) { $name = trim(input('post.name', '')); $level = trim(input('post.level', '')); if (empty($name)) { return json(['code' => 1, 'msg' => '分类名称不能为空']); } // 检查是否已存在同名分类 $exists = TkSubjects::where('name', $name) ->where('is_deleted', null) ->find(); if ($exists) { return json(['code' => 1, 'msg' => '该分类名称已存在']); } $data = [ 'name' => $name, 'level' => $level, 'status' => 1, 'create_time' => time() ]; $res = TkSubjects::create($data); if ($res) { return json(['code' => 0, 'msg' => '新增成功']); } else { return json(['code' => 1, 'msg' => '新增失败']); } } else { // GET请求渲染新增分类页面(如有需要) return View::fetch(); } } //题目管理列表 public function topiclist() { if (Request::isPost()) { $params = [ 'category' => input('post.category'), 'name' => input('post.name'), 'uploader' => input('post.uploader') ]; $page = (int) input('post.page', 1); $limit = (int) input('post.limit', 10); $query = TkQuestions::where('delete_time', null) ->where('status', 1); // 分类筛选 if (!empty($params['category'])) { $cateInfo = TkQuestions::where('name', $params['category']) ->where('delete_time', null) ->where('status', 1) ->field('id') ->find(); if ($cateInfo) { $query = $query->where('cate', (int) $cateInfo['id']); } } // 名称搜索 if (!empty($params['name'])) { $query = $query->where('name', 'like', '%' . $params['name'] . '%'); } // 上传者搜索 if (!empty($params['uploader'])) { $query = $query->where('uploader', 'like', '%' . $params['uploader'] . '%'); } $count = $query->count(); $lists = $query->order('id DESC') ->page($page, $limit) ->select() ->each(function ($item) { // 获取分类信息 $cateInfo = TkQuestions::where('id', (int) $item['cate']) ->field('name, icon') ->find(); if ($cateInfo) { $item['cate'] = $cateInfo['name']; if (empty($item['icon']) && !empty($cateInfo['icon'])) { $item['icon'] = $cateInfo['icon']; } } $item['create_time'] = date('Y-m-d H:i:s', (int) $item['create_time']); return $item; }); return json([ 'code' => 0, 'msg' => '获取成功', 'count' => $count, 'data' => $lists ]); } else { // $allCategories = TkQuestions::where('delete_time', null) // ->where('status', 1) // ->field('id, name, cid, icon') // ->order('sort asc, id asc') // ->select() // ->toArray(); // $categories = $this->buildParentChild($allCategories); // View::assign([ // 'categories' => $categories // ]); return View::fetch(); } } //题目添加 public function topicadd() { if ($this->request->isPost()) { $params = $this->request->post(); // 数据验证 $validate = new \think\Validate([ 'question_type' => 'require|number|between:1,6', 'subject_id' => 'require|number', 'knowledge_point_id' => 'number', 'difficulty' => 'number|between:1,5', 'content' => 'require', 'analysis' => 'require', 'answer' => 'require' ]); if (!$validate->check($params)) { return json(['code' => 1, 'msg' => $validate->getError()]); } // 处理数据 $data = [ 'question_type' => (int)$params['question_type'], 'subject_id' => (int)$params['subject_id'], 'knowledge_point_id' => isset($params['knowledge_point_id']) ? (int)$params['knowledge_point_id'] : null, 'difficulty' => isset($params['difficulty']) ? (int)$params['difficulty'] : 3, 'content' => $params['content'], 'analysis' => $params['analysis'], 'answer' => $params['answer'], 'created_by' => $this->getUserId(), // 假设有获取当前用户ID的方法 'created_time' => date('Y-m-d H:i:s'), 'updated_by' => $this->getUserId(), 'updated_time' => date('Y-m-d H:i:s') ]; // 保存数据 $result = \think\facade\Db::name('questions')->insert($data); if ($result) { return json(['code' => 0, 'msg' => '添加成功']); } else { return json(['code' => 1, 'msg' => '添加失败']); } } else { return View::fetch(); } } }