import { requestClient } from '#/api/request';

const prefix = 'role/';
/**
 * 分页查询用户列表
 * @param data
 */
export async function getRoleList(data: any) {
  return requestClient.get<any>(`${prefix}list`, { params: data });
}
/**
 * 分页查询用户列表
 * @param data
 */
export async function getRoleOption(data: any) {
  return requestClient.get<any>(`${prefix}option`, { params: data });
}

/**
 * 获取详情
 * @param id
 */
export async function getRoleInfo(id: number) {
  return requestClient.get<any>(`${prefix}detail`, { params: { id } });
}

/**
 * 查询菜单下拉框
 * @param data
 */
export async function getMenuIdsByRoleIds(data: any) {
  return requestClient.get<any>(`${prefix}get-menu-ids-by-role-ids`, {
    params: {
      role_id: data.id,
    },
  });
}

/**
 * 编辑角色
 * @param data
 */
export async function saveRoleMenu(data: Record<string, any>) {
  return requestClient.post<any>(`${prefix}save-role-menu`, data);
}

/**
 * 新增角色
 * @param data
 */
export async function createRole(data: Record<string, any>) {
  return requestClient.post<any>(`${prefix}create`, data);
}

/**
 * 编辑角色
 * @param data
 */
export async function updateRole(data: Record<string, any>) {
  return requestClient.post<any>(`${prefix}update`, data);
}

/**
 * 删除角色
 * @param data
 */
export async function deleteRole(data: Record<string, any>) {
  return requestClient.post<any>(`${prefix}delete`, data);
}

const workbenchPrefix = 'role-workbench-widget/';

/**
 * 工作台模块可选字典（code + 中文名）
 */
export async function getWorkbenchWidgetOptions() {
  return requestClient.get<any>(`${workbenchPrefix}options`);
}

/**
 * 按角色获取已配置的工作台模块（配置回显）
 */
export async function getWorkbenchWidgetByRoleId(roleId: number) {
  return requestClient.get<any>(`${workbenchPrefix}get-by-role-id`, {
    params: { role_id: roleId },
  });
}

/**
 * 批量保存角色工作台模块（按数组顺序写排序）
 */
export async function batchSaveWorkbenchWidget(data: {
  role_id: number;
  widget_codes: string[];
}) {
  return requestClient.post<any>(`${workbenchPrefix}batch-save`, data);
}

const wxEntryPrefix = 'wx-workbench-entry/';

/**
 * 小程序功能入口全量字典（角色分配抽屉可选项，含分组）
 */
export async function getWxWorkbenchEntryOptions() {
  return requestClient.get<any>(`${wxEntryPrefix}options`);
}

/**
 * 按角色获取已分配的小程序功能入口（配置回显，按排序返回）
 */
export async function getWxWorkbenchEntryByRoleId(roleId: number) {
  return requestClient.get<any>(`${wxEntryPrefix}get-by-role-id`, {
    params: { role_id: roleId },
  });
}

/**
 * 批量保存角色的小程序功能入口分配（按数组顺序写排序）
 */
export async function batchSaveWxWorkbenchEntry(data: {
  entry_ids: number[];
  role_id: number;
}) {
  return requestClient.post<any>(`${wxEntryPrefix}batch-save`, data);
}
