chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
/*
|
||||
* @Author: YwxApp <ywx@ywxapp.cn>
|
||||
* @Date: 2026-04-29 02:32:33
|
||||
* @LastEditors: YwxApp <ywx@ywxapp.cn>
|
||||
* @LastEditTime: 2026-07-21 23:25:55
|
||||
* @Description:
|
||||
* @FilePath: \ywxapp_dev\app\backend\service\PermissionService.php
|
||||
* @CustomString: Copyright (c) 2026 YwxApp
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
namespace app\backend\service;
|
||||
|
||||
use ywxapp\model\BackendAdmin as AdminModel;
|
||||
use ywxapp\model\RolePermission;
|
||||
use ywxapp\model\Permission as PermissionModel;
|
||||
|
||||
/**
|
||||
* 权限服务类
|
||||
*
|
||||
* // 获取权限列表
|
||||
* $permissionList = PermissionService::getUserPermissions($userId);
|
||||
* // 或者获取权限树
|
||||
* $permissionTree = PermissionService::getUserPermissionTree($userId);
|
||||
* // 或者只获取权限编码
|
||||
* $permissionCodes = PermissionService::getUserPermissionCodes($userId);
|
||||
*/
|
||||
class PermissionService
|
||||
{
|
||||
/**
|
||||
* 获取当前用户的权限列表
|
||||
* @param int $userId 用户ID
|
||||
* @return array
|
||||
*/
|
||||
public static function getUserPermissions($userId)
|
||||
{
|
||||
// 1. 获取用户角色
|
||||
$user = AdminModel::with(['roles'])->find($userId);
|
||||
if (!$user) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$roleIds = array_column($user->roles->toArray(), 'id');
|
||||
if (empty($roleIds)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// 2. 获取角色权限ID
|
||||
$permissionIds = RolePermission::where('role_id', 'in', $roleIds)
|
||||
->column('permission_id');
|
||||
|
||||
if (empty($permissionIds)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// 3. 获取权限详情
|
||||
return PermissionModel::where('id', 'in', $permissionIds)
|
||||
->select()
|
||||
->toArray();
|
||||
}
|
||||
/**
|
||||
* 获取当前用户的权限列表
|
||||
* @param int $userId 用户ID
|
||||
* @return array
|
||||
*/
|
||||
public static function getUserMenus($userId)
|
||||
{
|
||||
// 1. 获取用户角色
|
||||
$user = AdminModel::with(['roles'])->find($userId);
|
||||
if (!$user) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$roleIds = array_column($user->roles->toArray(), 'id');
|
||||
if (empty($roleIds)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// 2. 获取角色权限ID
|
||||
$permissionIds = RolePermission::where('role_id', 'in', $roleIds)
|
||||
->column('permission_id');
|
||||
|
||||
if (empty($permissionIds)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// 3. 获取权限详情
|
||||
$permissions = PermissionModel::where('type',1)->where('id', 'in', $permissionIds)
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
|
||||
return self::buildPermissionTree($permissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的权限树
|
||||
* @param int $userId 用户ID
|
||||
* @return array
|
||||
*/
|
||||
public static function getUserPermissionTree($userId)
|
||||
{
|
||||
$permissions = self::getUserPermissions($userId);
|
||||
return self::buildPermissionTree($permissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建权限树
|
||||
* @param array $permissions 权限列表
|
||||
* @param int $parentId 父级ID
|
||||
* @return array
|
||||
*/
|
||||
protected static function buildPermissionTree($permissions, $parentId = 0)
|
||||
{
|
||||
$tree = [];
|
||||
foreach ($permissions as $permission) {
|
||||
if ($permission['pid'] == $parentId) {
|
||||
$children = self::buildPermissionTree($permissions, $permission['id']);
|
||||
if ($children) {
|
||||
$permission['children'] = $children;
|
||||
}
|
||||
$tree[] = $permission;
|
||||
}
|
||||
}
|
||||
return $tree;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的权限编码列表
|
||||
* @param int $userId 用户ID
|
||||
* @return array
|
||||
*/
|
||||
public static function getUserPermissionCodes($userId)
|
||||
{
|
||||
$permissions = self::getUserPermissions($userId);
|
||||
return array_column($permissions, 'code');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user