/**
 * Copyright 2018-2020 stylefeng & fengshuonan (sn93@qq.com)
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
package com.inkasso.adapter.page;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.PageUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;

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

/**
 * 封装分页结果集
 *
 * @author zc
 * @Date 2021-09-23
 */
@Data
public class PageResult<T> implements Serializable {

  private static final long serialVersionUID = -4071521319254024213L;

  /**
   * 要查找第几页
   */
  private Integer page = 1;

  /**
   * 每页显示多少条
   */
  private Integer pageSize = 20;

  /**
   * 总页数
   */
  private Integer totalPage = 0;

  /**
   * 总记录数
   */
  private Integer total = 0;

  /**
   * 结果集
   */
  private List<T> rows;

  public PageResult() {
  }

  public PageResult(IPage<T> page) {
    this.setPage(Convert.toInt(page.getCurrent()));
    this.setPageSize(Convert.toInt(page.getSize()));
    this.setTotalPage(
        PageUtil.totalPage(Convert.toInt(page.getTotal()), Convert.toInt(page.getSize())));
    this.setTotal((int) page.getTotal());
    this.setRows(page.getRecords());
  }

  public PageResult(IPage page, List<T> rows) {
    this.setPage(Convert.toInt(page.getCurrent()));
    this.setPageSize(Convert.toInt(page.getSize()));
    this.setTotalPage(
        PageUtil.totalPage(Convert.toInt(page.getTotal()), Convert.toInt(page.getSize())));
    this.setTotal((int) page.getTotal());
    this.setRows(rows);
  }

}
