update 动态参数查询page增加后端字段控制

This commit is contained in:
2021-05-31 15:39:39 +08:00
parent d5bee93c24
commit afbc3c6cdf
4 changed files with 27 additions and 29 deletions

View File

@@ -2512,11 +2512,11 @@
高级查询信息集合 高级查询信息集合
</summary> </summary>
</member> </member>
<member name="M:Ewide.Core.Extension.DataFilter.Entity.FilterInfo.SetSearchInfo(Ewide.Core.SearchInfo[])"> <member name="M:Ewide.Core.Extension.DataFilter.Entity.FilterInfo.SetSearchInfo(Ewide.Core.SearchInfo[],System.Collections.Generic.IEnumerable{System.String})">
<summary> <summary>
设置查询信息 设置查询信息
</summary> </summary>
<param name="searchJson"></param> <param name="filterFields"></param>
</member> </member>
<member name="P:Ewide.Core.SearchInfo.Field"> <member name="P:Ewide.Core.SearchInfo.Field">
<summary> <summary>

View File

@@ -31,30 +31,33 @@ namespace Ewide.Core.Extension.DataFilter.Entity
/// <summary> /// <summary>
/// 设置查询信息 /// 设置查询信息
/// </summary> /// </summary>
/// <param name="searchJson"></param> /// <param name="filterFields"></param>
public void SetSearchInfo(SearchInfo[] searchJson) public void SetSearchInfo(SearchInfo[] searchInfo, IEnumerable<string> filterFields)
{ {
try try
{ {
foreach (var elem in searchJson) foreach(var field in filterFields)
{ {
var elem = searchInfo.FirstOrDefault(m => m.Field.Equals(field,StringComparison.OrdinalIgnoreCase));
if (elem == null) continue;
var fieldName = elem.Field; var fieldName = elem.Field;
var searchStrs = elem.Value; var searchStrs = elem.Value;
if (searchStrs == null) continue; if (searchStrs == null) continue;
if (searchStrs.Count == 0) continue; if (searchStrs.Count == 0) continue;
var searchInfo = new SearchInfo(); var searchInfoEntity = new SearchInfo();
searchInfo.Field = fieldName; searchInfoEntity.Field = fieldName;
searchInfo.Type = elem.Type; searchInfoEntity.Type = elem.Type;
var searchStrsNode = elem.Value; var searchStrsNode = elem.Value;
if (searchStrsNode != null) if (searchStrsNode != null)
{ {
foreach (var node in searchStrsNode) foreach (var node in searchStrsNode)
{ {
searchInfo.Value.Add(node); searchInfoEntity.Value.Add(node);
} }
} }
_SearchInfos.Add(searchInfo); _SearchInfos.Add(searchInfoEntity);
} }
} }
catch catch

View File

@@ -11,19 +11,13 @@ namespace Ewide.Core.Extension.DataFilter.WebPage
public class SearchJsonFitlerInfoGetService : IFitlerInfoGetService public class SearchJsonFitlerInfoGetService : IFitlerInfoGetService
{ {
protected PageInputBase Input; protected PageInputBase Input;
protected IEnumerable<string> EqualsFields; protected IEnumerable<string> FilterFields;
protected IEnumerable<string> LikeFields;
protected IEnumerable<string> DateRangeFields;
protected IEnumerable<string> OtherRangeFields;
public DynamicParameters sqlParameters = new DynamicParameters(); public DynamicParameters sqlParameters = new DynamicParameters();
public SearchJsonFitlerInfoGetService(PageInputBase input, IEnumerable<string> equalsFields, IEnumerable<string> likeFields, IEnumerable<string> dateRangeFields, IEnumerable<string> otherRangeFields, object param = null) public SearchJsonFitlerInfoGetService(PageInputBase input, IEnumerable<string> filterFields, object param = null)
{ {
Input = input; Input = input;
EqualsFields = equalsFields; FilterFields = filterFields;
LikeFields = likeFields;
DateRangeFields = dateRangeFields;
OtherRangeFields = otherRangeFields;
sqlParameters = new DynamicParameters(param); sqlParameters = new DynamicParameters(param);
} }
@@ -31,7 +25,7 @@ namespace Ewide.Core.Extension.DataFilter.WebPage
public FilterInfo GetFilterInfo() public FilterInfo GetFilterInfo()
{ {
var result = new FilterInfo(); var result = new FilterInfo();
result.SetSearchInfo(Input.SearchInfo); result.SetSearchInfo(Input.SearchInfo, FilterFields);
return result; return result;
} }

View File

@@ -31,10 +31,11 @@ namespace Ewide.Core.Extension
var type = typeof(T); var type = typeof(T);
var hasId = type.GetProperty("Id") != null; var hasId = type.GetProperty("Id") != null;
var hasSort = type.GetProperty("Sort") != null; var hasSort = type.GetProperty("Sort") != null;
var hasCreatedTime = type.GetProperty("CreatedTime") != null;
var defaultField = hasSort ? "Sort" : (hasId ? "Id" : ""); var defaultField = hasCreatedTime ? "CreatedTime" : hasSort ? "Sort" : hasId ? "Id" : "";
// 约定默认每张表都有Id排序 // 排序优先级 创建时间->序号->ID
var orderStr = string.IsNullOrEmpty(defaultField) ? "" : defaultField + (descSort ? " Desc" : " Asc"); var orderStr = string.IsNullOrEmpty(defaultField) ? "" : defaultField + (descSort ? " Desc" : " Asc");
// 排序是否可用-排序字段和排序顺序都为非空才启用排序 // 排序是否可用-排序字段和排序顺序都为非空才启用排序
@@ -125,9 +126,9 @@ namespace Ewide.Core.Extension
} }
#region DAPPER #region DAPPER
public async static Task<PagedList> QueryPageDataDynamic(this IDapperRepository source, string baseSql, PageInputBase input, object param = null, IEnumerable<string> equalsFields = null, IEnumerable<string> likeFields = null, IEnumerable<string> dateTimeRangeFields = null, IEnumerable<string> otherRangeFields = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) public async static Task<PagedList> QueryPageDataDynamic(this IDapperRepository source, string baseSql, PageInputBase input, object param = null, IEnumerable<string> filterFields = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null)
{ {
SearchJsonFitlerInfoGetService searchJsonFitlerInfoGetService = new SearchJsonFitlerInfoGetService(input, equalsFields, likeFields, dateTimeRangeFields, otherRangeFields, param); SearchJsonFitlerInfoGetService searchJsonFitlerInfoGetService = new SearchJsonFitlerInfoGetService(input, filterFields, param);
var sql = searchJsonFitlerInfoGetService.GetWhereSql(baseSql); var sql = searchJsonFitlerInfoGetService.GetWhereSql(baseSql);
var sqlParam = searchJsonFitlerInfoGetService.sqlParameters; var sqlParam = searchJsonFitlerInfoGetService.sqlParameters;
return await QueryPageData(source, sql, input, sqlParam, transaction, commandTimeout, commandType); return await QueryPageData(source, sql, input, sqlParam, transaction, commandTimeout, commandType);