public async Task <ActionResult <BaseResponse> > Get(int typeId, [FromQuery] TypeDataDefinePageRequest req) { //string user = User.Identity.Name; //if (string.IsNullOrWhiteSpace(user)) //{ // return Unauthorized("用户凭证缺失"); //} //UserMessage um = JsonConvert.DeserializeObject<UserMessage>(user); //string GroupId; //var ret = _ts.IsExist(a => a.Id == typeId, out GroupId); //if (!ret) //{ // return new BaseResponse { Success = false, Message = "输入的类型不存在" }; //} ////用户所在的组和超级管理员可以查看 //if (um.GroupId != GroupId || (!um.IsAdmin && um.Code != _config["Group"])) //{ // return Unauthorized("用户没有权限"); //} var rm = await _td.GetTypeDataDefines(typeId, req); return(rm); }
//对datakey或者dataname进行查询 public async Task<BaseResponse> GetTypeDataDefines(int typeId, TypeDataDefinePageRequest req) { var data = _td.Find(a => a.TypeId == typeId); if (!string.IsNullOrWhiteSpace(req.Search)) { data = data.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 = _td.Find(a => a.TypeId == typeId).ToList().Where(a => { if (a.Category == null) { return false; } else { return r.Match(a.Category).Success == true; } }).Select(a => a.Id).ToList(); data = data.Where(a => Ids.Contains(a.Id)); } int count = data.Count(); string OrderExpression = ""; if (string.IsNullOrEmpty(req.OrderBy)) { OrderExpression = "Id Asc"; //UserQuery = UserQuery.OrderBy(a => a.Id); } else { OrderExpression = string.Format("{0} {1}", req.OrderBy, req.OrderType); } var entityList = await data.OrderBy(OrderExpression).Skip((req.PageNo - 1) * req.PageSize).Take(req.PageSize).ToListAsync(); var dtos = _mapper.Map<List<TypeDataDefineData>>(entityList); #region 替换category var cr = await _cr.Find(a => true).ToListAsync(); if (cr.Count > 0) { foreach (var item in dtos) { 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 var ret = new BasePageResponse<List<TypeDataDefineData>> { Success = true, Message = "获取数据成功", Count = count, CurrentPage = req.PageNo, PageSize = req.PageSize, TotalPage = (int)Math.Ceiling((decimal)count / req.PageSize), Data = dtos }; return ret; }