2026-04-02 11:20:20 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 权限服务
|
|
|
|
|
|
*
|
|
|
|
|
|
* 提供权限管理相关 API 调用
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
import { get, post, put, del } from '@/lib/http/client'
|
2026-04-24 07:30:18 +08:00
|
|
|
|
import type {
|
|
|
|
|
|
Permission,
|
|
|
|
|
|
CreatePermissionRequest,
|
|
|
|
|
|
UpdatePermissionRequest,
|
|
|
|
|
|
PermissionType,
|
|
|
|
|
|
} from '@/types/permission'
|
|
|
|
|
|
|
|
|
|
|
|
type RawPermissionType = 0 | 1 | 2
|
|
|
|
|
|
|
|
|
|
|
|
interface RawPermission extends Omit<Permission, 'type' | 'children'> {
|
|
|
|
|
|
type: RawPermissionType
|
|
|
|
|
|
children?: RawPermission[]
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function normalizePermissionType(type: RawPermissionType): PermissionType {
|
|
|
|
|
|
switch (type) {
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
return 'menu'
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
return 'button'
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
return 'api'
|
|
|
|
|
|
default:
|
|
|
|
|
|
return 'api'
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function serializePermissionType(type: PermissionType): RawPermissionType {
|
|
|
|
|
|
switch (type) {
|
|
|
|
|
|
case 'menu':
|
|
|
|
|
|
return 0
|
|
|
|
|
|
case 'button':
|
|
|
|
|
|
return 1
|
|
|
|
|
|
case 'api':
|
|
|
|
|
|
return 2
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function normalizePermission(permission: RawPermission): Permission {
|
|
|
|
|
|
return {
|
|
|
|
|
|
...permission,
|
|
|
|
|
|
type: normalizePermissionType(permission.type),
|
|
|
|
|
|
children: permission.children?.map(normalizePermission),
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-04-02 11:20:20 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取权限树
|
|
|
|
|
|
* GET /api/v1/permissions/tree
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function getPermissionTree(): Promise<Permission[]> {
|
2026-04-24 07:30:18 +08:00
|
|
|
|
return get<RawPermission[]>('/permissions/tree').then((permissions) => permissions.map(normalizePermission))
|
2026-04-02 11:20:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取所有权限列表(扁平)
|
|
|
|
|
|
* GET /api/v1/permissions
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function listPermissions(): Promise<Permission[]> {
|
2026-04-24 07:30:18 +08:00
|
|
|
|
return get<RawPermission[]>('/permissions').then((permissions) => permissions.map(normalizePermission))
|
2026-04-02 11:20:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取权限详情
|
|
|
|
|
|
* GET /api/v1/permissions/:id
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function getPermission(id: number): Promise<Permission> {
|
2026-04-24 07:30:18 +08:00
|
|
|
|
return get<RawPermission>(`/permissions/${id}`).then(normalizePermission)
|
2026-04-02 11:20:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 创建权限
|
|
|
|
|
|
* POST /api/v1/permissions
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function createPermission(data: CreatePermissionRequest): Promise<Permission> {
|
2026-04-24 07:30:18 +08:00
|
|
|
|
return post<RawPermission>('/permissions', {
|
|
|
|
|
|
...data,
|
|
|
|
|
|
type: serializePermissionType(data.type),
|
|
|
|
|
|
}).then(normalizePermission)
|
2026-04-02 11:20:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 更新权限
|
|
|
|
|
|
* PUT /api/v1/permissions/:id
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function updatePermission(id: number, data: UpdatePermissionRequest): Promise<Permission> {
|
2026-04-24 07:30:18 +08:00
|
|
|
|
return put<RawPermission>(`/permissions/${id}`, data).then(normalizePermission)
|
2026-04-02 11:20:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 删除权限
|
|
|
|
|
|
* DELETE /api/v1/permissions/:id
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function deletePermission(id: number): Promise<void> {
|
|
|
|
|
|
return del<void>(`/permissions/${id}`)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 更新权限状态
|
|
|
|
|
|
* PUT /api/v1/permissions/:id/status
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function updatePermissionStatus(id: number, status: 0 | 1): Promise<void> {
|
|
|
|
|
|
return put<void>(`/permissions/${id}/status`, { status })
|
|
|
|
|
|
}
|