package com.estate.expert.admin.domain.common.request; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import javax.validation.constraints.Min; @ApiModel("分页请求") @Data @AllArgsConstructor public class PageReq { @ApiModelProperty(value = "当前页", notes = "从0开始") @Min(0) private Integer page = 1; @ApiModelProperty(value = "每页大小", notes = "从1开始") @Min(1) private Integer size = 10; @ApiModelProperty(value = "排序字段", notes = "和查找的对象的字段名一致") private String orderField = null; @ApiModelProperty(value = "是否升序") private boolean asc = true; // default public static PageReq defaultPageReq() { return new PageReq(0, 10, null, true); } public static PageReq of(Integer currPage, Integer pageSize) { return new PageReq(currPage, pageSize, null, true); } public static PageReq of(Integer currPage, Integer pageSize, String orderField, boolean asc) { return new PageReq(currPage, pageSize, orderField, asc); } public static PageReq maxPageReq() { return new PageReq(0, Integer.MAX_VALUE, null, true); } public PageRequest toPageRequest() { if(orderField == null || orderField.isEmpty()) { return PageRequest.of(page, size); } return PageRequest.of(page, size, asc ? Sort.by(orderField).ascending() : Sort.by(orderField).descending()); } }