/** * 分页结果类 * 与Java PageResult格式完全一致 * * 格式: * { * "currentPage": 1, // 当前页 * "perPage": 15, // 每页大小 * "total": 100, // 总记录数 * "data": [] // 数据列表 * } */ export class PageResult { /** * 当前请求页 */ currentPage: number; /** * 每页大小 */ perPage: number; /** * 总记录数 */ total: number; /** * 记录结果 */ data: T[]; constructor(page: number, limit: number, total: number = 0, data: T[] = []) { this.currentPage = page; this.perPage = limit; this.total = total; this.data = data; } /** * 创建分页结果 * @param page 页码 * @param limit 每页数量 * @returns PageResult */ static build(page: number, limit: number): PageResult { return new PageResult(page, limit); } /** * 创建分页结果 * @param page 页码 * @param limit 每页数量 * @param total 总记录数 * @returns PageResult */ static buildWithTotal(page: number, limit: number, total: number): PageResult { return new PageResult(page, limit, total); } /** * 创建分页结果 * @param page 页码 * @param limit 每页数量 * @param total 总记录数 * @param data 数据列表 * @returns PageResult */ static buildWithData(page: number, limit: number, total: number, data: T[]): PageResult { return new PageResult(page, limit, total, data); } /** * 设置数据 * @param data 数据列表 * @returns PageResult */ setData(data: T[]): PageResult { this.data = data; return this; } /** * 设置总数 * @param total 总记录数 * @returns PageResult */ setTotal(total: number): PageResult { this.total = total; return this; } /** * 转换为JSON格式 * @returns object */ toJSON(): object { return { currentPage: this.currentPage, perPage: this.perPage, total: this.total, data: this.data, }; } }