public static List<Module> GetModelListByUser(string userName) { return iCache.Get<List<Module>>(String.Format("ModuleBiz.GetModelListByUser:{0}", userName), () => { using (Context ctx = new Context()) { var loginUser = new User().Find(System.Web.HttpContext.Current.User.Identity.Name); if (loginUser == null) { return null; } if (loginUser.Status == ItemStatus.Supper) { var data = new Module().FindAll(); data.ForEach(c => { if (!String.IsNullOrEmpty(c.Url)) { c.Url = c.Url.ToLower(); } }); return data; } else { var data = (from c in ctx.Module join d in ctx.UserModule on c.ID equals d.ModuleID where d.UserName == userName select new { c }).Distinct() .ToList() .Select(e => { var module = new Module().Set(e.c); module.Url = module.Url == null ? "" : module.Url.ToLower(); return module; }) .ToList(); if (data != null && data.Count > 0) { var list = new List<Module>(); foreach (var item in data) { list.Add(item); if (item.Level == 2) { var thirdlist = new Module().FindAll(c => c.ParentID == item.ID); list.AddRange(thirdlist); } } return list; } else { return data; } } } }, 600); }
public static List<Module> GetModelListByUserForMenu(string userName) { try { using (Context ctx = new Context()) { var loginUser = new User().Find(System.Web.HttpContext.Current.User.Identity.Name); if (loginUser == null) { return null; } if (loginUser.Status == ItemStatus.Supper) { var data = new Module().FindAll(c => c.IsDisplay == true && (c.Level == 1 || c.Level == 2)); data.ForEach(c => { if (!String.IsNullOrEmpty(c.Url)) { c.Url = c.Url.ToLower(); } }); return data; } else { var data = (from c in ctx.Module join d in ctx.UserModule on c.ID equals d.ModuleID where d.UserName == userName && c.IsDisplay == true && (c.Level == 1 || c.Level == 2) select new { c }).Distinct() .ToList() .Select(e => { var module = new Module().Set(e.c); module.Url = module.Url == null ? "" : module.Url.ToLower(); return module; }).ToList(); return data; } } } catch (Exception ex) { LogHelper.Write(CommonLogger.Web, ex); } return null; }