public async Task <ActionResult <BaseResponse> > Get([FromQuery] DataDefineLibraryPageRequest req) { var isAdmin = User.Claims.FirstOrDefault(a => a.Type == "IsAdmin").Value.ToLower() == "true" ? true : false; if (!isAdmin)//管理员可以获取数据定义库数据 { return(Unauthorized("用户没有权限获取数据定义库")); } var rm = await _dls.GetDataDefineLibrarysAsync(req); return(rm); }
public async Task <BaseResponse> GetDataDefineLibrarysAsync(DataDefineLibraryPageRequest req) { var ret = _dlr.Find(a => true); if (!string.IsNullOrWhiteSpace(req.Search)) { ret = ret.Where(a => a.DataKey.Contains(req.Search) || a.DataName.Contains(req.Search)); } //单个标签查找,第一步先查找包含的id,第二步查找id包含的,如果是多个标签的或查找需要根据标签或 //Regex r = new Regex(@"(?=(,|\b)1\b)|(?=(,|\b)2\b)") if (req.CategoryId != 0) { string txt = $@"(?=(,|\b){req.CategoryId}\b)"; Regex r = new Regex(@txt); var Ids = _dlr.Find(a => true).ToList().Where(a => { if (a.Category == null) { return(false); } else { return(r.Match(a.Category).Success == true); } }).Select(a => a.Id).ToList(); ret = ret.Where(a => Ids.Contains(a.Id)); } int Count = 0; string OrderExpression = ""; if (string.IsNullOrEmpty(req.OrderBy)) { OrderExpression = "Id Asc"; } else { OrderExpression = string.Format("{0} {1}", req.OrderBy, req.OrderType); } Count = ret.Count(); var data = await ret.OrderBy(OrderExpression).Skip((req.PageNo - 1) * req.PageSize).Take(req.PageSize).ToListAsync(); var dto = _mapper.Map <IEnumerable <DataDefineLibraryDataDto> >(data); #region 替换category var cr = await _cr.Find(a => true).ToListAsync(); if (cr.Count > 0) { foreach (var item in dto) { if (item.Category != null && item.Category.Length > 0) { var cid = item.Category.Split(','); string cname = ""; for (int i = 0; i < cid.Length; i++) { if (cid[i].Trim() != "") { if (cname == "") { cname += cr.FirstOrDefault(a => a.Id.ToString() == cid[i]).Name; } else { cname += "," + cr.FirstOrDefault(a => a.Id.ToString() == cid[i]).Name; } } } item.Category = cname; }//end if } } #endregion BaseResponse br = new BasePageResponse <IEnumerable <DataDefineLibraryDataDto> >() { Count = Count, CurrentPage = req.PageNo, PageSize = req.PageSize, Success = true, Message = "获取数据成功", Data = dto, TotalPage = (int)Math.Ceiling((decimal)Count / req.PageSize) }; return(br); }