manghe/app/admin/controller/FFCategoriesController.php
2025-06-25 18:26:26 +08:00

179 lines
5.2 KiB
PHP

<?php
namespace app\admin\controller;
use think\facade\View;
use think\facade\Db;
use app\common\model\FFCategories;
class FFCategoriesController extends Base
{
/**
* 商品分类列表
*/
public function index()
{
if (request()->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('删除失败');
}
}
}