package cn.cslg.pas.common;

import com.github.pagehelper.PageInfo;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 把封装着分页查询结果和分页信息的PageInfo类转换为本类并返回给前端(本类应和Page\PageInfo一样,既包含分页查询结果又包含分页信息)
 *
 * @Author chenyu
 * @Date 2023/2/16
 */
@Data
public class JsonPage implements Serializable {
    /**
     * 总页数
     */
    private Integer totalCurrents;
    /**
     * 总条数
     */
    private Long totalSizes;
    /**
     * 当前页 (页码)
     */
    private Integer current;
    /**
     * 每页条数
     */
    private Integer size;
    /**
     * 分页查询结果
     */
    private List<Object> list;

    // 下面要编写一个能够将PageInfo类型对象转换为JsonPage类型对象的方法
    // 如果需要将其他类型对象转换为JsonPage(例如SpringData的Page类型),另外编写方法即可
    public static JsonPage restPage(PageInfo pageInfo) {
        // 所谓转换的意思就是将pageInfo对象中的信息,赋值给JsonPage类型
        JsonPage result = new JsonPage();
        // 因为PageInfo和JsonPage同名属性较少,所以手动赋值
        result.setTotalSizes(pageInfo.getTotal());
        result.setTotalCurrents(pageInfo.getPages());
        result.setCurrent(pageInfo.getPageNum());
        result.setSize(pageInfo.getPageSize());
        // 别忘了最后的分页数据
        result.setList(pageInfo.getList());
        // 最后返回JsonPage类型对象result
        return result;
    }

}
