68 lines
1.6 KiB
Java
68 lines
1.6 KiB
Java
|
|
package com.ruoyi.cms.util;
|
||
|
|
|
||
|
|
|
||
|
|
import com.ruoyi.cms.domain.dto.PageDTO;
|
||
|
|
import com.ruoyi.cms.domain.vo.PageVO;
|
||
|
|
|
||
|
|
import java.util.ArrayList;
|
||
|
|
import java.util.List;
|
||
|
|
import java.util.Optional;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 分页工具类
|
||
|
|
*
|
||
|
|
* @author 马宝龙
|
||
|
|
* @date 2026/6/26
|
||
|
|
*/
|
||
|
|
public class PageUtil {
|
||
|
|
private PageUtil() {
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 返回空分页对象
|
||
|
|
*
|
||
|
|
* @param <T> 类型
|
||
|
|
* @return 空分页
|
||
|
|
*/
|
||
|
|
public static <T> PageVO<T> empty() {
|
||
|
|
return PageVO.<T>builder()
|
||
|
|
.list(new ArrayList<>())
|
||
|
|
.total(0L)
|
||
|
|
.totalPage(0)
|
||
|
|
.isFirst(true)
|
||
|
|
.isLast(true)
|
||
|
|
.build();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 初始化分页
|
||
|
|
*
|
||
|
|
* @param list 内容列表
|
||
|
|
* @param total 总数
|
||
|
|
* @param pageNo 页码
|
||
|
|
* @param pageSize 每页数量
|
||
|
|
* @param <T> 类型
|
||
|
|
* @return 分页
|
||
|
|
*/
|
||
|
|
public static <T> PageVO<T> init(List<T> list, Long total, Integer pageNo, Integer pageSize) {
|
||
|
|
|
||
|
|
total = Optional.ofNullable(total).orElse(0L);
|
||
|
|
pageNo = Optional.ofNullable(pageNo).orElse(PageDTO.PAGE_NO);
|
||
|
|
pageSize = Optional.ofNullable(pageSize).orElse(PageDTO.PAGE_SIZE);
|
||
|
|
|
||
|
|
int totalPage = (int) (total / pageSize);
|
||
|
|
int morePage = (int) (total % pageSize);
|
||
|
|
if (morePage > 0) {
|
||
|
|
totalPage += 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
return PageVO.<T>builder()
|
||
|
|
.list(list)
|
||
|
|
.total(total)
|
||
|
|
.totalPage(totalPage)
|
||
|
|
.isFirst(pageNo.equals(PageDTO.PAGE_NO))
|
||
|
|
.isLast(pageNo.equals(totalPage))
|
||
|
|
.build();
|
||
|
|
}
|
||
|
|
}
|