96 lines
2.7 KiB
PHP
96 lines
2.7 KiB
PHP
<?php
|
|
/**
|
|
* 商业使用授权协议
|
|
*
|
|
* Copyright (c) 2026 [云泽网]. 保留所有权利.
|
|
*
|
|
* 本软件仅供评估使用。任何商业用途必须获得书面授权许可。
|
|
* 未经授权商业使用本软件属于侵权行为,将承担法律责任。
|
|
*
|
|
* 授权购买请联系: 357099073@qq.com
|
|
* 官方网站: https://www.yunzer.cn
|
|
*
|
|
* 评估用户须知:
|
|
* 1. 禁止移除版权声明
|
|
* 2. 禁止用于生产环境
|
|
* 3. 禁止转售或分发
|
|
*/
|
|
|
|
/**
|
|
* 后台管理系统-系统管理
|
|
*/
|
|
namespace app\admin\controller;
|
|
|
|
use think\facade\Db;
|
|
use app\admin\controller\BaseController;
|
|
use app\admin\model\System\SystemMenu;
|
|
|
|
class SystemController extends BaseController
|
|
{
|
|
// 获取菜单列表
|
|
public function getMenuList()
|
|
{
|
|
try {
|
|
// 获取所有菜单,按排序和层级关系组织
|
|
$menus = SystemMenu::where('status', 1)
|
|
->order('sort', 'asc')
|
|
->order('id', 'asc')
|
|
->select()
|
|
->toArray();
|
|
|
|
// 按父子关系组织菜单
|
|
$menuTree = $this->buildMenuTree($menus);
|
|
|
|
// 直接输出JSON响应
|
|
header('Content-type: application/json');
|
|
echo json_encode([
|
|
'code' => 0,
|
|
'msg' => '获取菜单列表成功',
|
|
'data' => $menuTree
|
|
]);
|
|
exit;
|
|
|
|
} catch (\Exception $e) {
|
|
header('Content-type: application/json');
|
|
echo json_encode([
|
|
'code' => 1,
|
|
'msg' => '获取菜单列表失败:' . $e->getMessage()
|
|
]);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
// 递归构建菜单树
|
|
private function buildMenuTree($menus, $parentId = 0)
|
|
{
|
|
$tree = [];
|
|
|
|
foreach ($menus as $menu) {
|
|
if ($menu['pid'] == $parentId) {
|
|
$children = $this->buildMenuTree($menus, $menu['id']);
|
|
|
|
$menuItem = [
|
|
'id' => $menu['id'],
|
|
'pid' => $menu['pid'],
|
|
'name' => $menu['name'] ?? '',
|
|
'title' => $menu['title'] ?? '',
|
|
'icon' => $menu['icon'] ?? '',
|
|
'path' => $menu['path'] ?? '',
|
|
'component' => $menu['component'] ?? '',
|
|
'redirect' => $menu['redirect'] ?? '',
|
|
'sort' => $menu['sort'] ?? 0,
|
|
'status' => $menu['status'] ?? 1,
|
|
'type' => $menu['type'] ?? 0
|
|
];
|
|
|
|
if (!empty($children)) {
|
|
$menuItem['children'] = $children;
|
|
}
|
|
|
|
$tree[] = $menuItem;
|
|
}
|
|
}
|
|
|
|
return $tree;
|
|
}
|
|
} |