isAjax()) { $limit = input('param.limit', 15); $page = input('param.page', 1); $offset = ($page - 1) * $limit; $category_name = input('param.category_name', ''); $status = input('param.status', ''); $where = []; if ($category_name) { $where[] = ['category_name', 'like', "%{$category_name}%"]; } if ($status !== '') { $where[] = ['status', '=', $status]; } $res = FFCategories::where($where) ->order(['sort_order' => 'asc', 'id' => 'desc']) ->limit($offset, $limit) ->select(); $total = FFCategories::where($where)->count(); return $this->renderTable('获取成功', $total, $res, 0); } return View::fetch('FFCategories/index'); } /** * 添加商品分类 */ public function add() { if (request()->isPost()) { $param = input('post.'); $validate = $this->validate($param, [ 'category_name' => 'require', ]); if (true !== $validate) { return $this->renderError($validate); } // 默认值设置 if (!isset($param['parent_id'])) { $param['parent_id'] = 0; $param['category_level'] = 1; } else if ($param['parent_id'] > 0) { // 查询父级分类的等级,并设置当前分类的等级为父级+1 $parent = FFCategories::where('id', $param['parent_id'])->find(); if (!$parent) { return $this->renderError('父级分类不存在'); } $param['category_level'] = $parent['category_level'] + 1; // 分类最多支持3级 if ($param['category_level'] > 3) { return $this->renderError('分类最多支持3级'); } } if (!isset($param['sort_order'])) { $param['sort_order'] = 0; } if (!isset($param['status'])) { $param['status'] = 1; } $res = FFCategories::create($param); if ($res) { return $this->renderSuccess('添加成功', ['url' => (string) url('ff_products')]); } else { return $this->renderError('添加失败'); } } // 获取父级分类列表 $parentList = FFCategories::where([ ['category_level', '<', 3], // 只查询1级和2级分类作为父级 ['status', '=', 1] ]) ->order('sort_order', 'asc') ->select(); View::assign('parentList', $parentList); return View::fetch('FFCategories/add'); } /** * 编辑商品分类 */ public function edit() { $id = input('param.id', 0); $info = FFCategories::where('id', $id)->find(); if (empty($info)) { return $this->renderError('数据不存在'); } if (request()->isPost()) { $param = input('post.'); $validate = $this->validate($param, [ 'category_name' => 'require', ]); if (true !== $validate) { return $this->renderError($validate); } // 不允许修改分类级别和父级分类,因为会影响分类结构 unset($param['parent_id']); unset($param['category_level']); $res = FFCategories::update($param, ['id' => $id]); if ($res) { return $this->renderSuccess('编辑成功', ['url' => (string) url('ff_products')]); } else { return $this->renderError('编辑失败'); } } View::assign('info', $info); return View::fetch('FFCategories/edit'); } /** * 修改分类状态 */ public function status() { $id = input('param.id', 0); $status = input('param.status', 0); $res = FFCategories::update(['status' => $status], ['id' => $id]); if ($res) { return $this->renderSuccess('操作成功'); } else { return $this->renderError('操作失败'); } } /** * 删除分类 */ public function del() { $id = input('param.id', 0); // 检查是否有子分类 $hasChildren = FFCategories::where('parent_id', $id)->count(); if ($hasChildren > 0) { return $this->renderError('该分类下有子分类,无法删除'); } $res = FFCategories::destroy($id); if ($res) { return $this->renderSuccess('删除成功'); } else { return $this->renderError('删除失败'); } } }