feat: add role management API service with permission support
This commit is contained in:
@@ -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'),
|
||||
}
|
||||
Reference in New Issue
Block a user