library-picturebook-activity/frontend/src/api/roles.ts
2025-11-23 14:04:20 +08:00

84 lines
1.8 KiB
TypeScript

import request from "@/utils/request";
import type { PaginationParams, PaginationResponse } from "@/types/api";
export interface Role {
id: number;
name: string;
code: string;
description?: string;
validState?: number;
creator?: number;
modifier?: number;
createTime?: string;
modifyTime?: string;
permissions?: Array<{
id: number;
permission: {
id: number;
name: string;
code: string;
resource: string;
action: string;
};
}>;
}
export interface CreateRoleForm {
name: string;
code: string;
description?: string;
permissionIds?: number[];
}
export interface UpdateRoleForm {
name?: string;
code?: string;
description?: string;
permissionIds?: number[];
}
// 获取角色列表
export async function getRolesList(
params: PaginationParams
): Promise<PaginationResponse<Role>> {
const response = await request.get<any, PaginationResponse<Role>>("/roles", {
params,
});
return response;
}
// 获取单个角色详情
export async function getRoleDetail(id: number): Promise<Role> {
const response = await request.get<any, Role>(`/roles/${id}`);
return response;
}
// 创建角色
export async function createRole(data: CreateRoleForm): Promise<Role> {
const response = await request.post<any, Role>("/roles", data);
return response;
}
// 更新角色
export async function updateRole(
id: number,
data: UpdateRoleForm
): Promise<Role> {
const response = await request.patch<any, Role>(`/roles/${id}`, data);
return response;
}
// 删除角色
export async function deleteRole(id: number): Promise<void> {
return await request.delete<any, void>(`/roles/${id}`);
}
// 兼容性导出:保留 rolesApi 对象
export const rolesApi = {
getList: getRolesList,
getDetail: getRoleDetail,
create: createRole,
update: updateRole,
delete: deleteRole,
};