PageResult.java 1.92 KB
package com.xly.erp.common.response;

import java.io.Serializable;
import java.util.List;

/**
 * 通用分页响应体(docs/04 § 1.4 / § 3.2 SSoT)。
 *
 * <p>REQ-USR-003 T1【本 REQ 新增公共契约】。分页接口统一返回 {@code Result<PageResult<T>>},
 * 含当前页数据 {@code records}、真实总记录数 {@code total}、当前页号 {@code pageNum}
 * (数据越界钳制后的实际页号)、每页条数 {@code pageSize}。后续分页 REQ 复用。</p>
 *
 * @param <T> 当前页元素类型
 */
public class PageResult<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 当前页数据。 */
    private List<T> records;
    /** 真实总记录数。 */
    private long total;
    /** 当前页号(数据越界钳制后的实际页号)。 */
    private long pageNum;
    /** 每页条数。 */
    private long pageSize;

    public PageResult() {
    }

    public PageResult(List<T> records, long total, long pageNum, long pageSize) {
        this.records = records;
        this.total = total;
        this.pageNum = pageNum;
        this.pageSize = pageSize;
    }

    /**
     * 静态工厂:从分页要素装配。
     */
    public static <T> PageResult<T> of(List<T> records, long total, long pageNum, long pageSize) {
        return new PageResult<>(records, total, pageNum, pageSize);
    }

    public List<T> getRecords() {
        return records;
    }

    public void setRecords(List<T> records) {
        this.records = records;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public long getPageNum() {
        return pageNum;
    }

    public void setPageNum(long pageNum) {
        this.pageNum = pageNum;
    }

    public long getPageSize() {
        return pageSize;
    }

    public void setPageSize(long pageSize) {
        this.pageSize = pageSize;
    }
}