提交 ee83593b 作者: 方治民

feat: 依赖升级、分页 Param/Vo 优化

上级 9b7c9bbf
/* (C) 2021 YiRing, Inc. */
package com.yiring.common.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.DecimalMin;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
/**
* 可选的公共的分页排序查询参数
*
* @author ifzm
* @version 0.1 2019/3/10 16:29
*/
@ApiModel(value = "OptionalPageParam", description = "可选的公共的分页排序查询参数")
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class OptionalPageParam implements Serializable {
@Serial
private static final long serialVersionUID = 6103761701912769946L;
@ApiModelProperty(value = "分页条数", example = "10", required = true)
@DecimalMin(value = "1", message = "分页条数不能小于1")
Integer pageSize;
@ApiModelProperty(value = "当前页数", example = "1", required = true)
@DecimalMin(value = "1", message = "当前页数不能小于1")
Integer pageNo;
@ApiModelProperty(value = "排序字段", example = "id")
String sortField;
@ApiModelProperty(value = "排序方向(ASC|DESC)", example = "DESC")
Sort.Direction sortOrder;
/**
* 根据参数构建分页对象
*
* @param param {@link OptionalPageParam}
* @return Pageable
*/
@SuppressWarnings({ "unused" })
public static Pageable toPageable(OptionalPageParam param) {
if (param == null) {
return Pageable.unpaged();
}
return PageParam.toPageable(param.getSortField(), param.getSortOrder(), param.pageSize, param.getPageNo());
}
}
......@@ -63,10 +63,23 @@ public class PageParam implements Serializable {
return Pageable.unpaged();
}
return PageParam.toPageable(param.getSortField(), param.getSortOrder(), param.pageSize, param.getPageNo());
}
/**
* 根据参数构建分页对象
*
* @param sortField 排序字段
* @param sortOrder 排序方向
* @param pageSize 分页大小
* @param pageNo 分页页码
* @return Pageable
*/
public static Pageable toPageable(String sortField, Sort.Direction sortOrder, Integer pageSize, Integer pageNo) {
Sort sort = Sort.unsorted();
if (Objects.nonNull(param.getSortField())) {
sort = Sort.by(new Sort.Order(param.getSortOrder(), param.getSortField()));
if (Objects.nonNull(sortField)) {
sort = Sort.by(new Sort.Order(sortOrder, sortField));
}
return PageRequest.of(param.getPageNo() - 1, param.getPageSize(), sort);
return PageRequest.of(pageSize - 1, pageNo, sort);
}
}
......@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import lombok.*;
import lombok.experimental.FieldDefaults;
......@@ -64,4 +65,13 @@ public class PageVo<T extends Serializable> implements Serializable {
vo.setLatest(latest);
return vo;
}
/**
* 构建一个空的分页查询结果
* @return PageVo
*/
@SuppressWarnings("unused")
public static <T extends Serializable> PageVo<T> empty() {
return PageVo.build(Collections.emptyList(), 0);
}
}
......@@ -29,7 +29,7 @@ ext {
// https://mvnrepository.com/artifact/cn.hutool/hutool-all
hutoolVersion = '5.8.4'
// https://mvnrepository.com/artifact/com.alibaba/fastjson
fastJsonVersion = '2.0.9'
fastJsonVersion = '2.0.10'
// https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core
xxlJobVersion = '2.3.1'
// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
......@@ -45,7 +45,7 @@ ext {
// https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter
mybatisPlusVersion = '3.5.2'
// https://mvnrepository.com/artifact/com.github.liaochong/myexcel
myexcelVersion = '4.2.0'
myexcelVersion = '4.2.1'
}
allprojects {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论