/// <summary> /// 获取元数据 /// </summary> /// <param name="fetch"></param> public void GetMetaDatas(FetchDescriptor fetch) { if (fetch.Query == null) { ToQueryExpression(fetch.FetchConfig); } else { this.QueryExpression = fetch.Query; } this.QueryExpression.PageInfo = new PagingInfo() { PageNumber = fetch.Page, PageSize = fetch.PageSize }; this.QueryResolver = _queryResolverFactory.Get(QueryExpression); GetNonePermissionFields(); }
/// <summary> /// 查询数据 /// </summary> /// <param name="fetch">查询参数</param> /// <param name="wrapOptionName">是否包含选项名称</param> /// <returns></returns> public PagedList <dynamic> Execute(FetchDescriptor fetch, bool wrapOptionName = false) { //bool hasChange = false; GetMetaDatas(fetch); if (fetch.User != null) { if (!fetch.User.IsSuperAdmin && fetch.User.Roles.IsEmpty()) { fetch.User.Roles = _systemUserRolesService.Query(n => n.Where(f => f.SystemUserId == fetch.User.SystemUserId)); } this.User.Roles = fetch.User.Roles; } if (fetch.User != null && !fetch.User.IsSuperAdmin && fetch.User.Roles.NotEmpty()) { var roles = fetch.User.Roles.Select(r => r.RoleId); var entities = this.QueryExpression.GetAllEntityNames(); var entIds = _entityFinder.FindByNames(entities.ToArray()).Select(n => n.EntityId); fetch.User.RoleObjectAccessEntityPermission = _roleObjectAccessEntityPermissionService.GetPermissions(entIds, roles, AccessRightValue.Read); this.User.RoleObjectAccessEntityPermission = fetch.User.RoleObjectAccessEntityPermission; } //this.User.UserName = "******"; //this.SetRetrieveConditions(this.User, this.QueryExpression); if (fetch.Keyword.IsNotEmpty()) { if (this.QueryExpression.Criteria == null || (this.QueryExpression.Criteria.Conditions.IsEmpty() && this.QueryExpression.Criteria.Filters.IsEmpty())) { this.QueryExpression.Criteria = new FilterExpression(LogicalOperator.And); } else { this.QueryExpression.Criteria.FilterOperator = LogicalOperator.And; } if (fetch.Field.IsNotEmpty()) { MakeFilterByKeyword(this.QueryExpression, fetch.Keyword, fetch.Field); } else { MakeFilterByKeyword(this.QueryExpression, fetch.Keyword); } //hasChange = true; } //过滤 if (fetch.Filter != null && (fetch.Filter.Filters.Count > 0 || fetch.Filter.Conditions.Count > 0)) { this.QueryExpression.Criteria.AddFilter(fetch.Filter); //hasChange = true; } //排序 if (fetch.Sort != null) { //重置排序 this.QueryExpression.Orders.Clear(); this.QueryExpression.AddOrder(fetch.Sort.Name, fetch.Sort.SortAscending ? OrderType.Ascending : OrderType.Descending); //hasChange = true; } //无指定排序时,默认第一列 if (this.QueryExpression.Orders.IsEmpty()) { if (this.QueryResolver.AttributeList.Exists(n => n.Name.IsCaseInsensitiveEqual("createdon"))) { this.QueryExpression.AddOrder("createdon", OrderType.Descending); } else { this.QueryExpression.AddOrder(this.QueryExpression.ColumnSet.Columns.First(), OrderType.Descending); } //hasChange = true; } PagedList <dynamic> result = new PagedList <dynamic>(); if (fetch.GetAll) { var data = this.QueryResolver.Query(noneReadFields: NonePermissionFields); result.Items = data; } else { result = this.QueryResolver.QueryPaged(noneReadFields: NonePermissionFields); } if (wrapOptionName) { result.Items = WrapOptionName(result.Items); } return(result); }