import type { RoleDto, RoleGetListQuery, RoleUpsertInput } from './account-types'; import type { FlPagedResult } from './types'; import { requestClient } from '#/api/request'; const PATH = '/rbac-role'; function buildRoleBody(input: RoleUpsertInput) { const codes = [ ...new Set( (input.accessPermissionCodes ?? []) .map((x) => String(x).trim()) .filter(Boolean), ), ]; return { roleName: input.roleName, roleCode: input.roleCode, remark: input.remark ?? null, dataScope: input.dataScope ?? 0, state: input.state, orderNum: input.orderNum ?? null, accessPermissions: codes.length > 0 ? JSON.stringify(codes) : null, }; } export function rbacRoleList(params?: RoleGetListQuery) { return requestClient.get>(PATH, { params, errorMessageMode: 'message', }); } export function rbacRoleInfo(id: string) { return requestClient.get(`${PATH}/${encodeURIComponent(id)}`, { errorMessageMode: 'message', }); } export function rbacRoleAdd(data: RoleUpsertInput) { return requestClient.postWithMsg(PATH, buildRoleBody(data)); } export function rbacRoleUpdate(id: string, data: RoleUpsertInput) { return requestClient.putWithMsg( `${PATH}/${encodeURIComponent(id)}`, buildRoleBody(data), ); } /** 与美国版一致:DELETE body 为 ID 数组 */ export function rbacRoleRemove(id: string) { return requestClient.deleteWithMsg(PATH, { data: [id], }); }