package {{basePackage}}.dto;

import java.util.List;

/**
 * {{ModuleName}} 分页响应封装 — 提供统一的分页数据结构。
 * @param <T> 分页数据类型
 */
public class {{ModuleName}}PageResponse<T> {

    /** 当前页数据列表 */
    private List<T> records;

    /** 总记录数 */
    private long total;

    /** 当前页码，从 1 开始 */
    private int page;

    /** 每页数量 */
    private int size;

    /** 总页数 */
    private int totalPages;

    /**
     * 构造分页响应。
     * @param records 当前页数据列表
     * @param total   总记录数
     * @param page    当前页码
     * @param size    每页数量
     */
    public {{ModuleName}}PageResponse(List<T> records, long total, int page, int size) {
        this.records = records;
        this.total = total;
        this.page = page;
        this.size = size;
        // 向上取整计算总页数
        this.totalPages = (int) Math.ceil((double) total / size);
    }

    /** 获取当前页数据列表 */
    public List<T> getRecords() { return records; }
    /** 获取总记录数 */
    public long getTotal() { return total; }
    /** 获取当前页码 */
    public int getPage() { return page; }
    /** 获取每页数量 */
    public int getSize() { return size; }
    /** 获取总页数 */
    public int getTotalPages() { return totalPages; }
}
