You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.9 KiB

using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace zzz.Model
{
/// <summary>
/// 通用分页信息类
/// </summary>
public class PageModel<T>
{
/// <summary>
/// 当前页标
/// </summary>
public int pageIndex { get; set; } = 1;
/// <summary>
/// 每页大小
/// </summary>
public int pageSize { set; get; } = 20;
/// <summary>
/// 总页数
/// </summary>
public int totalPages => (int)Math.Ceiling((decimal)totalCount / pageSize);
/// <summary>
/// 数据总数
/// </summary>
public int totalCount { get; set; } = 0;
/// <summary>
/// 返回数据
/// </summary>
public List<T> rows { get; set; }
/// <summary>
///
/// </summary>
public PageModel() { }
/// <summary>
///
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="totalCount"></param>
/// <param name="pageSize"></param>
/// <param name="rows"></param>
public PageModel(int pageIndex, int totalCount, int pageSize, List<T> rows)
{
this.pageIndex = pageIndex;
this.totalCount = totalCount;
this.pageSize = pageSize;
this.rows = rows;
}
/// <summary>
///
/// </summary>
/// <typeparam name="TOut"></typeparam>
/// <returns></returns>
//private PageModel<TOut> ConvertTo<TOut>()
//{
// return new PageModel<TOut>(pageIndex, totalCount, pageSize, default);
//}
/// <summary>
///
/// </summary>
/// <typeparam name="TOut"></typeparam>
/// <returns></returns>
public PageModel<TOut> ConvertTo<TOut>()
{
var model = new PageModel<TOut>(pageIndex, totalCount, pageSize, default);
if (rows != null)
{
var cfg = new MapperConfiguration(cfg => cfg.CreateMap<T, TOut>());
var m = cfg.CreateMapper();
model.rows = m.Map<List<TOut>>(rows);
}
return model;
}
/// <summary>
///
/// </summary>
/// <typeparam name="TOut"></typeparam>
/// <param name="options"></param>
/// <returns></returns>
public PageModel<TOut> ConvertTo<TOut>(Action<IMappingOperationOptions> options)
{
var model = new PageModel<TOut>(pageIndex, totalCount, pageSize, default);
if (rows != null)
{
var cfg = new MapperConfiguration(cfg => cfg.CreateMap<T, TOut>());
var m = cfg.CreateMapper();
model.rows = m.Map<List<TOut>>(rows, options);
}
return model;
}
}
}