feat: add role management API service with permission support

This commit is contained in:
张翔
2026-03-20 07:58:45 +08:00
parent cf49e2f2d1
commit c3716bf732
+80
View File
@@ -0,0 +1,80 @@
import request from '@/utils/request'
import type { PageResponse } from './user.api'
export interface Role {
id: number
name: string
code: string
description: string
status: 'ACTIVE' | 'INACTIVE'
permissions: Permission[]
createdAt: string
updatedAt: string
}
export interface Permission {
id: number
name: string
code: string
resource: string
action: string
}
export interface CreateRoleRequest {
name: string
code: string
description: string
permissions: number[]
}
export interface UpdateRoleRequest {
name?: string
description?: string
status?: 'ACTIVE' | 'INACTIVE'
permissions?: number[]
}
export interface RolePageRequest {
page: number
size: number
name?: string
code?: string
status?: string
sortBy?: string
sortOrder?: 'asc' | 'desc'
}
export const roleApi = {
getAll: () =>
request.get<Role[]>('/roles'),
getPage: (params: RolePageRequest) =>
request.get<PageResponse<Role>>('/roles/page', { params }),
getById: (id: number) =>
request.get<Role>(`/roles/${id}`),
create: (data: CreateRoleRequest) =>
request.post<Role>('/roles', data),
update: (id: number, data: UpdateRoleRequest) =>
request.put<Role>(`/roles/${id}`, data),
delete: (id: number) =>
request.delete<void>(`/roles/${id}`),
batchDelete: (ids: number[]) =>
request.post<void>('/roles/batch-delete', { ids }),
updateStatus: (id: number, status: 'ACTIVE' | 'INACTIVE') =>
request.put<void>(`/roles/${id}/status`, { status }),
assignPermissions: (id: number, permissionIds: number[]) =>
request.post<void>(`/roles/${id}/permissions`, { permissionIds }),
getPermissions: (id: number) =>
request.get<Permission[]>(`/roles/${id}/permissions`),
getAllPermissions: () =>
request.get<Permission[]>('/permissions'),
}