package com.rongyichuang.common.dto; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; /** * 分页请求DTO */ public class PageRequest { private Integer page = 0; private Integer size = 10; private String sort; private String order = "desc"; public PageRequest() {} public PageRequest(Integer page, Integer size) { this.page = page; this.size = size; } /** * 转换为Spring Data的Pageable对象 * 注意:前端页码从1开始,Spring Data页码从0开始,需要转换 */ public Pageable toPageable() { Sort sortObj = Sort.unsorted(); if (sort != null && !sort.isEmpty()) { Sort.Direction direction = "asc".equalsIgnoreCase(order) ? Sort.Direction.ASC : Sort.Direction.DESC; sortObj = Sort.by(direction, sort); } // 将前端的1-based页码转换为Spring Data的0-based页码 int springDataPage = Math.max(0, page - 1); return org.springframework.data.domain.PageRequest.of(springDataPage, size, sortObj); } // Getters and Setters public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } public String getSort() { return sort; } public void setSort(String sort) { this.sort = sort; } public String getOrder() { return order; } public void setOrder(String order) { this.order = order; } }