This commit is contained in:
N1KO 2024-11-08 16:24:52 +08:00
parent 027d0b6a5f
commit 7fbacb8b3e
6 changed files with 176 additions and 272 deletions

View File

@ -0,0 +1,62 @@
package com.baogutang.frame.common.res;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Setter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
*
* @description:
*
* @author: nikooh
* @date: 2024/11/08 : 16:18
*/
@ApiModel("通用Page请求参数")
@Data
public abstract class AbstractPageParam implements Serializable {
private static final long serialVersionUID = 2897098106246970752L;
@ApiModelProperty("页数")
@Setter
private Integer pageNum;
@ApiModelProperty("页面大小")
@Setter
private Integer pageSize;
@ApiModelProperty("排序条件")
private List<OrderBy> orders = new ArrayList<>();
@ApiModel("排序")
@Data
public static class OrderBy implements Serializable {
private static final long serialVersionUID = -2936335557980068706L;
@ApiModelProperty("排序列名")
private String columnName;
@ApiModelProperty("是否降序")
private boolean desc;
}
public Integer getPageNum() {
pageNum = pageNum == null ? 1 : pageNum;
return pageNum;
}
public Integer getPageSize() {
if (pageSize == null || pageSize > 100) {
pageSize = 10;
}
return pageSize;
}
}

View File

@ -1,43 +0,0 @@
package com.baogutang.frame.common.response;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.util.List;
/**
* @param <T>
* @author N1KO
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PageDTO<T> {
@ApiModelProperty("列表数据")
private List<T> list;
@ApiModelProperty("总记录数")
private Integer totalCount;
@ApiModelProperty("每页记录数")
private Integer pageSize;
@ApiModelProperty("总页数")
private Integer totalPage;
@ApiModelProperty("当前页数")
private Integer currPage;
public PageDTO(List<T> list, PageInfo pageInfo) {
this.list = list;
this.totalCount = pageInfo.getTotalCount();
this.pageSize = pageInfo.getPageSize();
this.totalPage = pageInfo.getTotalPage();
this.currPage = pageInfo.getCurrPage();
}
}

View File

@ -1,101 +0,0 @@
package com.baogutang.frame.common.response;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* @author N1KO
*/
@ApiModel("分页信息")
@Data
@ToString
@Accessors(chain = true)
public class PageInfo {
/**
* 当前页码
*/
@ApiModelProperty("当前页码")
private Integer currPage = 1;
/**
* 一页几个
*/
@ApiModelProperty("一页多少个")
private Integer pageSize = Integer.MAX_VALUE;
/**
* 总页数
*/
@ApiModelProperty("总页数")
private Integer totalPage = 0;
/**
* 总记录数
*/
@ApiModelProperty("总记录数")
private Integer totalCount;
public PageInfo() {
}
public PageInfo(Number pageSize, Number currentPage, Number totalCount, Number totalPage) {
this(pageSize, currentPage);
initTotleRecord(totalCount, totalPage);
}
public PageInfo(Number pageSize, Number currentPage) {
this.pageSize = pageSize == null ? null : pageSize.intValue();
this.currPage = currentPage == null ? 1 : currentPage.intValue();
}
@JsonIgnore
public PageInfo initTotleRecord(Number totalRecord, Number totalPage) {
this.totalCount = totalRecord == null ? null : totalRecord.intValue();
this.totalPage = totalPage == null ? null : totalPage.intValue();
return this;
}
@JsonIgnore
public Integer getFrom() {
return pageSize != null ? (currPage - 1) * pageSize : null;
}
@JsonIgnore
public Integer getTo() {
Integer from = getFrom();
return from != null ? from + pageSize : null;
}
/**
* 获取总页数
**/
@JsonIgnore
public Integer getAllPage() {
totalPage = totalCount != null && pageSize != null ? (this.totalCount - 1) / this.pageSize + 1 : null;
return totalPage;
}
@JsonIgnore
public Type getType() {
return pageSize == null ? Type.ALL : Type.PAGE;
}
/**
* 分页类型
*/
public static enum Type {
/**
* 全部
*/
ALL,
/**
* 分页
*/
PAGE;
}
}

View File

@ -1,4 +1,4 @@
package com.baogutang.frame.core.utils;
package com.baogutang.frame.common.response;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiModel;
@ -12,28 +12,34 @@ import java.util.List;
* 分页工具类
*/
@ApiModel(value = "分页结果数据", description = "分页结果数据")
public class PageUtils<T> implements Serializable {
private static final long serialVersionUID = 1L;
public class Pages<T> implements Serializable {
private static final long serialVersionUID = -4776072864343943792L;
/**
* 总记录数
*/
@ApiModelProperty("总记录数")
private int totalCount;
/**
* 每页记录数
*/
@ApiModelProperty("每页记录数")
private int pageSize;
/**
* 总页数
*/
@ApiModelProperty("总页数")
private int totalPage;
/**
* 当前页数
*/
@ApiModelProperty("当前页数")
private int currPage;
/**
* 列表数据
*/
@ -43,7 +49,7 @@ public class PageUtils<T> implements Serializable {
/**
* 分页
*/
public PageUtils(IPage<T> page) {
public Pages(IPage<T> page) {
this.list = page.getRecords();
this.totalCount = (int) page.getTotal();
this.pageSize = (int) page.getSize();
@ -59,7 +65,7 @@ public class PageUtils<T> implements Serializable {
* @param pageSize 每页记录数
* @param currPage 当前页数
*/
public PageUtils(List<T> list, int totalCount, int pageSize, int currPage) {
public Pages(List<T> list, int totalCount, int pageSize, int currPage) {
this.list = list;
this.totalCount = totalCount;
this.pageSize = pageSize;
@ -68,12 +74,12 @@ public class PageUtils<T> implements Serializable {
}
public PageUtils() {
public Pages() {
}
public static <T> PageUtils<T> getPages(IPage<T> page) {
PageUtils<T> iPage = new PageUtils<>();
public static <T> Pages<T> getPages(IPage<T> page) {
Pages<T> iPage = new Pages<>();
iPage.setList(page.getRecords());
iPage.setTotalCount((int) page.getTotal());
iPage.setCurrPage((int) page.getCurrent());
@ -90,9 +96,9 @@ public class PageUtils<T> implements Serializable {
* @param list 数据集
* @return PageUtils<T>
*/
public PageUtils<T> getPages(Integer pageNum, Integer pageSize, List<T> list) {
public Pages<T> getPages(Integer pageNum, Integer pageSize, List<T> list) {
int pages = list.size() % pageSize == 0 ? list.size() / pageSize : list.size() / pageSize + 1;
PageUtils<T> iPage = new PageUtils<>();
Pages<T> iPage = new Pages<>();
iPage.setTotalCount(list.size());
iPage.setCurrPage(pageNum);
iPage.setTotalPage(pages);

View File

@ -1,118 +0,0 @@
package com.baogutang.frame.common.response;
import com.baogutang.frame.common.constant.enums.ResponseEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author N1KO
* @param <T>
*/
@Data
@AllArgsConstructor
@Builder
public class ResponsePage<T> implements Serializable {
/**
* 成功
*/
public static final int SUCCESS_CODE = 200;
/**
* 失败
*/
public static final int FAIL_CODE = 300;
/**
* 参数不合法
*/
public static final int PARAM_ILLEGAL_CODE = 301;
/**
* 响应码
*/
@ApiModelProperty("响应码")
private int code;
/**
* 响应信息
*/
@ApiModelProperty("响应信息")
private String message;
/**
* 业务数据
*/
@ApiModelProperty("业务数据")
private PageDTO<T> data;
public ResponsePage() {
}
public static <T> ResponsePage<T> ok() {
return restResult(null, null, SUCCESS_CODE, null);
}
public static <T> ResponsePage<T> ok(PageInfo pageInfo, List<T> data) {
return restResult(pageInfo, data, ResponseEnum.COMMON_SUCCESS.getCode(), ResponseEnum.COMMON_SUCCESS.getMessage());
}
public static <T> ResponsePage<T> ok(PageInfo pageInfo, List<T> data, int i, String message) {
return restResult(pageInfo, data, SUCCESS_CODE, null);
}
public static <T> ResponsePage<T> ok(PageInfo pageInfo, List<T> data, String message) {
return restResult(pageInfo, data, SUCCESS_CODE, message);
}
public static <T> ResponsePage<T> result(PageInfo pageInfo, List<T> data, int code, String message) {
return restResult(pageInfo, data, code, message);
}
public static <T> ResponsePage<T> failed() {
return restResult(null, null, FAIL_CODE, null);
}
public static <T> ResponsePage<T> failed(String message) {
return restResult(null, null, FAIL_CODE, message);
}
public static <T> ResponsePage<T> failed(int code, String message) {
return restResult(null, null, code, message);
}
public static <T> ResponsePage<T> failed(PageInfo pageInfo, List<T> data) {
return restResult(pageInfo, data, FAIL_CODE, null);
}
public static <T> ResponsePage<T> failed(PageInfo pageInfo, List<T> data, String message) {
return restResult(pageInfo, data, FAIL_CODE, message);
}
public static <T> ResponsePage<T> restResult(PageInfo pageInfo, List<T> data, int code, String message) {
ResponsePage<T> apiResult = new ResponsePage<>();
apiResult.setCode(code);
apiResult.setData(new PageDTO<T>(data, pageInfo));
apiResult.setMessage(message);
return apiResult;
}
public Boolean isSuccess() {
return (this.code == SUCCESS_CODE);
}
public static <T> ResponsePage<T> restfulResult(ResponseEnum respEnum, PageInfo pageInfo, List<T> data) {
ResponsePage<T> apiResult = new ResponsePage<>();
apiResult.setCode(respEnum.getCode());
apiResult.setMessage(respEnum.getMessage());
apiResult.setData(new PageDTO<T>(data, pageInfo));
return apiResult;
}
}

View File

@ -0,0 +1,98 @@
package com.baogutang.frame.common.utils;
import com.baogutang.frame.common.res.AbstractPageParam;
import com.baogutang.frame.common.response.Pages;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import java.util.stream.Collectors;
/**
* @description:
* @author: nikooh
* @date: 2024/03/07 : 20:17
*/
public class PageUtil {
private PageUtil() {
// private empty constructor
}
/**
* general method of paging query
*
* @param queryFunction page query function
* @param pageParam page param
* @param beanCastFunction bean cast function
* @param <T> entity class
* @param <U> query parameter
* @param <R> return bean
* @return Page
*/
public static <T, U extends AbstractPageParam, R> Pages<R> page(UnaryOperator<Page<T>> queryFunction, U pageParam, Function<T, R> beanCastFunction) {
Page<T> pageReq = new Page<>(pageParam.getPageNum(), pageParam.getPageSize());
Page<T> pageRes = queryFunction.apply(pageReq);
List<R> rPageRes = pageRes.getRecords().stream()
.map(beanCastFunction)
.collect(Collectors.toList());
return new Pages<>(rPageRes, (int) pageRes.getTotal(), (int) pageRes.getSize(), (int) pageRes.getCurrent());
}
/**
*
*
* @param orders
* @param queryWrapper
* @param <T> T
*/
public static <T> void defaultOrders(List<AbstractPageParam.OrderBy> orders, QueryWrapper<T> queryWrapper) {
defaultOrder(orders, queryWrapper, null);
}
/**
* ,
*
* @param orders
* @param queryWrapper
* @param defaultColumn
* @param <T> T
*/
public static <T, R> void defaultOrder(List<AbstractPageParam.OrderBy> orders, QueryWrapper<T> queryWrapper, SFunction<T, R> defaultColumn) {
if (CollectionUtils.isEmpty(orders)) {
defaultOrderProcess(queryWrapper, defaultColumn);
return;
}
orders.forEach(orderBy -> {
//
if (StringUtils.isBlank(orderBy.getColumnName())) {
defaultOrderProcess(queryWrapper, defaultColumn);
} else {
if (orderBy.isDesc()) {
queryWrapper.orderByDesc(orderBy.getColumnName());
} else {
queryWrapper.orderByAsc(orderBy.getColumnName());
}
}
});
}
/**
* @param queryWrapper
* @param defaultColumn
* @param <T> t
* @param <R> r
*/
private static <T, R> void defaultOrderProcess(QueryWrapper<T> queryWrapper, SFunction<T, R> defaultColumn) {
if (defaultColumn != null) {
queryWrapper.lambda()
.orderBy(true, false, defaultColumn);
}
}
}