179 lines
5.2 KiB
PHP
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('删除失败');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
} |