Skip to content

Commit

Permalink
design queryPage 🔢
Browse files Browse the repository at this point in the history
  • Loading branch information
anjoy8 committed May 15, 2019
1 parent 7e673f2 commit 6157071
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 53 deletions.
5 changes: 3 additions & 2 deletions Blog.Core.IRepository/BASE/IBaseRepository.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Blog.Core.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
Expand Down Expand Up @@ -42,6 +43,6 @@ Task<List<TEntity>> Query(
Task<List<TEntity>> Query(string strWhere, int intPageIndex, int intPageSize, string strOrderByFileds);


Task<List<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 0, int intPageSize = 20, string strOrderByFileds = null);
Task<PageModel<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 1, int intPageSize = 20, string strOrderByFileds = null);
}
}
5 changes: 3 additions & 2 deletions Blog.Core.IServices/BASE/IBaseServices.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Blog.Core.Model;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
Expand Down Expand Up @@ -41,7 +42,7 @@ Task<List<TEntity>> Query(
Task<List<TEntity>> Query(string strWhere, int intPageIndex, int intPageSize, string strOrderByFileds);


Task<List<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 0, int intPageSize = 20, string strOrderByFileds = null);
Task<PageModel<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 1, int intPageSize = 20, string strOrderByFileds = null);
}

}
7 changes: 6 additions & 1 deletion Blog.Core.Model/PageModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Blog.Core.Model
public class PageModel<T>
{
/// <summary>
/// 当前页数
/// 当前页标
/// </summary>
public int page { get; set; } = 1;
/// <summary>
Expand All @@ -22,9 +22,14 @@ public class PageModel<T>
/// </summary>
public int dataCount { get; set; } = 0;
/// <summary>
/// 每页大小
/// </summary>
public int PageSize { set; get; }
/// <summary>
/// 返回数据
/// </summary>
public List<T> data { get; set; }

}

}
32 changes: 17 additions & 15 deletions Blog.Core.Repository/BASE/BaseRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -370,24 +370,26 @@ public async Task<List<TEntity>> Query(




public async Task<List<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression,
int intPageIndex = 0, int intPageSize = 20, string strOrderByFileds = null)
/// <summary>
/// 分页查询[使用版本,其他分页未测试]
/// </summary>
/// <param name="whereExpression">条件表达式</param>
/// <param name="intPageIndex">页码(下标0)</param>
/// <param name="intPageSize">页大小</param>
/// <param name="strOrderByFileds">排序字段,如name asc,age desc</param>
/// <returns></returns>
public async Task<PageModel<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int intPageIndex = 1, int intPageSize = 20, string strOrderByFileds = null)
{
//return await Task.Run(() => _db.Queryable<TEntity>()
//.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
//.WhereIF(whereExpression != null, whereExpression)
//.ToPageList(intPageIndex, intPageSize));
return await _db.Queryable<TEntity>()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
.ToPageListAsync(intPageIndex, intPageSize);
int totalCount = 0;
var list = await _db.Queryable<TEntity>()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
.ToPageListAsync(intPageIndex, intPageSize, totalCount);

int pageCount = (Math.Ceiling(list.Value.ObjToDecimal() / intPageSize.ObjToDecimal())).ObjToInt();
return new PageModel<TEntity>() { dataCount = list.Value, pageCount = pageCount, page = intPageIndex, PageSize = intPageSize, data = list.Key };
}




}


}
7 changes: 4 additions & 3 deletions Blog.Core.Services/BASE/BaseServices.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Blog.Core.IRepository.Base;
using Blog.Core.IServices.BASE;
using Blog.Core.Model;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
Expand Down Expand Up @@ -242,11 +243,11 @@ public async Task<List<TEntity>> Query(
strOrderByFileds);
}

public async Task<List<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression,
int intPageIndex = 0, int intPageSize = 20, string strOrderByFileds = null)
public async Task<PageModel<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression,
int intPageIndex = 1, int intPageSize = 20, string strOrderByFileds = null)
{
return await BaseDal.QueryPage(whereExpression,
intPageIndex = 0, intPageSize, strOrderByFileds);
intPageIndex, intPageSize, strOrderByFileds);
}

}
Expand Down
7 changes: 6 additions & 1 deletion Blog.Core/Blog.Core.Model.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

66 changes: 37 additions & 29 deletions Blog.Core/Controllers/PermissionController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,50 +48,61 @@ public PermissionController(IPermissionServices permissionServices, IModuleServi
/// <returns></returns>
// GET: api/User
[HttpGet]
[AllowAnonymous]
public async Task<MessageModel<PageModel<Permission>>> Get(int page = 1, string key = "")
{
var data = new MessageModel<PageModel<Permission>>();
int intTotalCount = 50;
int totalCount = 0;
int pageCount = 1;

var permissions = await _permissionServices.Query(a => a.IsDeleted != true);

if (!string.IsNullOrEmpty(key))
PageModel<Permission> permissions = new PageModel<Permission>();
int intPageSize = 50;

#region 舍弃
//var permissions = await _permissionServices.Query(a => a.IsDeleted != true);
//if (!string.IsNullOrEmpty(key))
//{
// permissions = permissions.Where(t => (t.Name != null && t.Name.Contains(key))).ToList();
//}
////筛选后的数据总数
//totalCount = permissions.Count;
////筛选后的总页数
//pageCount = (Math.Ceiling(totalCount.ObjToDecimal() / intTotalCount.ObjToDecimal())).ObjToInt();
//permissions = permissions.OrderByDescending(d => d.Id).Skip((page - 1) * intTotalCount).Take(intTotalCount).ToList();
#endregion


if (!string.IsNullOrEmpty(key) && !string.IsNullOrWhiteSpace(key))
{
permissions = permissions.Where(t => (t.Name != null && t.Name.Contains(key))).ToList();
permissions = await _permissionServices.QueryPage(a => a.IsDeleted != true && (a.Name != null && a.Name.Contains(key)), page, intPageSize, " Id desc ");
}
else
{
permissions = await _permissionServices.QueryPage(a => a.IsDeleted != true, page, intPageSize, " Id desc ");
}


//筛选后的数据总数
totalCount = permissions.Count;
//筛选后的总页数
pageCount = (Math.Ceiling(totalCount.ObjToDecimal() / intTotalCount.ObjToDecimal())).ObjToInt();

permissions = permissions.OrderByDescending(d => d.Id).Skip((page - 1) * intTotalCount).Take(intTotalCount).ToList();
var apis = await _moduleServices.Query(d => d.IsDeleted == false);

foreach (var item in permissions)
#region 单独处理
var permissionsView = permissions.data;

foreach (var item in permissionsView)
{
List<int> pidarr = new List<int>();
pidarr.Add(item.Pid);
if (item.Pid > 0)
{
pidarr.Add(0);
}
var parent = permissions.FirstOrDefault(d => d.Id == item.Pid);
var parent = permissionsView.FirstOrDefault(d => d.Id == item.Pid);

while (parent != null)
{
pidarr.Add(parent.Id);
parent = permissions.FirstOrDefault(d => d.Id == parent.Pid);
parent = permissionsView.FirstOrDefault(d => d.Id == parent.Pid);
}


item.PidArr = pidarr.OrderBy(d => d).Distinct().ToList();
foreach (var pid in item.PidArr)
{
var per = permissions.FirstOrDefault(d => d.Id == pid);
var per = permissionsView.FirstOrDefault(d => d.Id == pid);
item.PnameArr.Add((per != null ? per.Name : "根节点") + "/");
//var par = Permissions.Where(d => d.Pid == item.Id ).ToList();
//item.PCodeArr.Add((per != null ? $"/{per.Code}/{item.Code}" : ""));
Expand All @@ -103,18 +114,15 @@ public async Task<MessageModel<PageModel<Permission>>> Get(int page = 1, string

item.MName = apis.FirstOrDefault(d => d.Id == item.Mid)?.LinkUrl;
}
#endregion

permissions.data = permissionsView;

return new MessageModel<PageModel<Permission>>()
{
msg = "获取成功",
success = totalCount >= 0,
response = new PageModel<Permission>()
{
page = page,
pageCount = pageCount,
dataCount = totalCount,
data = permissions,
}
success = permissions.dataCount >= 0,
response = permissions
};

}
Expand Down Expand Up @@ -286,7 +294,7 @@ orderby child.Id
{
requireAuth = true,
title = child.Name,
NoTabPage=child.IsHide.ObjToBool()
NoTabPage = child.IsHide.ObjToBool()
}
}).ToList();

Expand Down

0 comments on commit 6157071

Please sign in to comment.