rbac-role.ts 1.47 KB
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<FlPagedResult<RoleDto>>(PATH, {
    params,
    errorMessageMode: 'message',
  });
}

export function rbacRoleInfo(id: string) {
  return requestClient.get<RoleDto>(`${PATH}/${encodeURIComponent(id)}`, {
    errorMessageMode: 'message',
  });
}

export function rbacRoleAdd(data: RoleUpsertInput) {
  return requestClient.postWithMsg<RoleDto>(PATH, buildRoleBody(data));
}

export function rbacRoleUpdate(id: string, data: RoleUpsertInput) {
  return requestClient.putWithMsg<RoleDto>(
    `${PATH}/${encodeURIComponent(id)}`,
    buildRoleBody(data),
  );
}

/** 与美国版一致:DELETE body 为 ID 数组 */
export function rbacRoleRemove(id: string) {
  return requestClient.deleteWithMsg<void>(PATH, {
    data: [id],
  });
}