// ============================================================================ // 【文件说明】SearchPageDTO.cs - 搜索分页结果 DTO // ============================================================================ // 这是搜索接口返回的分页数据结构。 // // 【分页设计说明】 // 分页是 Web 开发的常见需求: // - 数据量大时,不可能一次返回所有数据 // - 分页返回:每页 N 条,返回总数和当前页数据 // // 【与 Java Spring Boot 的对比】 // Java 若依的分页结构: // public class TableDataInfo { // private long total; // 总记录数 // private List rows; // 数据列表 // private int code; // 状态码 // private String msg; // 消息 // } // // C# 这里更简洁,只包含核心字段: // - Total:总记录数 // - Rows:当前页数据 // // Admin.NET 框架会自动包装统一的返回格式,所以 DTO 不需要 code/msg 字段。 // ============================================================================ namespace Admin.NET.Plugin.HwPortal; /// /// 搜索分页结果。 /// /// 【业务场景】 /// 前端搜索接口返回的数据结构: /// - Total:总记录数(用于前端分页组件) /// - Rows:当前页数据列表 /// /// /// 【设计模式 - 分页 DTO】 /// 这是标准的分页数据结构: /// - 不包含页码、每页条数(这些由前端维护) /// - 只返回总数和数据列表 /// - 适用于任何分页场景 /// /// public class SearchPageDTO { /// /// 总记录数。 /// /// 【业务说明】 /// 用于前端计算总页数: /// - 总页数 = Math.Ceiling(Total / PageSize) /// - 前端分页组件需要此值显示页码 /// /// /// 【C# 语法知识点 - long 类型】 /// long 是 64 位整数: /// - 范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 /// - 对比 Java:Java 的 long 也是 64 位 /// - 为什么用 long?数据量可能超过 int 的 21 亿上限 /// /// public long Total { get; set; } /// /// 当前页数据列表。 /// /// 【业务说明】 /// 当前页的搜索结果列表。 /// 每个元素是一个 SearchResultDTO 对象。 /// /// /// 【C# 语法知识点 - 泛型集合】 /// List<SearchResultDTO> 是泛型集合: /// - List:动态数组,可以添加、删除元素 /// - <SearchResultDTO>:泛型参数,指定元素类型 /// /// 对比 Java: /// Java: List<SearchResultDTO> rows = new ArrayList<>(); /// C#: List<SearchResultDTO> Rows { get; set; } = new(); /// /// C# 的 = new() 是目标类型 new 表达式,编译器自动推断类型。 /// /// public List Rows { get; set; } = new(); }