package cn.iocoder.yudao.framework.common.util.page;

import com.github.pagehelper.PageInfo;

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

/**
 * 分页工具类
 * @author douya
 * @email douya@gmail.com
 * @date 2017年11月4日 上午11:07:35
 */
public class PageHelper<T> implements Serializable {
	private static final long serialVersionUID = 1L;
	/***
	 * 总记录数
	 */
	private long totalCount;

	/***
	 * 每页记录数
	 */
	private int pageSize;

	/***
	 * 总页数
	 */
	private int totalPage;

	/***
	 * 当前页数
	 */
	private int currPage;

	/***
	 * 列表数据
	 */
	private List<T> list;

	/**
	 * 分页
	 * @param list        列表数据
	 * @param totalCount  总记录数
	 * @param pageSize    每页记录数
	 * @param currPage    当前页数
	 */
	public PageHelper(List<T> list, long totalCount, int pageSize, int currPage) {
		this.list = list;
		this.totalCount = totalCount;
		this.pageSize = pageSize;
		this.currPage = currPage;
		this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
	}

	/****
	 * 分页转换
	 * @param pageInfo
	 * @return
	 */
	public static PageHelper getInstance(PageInfo<?> pageInfo){
		return new PageHelper(pageInfo.getList(), pageInfo.getTotal(), pageInfo.getPageSize(), pageInfo.getPageNum());
	}

	/****
	 * 分页转换
	 * @param pager
	 * @return
	 */
	public static PageHelper of(PageInfo<?> pager){
		return new PageHelper(pager.getList(), pager.getTotal(), pager.getPageSize(), pager.getPageNum());
	}

	public long getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(long totalCount) {
		this.totalCount = totalCount;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getCurrPage() {
		return currPage;
	}

	public void setCurrPage(int currPage) {
		this.currPage = currPage;
	}

	public List<?> getList() {
		return list;
	}

	public void setList(List<T> list) {
		this.list = list;
	}
}
