后台
This commit is contained in:
127
app/czg/sys/controller/MenuController.php
Normal file
127
app/czg/sys/controller/MenuController.php
Normal file
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
namespace app\czg\sys\controller;
|
||||
|
||||
use app\admin\model\SysMenu;
|
||||
use app\common\controller\Backend;
|
||||
use think\facade\Db;
|
||||
|
||||
class MenuController extends Backend
|
||||
{
|
||||
protected array $noNeedPermission = ['*'];
|
||||
// 菜单列表
|
||||
public function nav()
|
||||
{
|
||||
$admin = $this->auth->getAdmin();
|
||||
$return = SysMenu::getMenuList($this->auth->getUserMenus($admin['user_id']));
|
||||
|
||||
$this->n_success([
|
||||
'menuList' => convertToCamelCase($return['menuList']),
|
||||
'permissions' => $return['permissions'],
|
||||
]);
|
||||
}
|
||||
|
||||
public function list()
|
||||
{
|
||||
$menuList = Db::name('sys_menu')->order('order_num', 'asc')->select()->toArray();
|
||||
|
||||
// 收集所有 parent_id
|
||||
$parentIds = array_column($menuList, 'parent_id');
|
||||
$parentIds = array_unique(array_filter($parentIds));
|
||||
|
||||
// 批量查询父级菜单
|
||||
$parentMap = [];
|
||||
if (!empty($parentIds)) {
|
||||
$parents = Db::name('sys_menu')->whereIn('menu_id', $parentIds)->column('name', 'menu_id');
|
||||
$parentMap = $parents;
|
||||
}
|
||||
|
||||
// 设置 parentName
|
||||
foreach ($menuList as &$menu) {
|
||||
$menu['menu_id'] = (string) $menu['menu_id'];
|
||||
$menu['parent_id'] = (string) $menu['parent_id'];
|
||||
|
||||
$menu['parent_name'] = $parentMap[$menu['parent_id']] ?? '';
|
||||
}
|
||||
unset($menu);
|
||||
|
||||
return $this->ApiDataReturn(convertToCamelCase($menuList));
|
||||
}
|
||||
|
||||
public function info()
|
||||
{
|
||||
$data = Db::name('sys_menu')->where([
|
||||
'menu_id' => $this->request->route->param('id')
|
||||
])->find();
|
||||
$data['menu_id'] = (string) $data['menu_id'];
|
||||
$data['parent_id'] = (string) $data['parent_id'];
|
||||
$data = convertToCamelCase($data);
|
||||
$this->n_success(['menu' => $data]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function save()
|
||||
{
|
||||
$menu = $this->request->post();
|
||||
SysMenu::verifyForm($menu);
|
||||
$menu = convertKeysCamelToSnakeRecursive($menu);
|
||||
Db::connect(get_master_connect_name())->name('sys_menu')->insert($menu);
|
||||
$this->success();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function selectInfo()
|
||||
{
|
||||
$list = Db::name('sys_menu')->where([
|
||||
'type' => ['!=', 2]
|
||||
])->order('order_num')->select()->toArray();
|
||||
|
||||
$list[] = [
|
||||
'menu_id' => 0,
|
||||
'name' => '一级菜单',
|
||||
'parent_id' => -1,
|
||||
'open' => true,
|
||||
];
|
||||
$list = convertToCamelCase($list);
|
||||
$this->n_success(['menuList' => $list]);
|
||||
// $this->successWithData([
|
||||
// 'menuList' => $list
|
||||
// ]);
|
||||
}
|
||||
|
||||
public function update()
|
||||
{
|
||||
$params = $this->request->post();
|
||||
$params = convertKeysCamelToSnakeRecursive($params);
|
||||
Db::name('sys_menu')->where([
|
||||
'menu_id' => $params['menu_id']
|
||||
])->update($params);
|
||||
$this->success();
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
$post = $this->request->post();
|
||||
if(empty($post['menuId'])) {
|
||||
$this->error('参数错误');
|
||||
}
|
||||
$menuId = $post['menuId'];
|
||||
if($menuId <= 31) {
|
||||
$this->error('系统菜单,不能删除');
|
||||
}
|
||||
|
||||
// 判断是否有子菜单或按钮
|
||||
$menuList = Db::connect(get_slave_connect_name())->name('sys_menu')->where(['parent_id' => $menuId])->order('order_num', 'asc')->select()->toArray();
|
||||
if($menuList) {
|
||||
$this->error('请先删除子菜单或按钮');
|
||||
}
|
||||
|
||||
if(Db::name('sys_menu')->where(['menu_id' => $menuId])->delete()) {
|
||||
$this->success('删除成功');
|
||||
}
|
||||
$this->error('操作失败');
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user