jiangping
2025-06-17 64fa2c33cd645e86d4e2a8c34c7881ea4aa678cf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.doumee.core.model;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
 
import java.io.Serializable;
import java.util.List;
 
/**
 * @author  dm
 * @since 2025/03/31 16:44
 */
@Data
@ApiModel("分页对象")
public class PageData<T> implements Serializable {
 
    @ApiModelProperty("目标页")
    private long page;
 
    @ApiModelProperty("页容量")
    private long capacity;
 
    @ApiModelProperty("总记录数")
    private long total;
 
    @ApiModelProperty("当前页的数据")
    private List<T> records;
 
    public PageData(long page, long capacity) {
        this.page = page;
        this.capacity = capacity;
    }
 
    /**
     * 根据MyBatis Plus分页对象组装
     *
     * @param pageInfo MyBatisPlus分页对象
     * @return PageData<T>
     */
    public static <T> PageData<T> from(IPage<T> pageInfo) {
        PageData<T> pageData = new PageData<T>(pageInfo.getCurrent(), pageInfo.getSize());
        pageData.total = pageInfo.getTotal();
        pageData.records = pageInfo.getRecords();
        return pageData;
    }
 
    /**
     * 根据MyBatis原生分页对象组装
     *
     * @param pageInfo MyBatis分页对象
     * @return PageData<T>
     */
    public static <T> PageData<T> from(PageInfo<T> pageInfo) {
        PageData<T> pageData = new PageData<>(pageInfo.getPageNum(), pageInfo.getPageSize());
        pageData.total = pageInfo.getTotal();
        pageData.records = pageInfo.getList();
        return pageData;
    }
 
    /**
     * 处理异常页容量
     */
    public long getCapacity () {
        return capacity <= 0 ? 10 : capacity;
    }
 
    /**
     * 获取总页数
     */
    @ApiModelProperty("总页数")
    public long getPageCount(){
        if(this.getTotal() % this.getCapacity() == 0){
            long pc = this.getTotal()/this.getCapacity();
            return pc == 0 ? 1 : pc;
        }
        return this.getTotal()/this.getCapacity() + 1;
    }
 
}