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
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;
|
|
|
|
}
|
|
|
|
}
|
|
}
|