/** * API 响应相关类型定义 * * 统一三个项目的 API 响应格式。 * 运行时函数 isApiSuccess / executeApiAction 在 utils/api-helpers.ts 中, * 应从 '@aspect/shared/utils' 导入。 */ /** * 标准 API 响应结构 * * @example * ```ts * const res: ApiResponse = { code: '200', msg: 'success', data: { id: 1, name: 'test' } }; * ``` */ interface ApiResponse { /** 业务状态码,'200' 或 200 表示成功 */ code?: string | number; /** 业务状态码(兼容) */ errorCode?: string | number; /** 提示信息 */ msg?: string; /** 提示信息(兼容) */ message?: string; /** 提示信息(兼容) */ errorMessage?: string; /** 响应数据 */ data: T; } /** * 分页响应数据结构 * * 与后端 Java SDK 的 `PageResult` 字段对齐。 * * 后端分页字段在不同实现中可能返回 `pageNo` 或 `pageNum`。 * 这里同时声明两者,消费方按服务端实际返回字段读取即可。 * * @see Java SDK: com.keelcloud.sdk.javabase.model.PageResult */ interface PaginatedData { /** 数据列表 */ list: T[]; /** 总记录数 */ total: number; /** 当前页码 (MyBatis Plus 风格) */ pageNo?: number; /** 当前页码 (PageHelper 风格) */ pageNum?: number; /** 每页大小 */ pageSize?: number; /** 总页数 */ pages?: number; /** 是否有上一页 */ hasPrevious?: boolean; /** 是否有下一页 */ hasNext?: boolean; } /** * 分页 API 响应 */ type PaginatedResponse = ApiResponse>; /** * 分页请求参数 */ interface PaginationParams { /** 当前页码,从 1 开始 */ current?: number; /** 每页大小 */ pageSize?: number; } /** * ProTable 请求参数 (UmiJS/Ant Design Pro 风格) */ interface ProTableRequestParams extends PaginationParams { /** 排序字段 */ sort?: Record; /** 筛选条件 */ filter?: Record; } /** * ProTable 请求响应 (适配 ProTable 的 request 返回格式) */ interface ProTableResponse { data: T[]; success: boolean; total: number; } export type { ApiResponse as A, PaginatedData as P, PaginatedResponse as a, PaginationParams as b, ProTableRequestParams as c, ProTableResponse as d };