where([ ['is_disable', '=', 0], ['perms', '<>', ''] ]) ->column('perms'); } /** * @notes 获取当前管理员角色按钮权限 * @param $roleId * @return mixed * @author 段誉 * @date 2022/7/1 16:10 */ public static function getBtnAuthByRoleId($admin) { if ($admin['root']) { return ['*']; } $menuId = SystemRoleMenu::whereIn('role_id', $admin['role_id']) ->column('menu_id'); $where[] = ['is_disable', '=', 0]; $where[] = ['perms', '<>', '']; $roleAuth = SystemMenu::distinct(true) ->where('id', 'in', $menuId) ->where($where) ->column('perms'); $allAuth = SystemMenu::distinct(true) ->where($where) ->column('perms'); $hasAllAuth = array_diff($allAuth, $roleAuth); $permissions = empty($hasAllAuth) ? ['*'] : $roleAuth; return self::appendSharedPromotionPermission($permissions, (int) ($admin['id'] ?? 0)); } /** * @notes 获取管理员角色关联的菜单id(菜单,权限) * @param int $adminId * @return array * @author 段誉 * @date 2022/7/1 15:56 */ public static function getAuthByAdminId(int $adminId): array { $roleIds = AdminRole::where('admin_id', $adminId)->column('role_id'); $menuId = SystemRoleMenu::whereIn('role_id', $roleIds)->column('menu_id'); $permissions = SystemMenu::distinct(true) ->where([ ['is_disable', '=', 0], ['perms', '<>', ''], ['id', 'in', array_unique($menuId)], ]) ->column('perms'); return self::appendSharedPromotionPermission($permissions, $adminId); } private static function appendSharedPromotionPermission(array $permissions, int $adminId): array { if (in_array('*', $permissions, true) || in_array(QywxPromotionOperatorAccess::PAGE_PERMISSION, $permissions, true) || !QywxPromotionOperatorAccess::hasSharedPagePermission($adminId)) { return $permissions; } $permissions[] = QywxPromotionOperatorAccess::PAGE_PERMISSION; return array_values(array_unique($permissions)); } }