model = new ResourceModel(); } public function index() { if ($this->request->isAjax()) { $title = $this->request->param('title', ''); $cid = $this->request->param('cid/d', 0); $page = $this->request->param('page/d', 1); $limit = $this->request->param('limit/d', 20); $data = $this->model ->with(['category']) ->when($title, fn($q, $t) => $q->whereLike('title', "%{$t}%")) ->when($cid, fn($q, $c) => $q->where('cid', $c)) ->order('id', 'desc') ->paginate(['page' => $page, 'list_rows' => $limit]); $this->result->setCount($data->total()); $this->result->success($data->items()); } $categories = (new CategoryModel()) ->where('status', 1) ->order('sort', 'desc') ->select(); $this->view->assign('categories', $categories); return $this->view->fetch('resource/index'); } public function create() { if ($this->request->isAjax()) { $categories = (new CategoryModel()) ->where('status', 1) ->order('sort', 'desc') ->select(); $this->result->success(['categories' => $categories]); } } public function save() { if ($this->request->isPost()) { $params = $this->request->post(); $this->validateSave($params); Db::startTrans(); try { $this->model->save($params); Db::commit(); $this->result->success($this->model, '保存成功'); } catch (\Exception $e) { Db::rollback(); $this->result->error('保存失败: ' . $e->getMessage()); } } } public function edit($id = null) { $id = $this->request->param('id'); $model = $this->model->find($id); if (!$model) { $this->result->error('数据不存在'); } if ($this->request->isAjax()) { $categories = (new CategoryModel()) ->where('status', 1) ->order('sort', 'desc') ->select(); $this->result->success(['categories' => $categories, 'info' => $model]); } } public function update() { $id = $this->request->param('id'); if ($this->request->isAjax() && $this->request->isPut()) { $params = $this->request->param(); $this->validateSave($params); Db::startTrans(); try { $model = $this->model->find($id); if (!$model) { throw new ValidateException('数据不存在'); } $model->save($params); Db::commit(); $this->result->success($model, '更新成功'); } catch (\Exception $e) { Db::rollback(); $this->result->error('更新失败: ' . $e->getMessage()); } } } public function delete() { if ($this->request->isAjax() && $this->request->isDelete()) { $ids = $this->request->param('ids', ''); if (empty($ids)) { $this->result->error('请选择要删除的数据'); } try { Db::transaction(function () use ($ids) { $this->model->destroy($ids); }); $this->result->success(); } catch (\think\exception\HttpResponseException $e) { throw $e; } catch (\Throwable $th) { $this->result->error('删除失败: ' . $th->getMessage()); } } } protected function validateSave(array $params): void { if (empty($params['title'])) { throw new ValidateException('资源标题不能为空'); } if (empty($params['cid'])) { throw new ValidateException('请选择分类'); } } }