whereIn('role_id', $role_ids) ->pluck('menu_id')->toArray(); if ($menu_ids) { $menuWhere = [['status', '=', 1], ['uri', '<>', '']]; return AdminMenu::query()->whereIn('id', $menu_ids) ->where($menuWhere)->pluck('uri')->toArray(); } return []; } /** * 缓存菜单 * @param array $adminRoleMenus * @return array */ public function getMenuTreeCacheList(array $adminRoleMenus = []): array { $this->adminRoleMenus = $adminRoleMenus; return $this->getMenuTreeList(); } /** * 获取菜单 * @param array $menus_id * @param int $is_show * @return array */ public function getMenuTreeList( array $menus_id = [], int $is_show = 0 ): array { $model = AdminMenu::query(); if ($menus_id) { $model->wherein('id', $menus_id); } if ($is_show) { $model->where('show', 1); } $list = $model->orderBy('order') ->orderBy('id') ->select() ->get() ->toArray(); return generate_tree($list, 0, $this->adminRoleMenus); } /** * 获取用户菜单 * @param $user_id * @return array */ public function getUserMenuTreeList($user_id): array { $AdminUsers = AdminUsers::find($user_id); $roles_id = $AdminUsers->roles()->where('status', 1)->pluck('id') ->toArray(); if (!$roles_id) { return []; } $AdminRoles = AdminRoles::find($roles_id[0]); $menus_id = $AdminRoles->menus()->where('status', 1)->pluck('id') ->toArray(); if (!$menus_id) { return []; } return $this->getMenuTreeList($menus_id, 1); } /** * 用户角色菜单接口访问权限 * @param $user_id * @return array * @throws InvalidArgumentException */ public static function auth($user_id): array { $names = 'adminUserRules'; $key = $names . $user_id; $uriArr = Cache::tags($names)->get($key); if (!$uriArr) { $role_ids = AdminRoleUsers::query()->where('user_id', $user_id) ->pluck('role_id')->toArray(); $uriArr = []; if ($role_ids) { $uriArr = AdminMenuService::getRoleMenuUri($role_ids); } Cache::tags($names)->set($key, $uriArr, 36000); } return $uriArr; } }