diff --git a/app/common/logic/PermLogic.php b/app/common/logic/PermLogic.php index eca4b25..b4d38db 100644 --- a/app/common/logic/PermLogic.php +++ b/app/common/logic/PermLogic.php @@ -8,24 +8,7 @@ use app\common\model\Resource; class PermLogic { /** - * 获取用户所有资源(合并角色+直接分配) - */ - // public function getUserResources(int $userId) - // { - // $user = User::with(['roles.resources', 'resources'])->find($userId); - // if (!$user) { - // return collect(); - // } - - // $all = collect(); - // foreach ($user->roles as $role) { - // $all = $all->merge($role->resources); - // } - // $all = $all->merge($user->resources); - // return $all->unique('id')->values(); - // } - /** - * 获取用户所有资源(合并角色+直接分配),并加入公共菜单 + * 获取用户所有资源(合并角色+直接分配),并加入公共菜单,排序按sort字段 */ public function getUserResources(int $userId) { @@ -57,14 +40,16 @@ class PermLogic ); // 加入公共菜单,公共菜单不管是否授权,所有人都能访问 - $publicResources = Resource::where('no_auth', 1)->get(); // 获取所有公共菜单 + $publicResources = Resource::where('no_auth', 1) + ->orderBy('sort', 'asc') // 按 sort 字段升序排序 + ->get(); + $all = $all->merge($publicResources); // 返回唯一的资源列表,并按 id 排序 - return $all->unique('id')->values(); + return $all->unique('id')->values()->sortBy('sort'); // 最终根据sort排序 } - /** * 构建目录/菜单树,节点包含权限与打开方式,拼接完整路径,并对子级菜单component处理 * @param \Illuminate\Support\Collection $resources