using System; using System.Collections.Generic; using System.Linq; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.IBLL.Base; using WX.CRM.Model.Entity; namespace WX.CRM.BLL.Base { public class BAS_LEFTMEMU_BL : IBAS_LEFTMEMU, IBAS_LEFTMEMU_Q { CACHE_BL _cache = new CACHE_BL(); #region 新增 /// /// 新增 /// /// /// /// public bool Create_leftMemu(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_LEFTMEMU model) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { decimal? sort = db.BAS_LEFTMEMU.Where(m => m.PARENTID == model.PARENTID && m.MODULEMENUID == model.MODULEMENUID).Max(m => m.SORTID);//获取最大的sort if (sort == null) model.SORTID = 1; else model.SORTID = sort.Value + 1; model.MENUID = new SEQUENCES_BL().Seq_base_get(); db.BAS_LEFTMEMU.Add(model); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 删除 /// /// 删除 /// /// /// /// public bool Delete_leftMemu(ref ValidationErrors errors, decimal id) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_LEFTMEMU entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == id); if (entry == null) { errors.Add("已经被删除!"); return false; } db.BAS_LEFTMEMU.Remove(entry); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 修改数据 /// /// 修改数据 /// /// /// /// public bool Update_leftMemu(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_LEFTMEMU model) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_LEFTMEMU entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == model.MENUID); entry.MNAME = model.MNAME; entry.MODULEMENUID = model.MODULEMENUID; entry.URL = model.URL; entry.ISGROUP = model.ISGROUP; entry.ISSHOW = model.ISSHOW; entry.RIGHTID = model.RIGHTID; entry.PARENTID = model.PARENTID; if (entry.ISGROUP == 1) { List list_menu = db.BAS_LEFTMEMU.Where(p => p.PARENTID == entry.MENUID).ToList(); foreach (var menu in list_menu) { menu.MODULEMENUID = entry.MODULEMENUID; } } db.SaveChanges(); return true; } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 更新顺序 /// /// 更新顺序 /// /// id集合用“,”隔开 /// sortid集合“,”隔开 /// public bool Sort_leftMemu(ref ValidationErrors errors, string ids, string sortIds) { if (ids.Trim() == "" || sortIds.Trim() == "") return false; try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { string[] idStr = ids.Split(','); string[] sortStr = sortIds.Split(','); for (int i = 0; i < idStr.Length; i++) { decimal id = Convert.ToDecimal(idStr[i]); decimal sortId = Convert.ToDecimal(sortStr[i]); WX.CRM.Model.Entity.BAS_LEFTMEMU entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == id); if (entry == null) continue; entry.SORTID = sortId; } return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 菜单管理树形获取 缓存中获取 根据权限 /// /// 从缓存中获取全部菜单 根据权限获取 /// /// 权限 /// public object GetTreeList_leftMenu(string[] userRights) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List leftMemuList = _cache.GetList_LeftMemu().OrderBy(m => m.SORTID).Where(m => m.ISSHOW == 1).Where(m => userRights.Contains(m.RIGHTID) || string.IsNullOrEmpty(m.RIGHTID) || m.RIGHTID.Trim() == "0").ToList(); List moduleMenuList = _cache.GetList_ModuleMenu().OrderBy(m => m.SORTID).Where(m => userRights.Contains(m.RIGHTID) || string.IsNullOrEmpty(m.RIGHTID) || m.RIGHTID.Trim() == "0").ToList(); List obj = new List(); List childObj = null; //顶部模块部分 foreach (WX.CRM.Model.Entity.BAS_MODULEMENU m in moduleMenuList) { foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU model in leftMemuList.Where(n => n.PARENTID == 0 && n.MODULEMENUID == m.MODULEMENUID)) { if (childObj == null) childObj = new List(); childObj.Add(new { id = (model.ISGROUP == 1 ? "-" : "") + model.MENUID.ToString(), text = model.MNAME, moduleMenuId = m.MODULEMENUID.ToString(), sortId = model.SORTID, iconCls = (model.ISGROUP == 1 ? "" : "icon-treenode"), children = GetleftMenuTree(model.MENUID, leftMemuList) }); } obj.Add(new { id = (-m.MODULEMENUID).ToString(),//模块ID为负数 text = m.MNAME, iconCls = "icon-group", moduleMenuId = m.MODULEMENUID.ToString(), sortId = m.SORTID, children = childObj }); childObj = null; } return obj; } } private object GetleftMenuTree(decimal parentId, List menulist) { List obj = null; //下面子菜单 foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU model in menulist.Where(n => n.PARENTID == parentId)) { if (obj == null) obj = new List(); if (model.ISGROUP == 1) obj.Add(new { id = "-" + model.MENUID.ToString(), moduleMenuId = model.MODULEMENUID.ToString(), text = model.MNAME, sortId = model.SORTID, iconCls = (model.ISGROUP == 1 ? "" : "icon-treenode"), children = GetleftMenuTree(model.MENUID, menulist) }); else obj.Add(new { id = model.MENUID.ToString(), moduleMenuId = model.MODULEMENUID.ToString(), text = model.MNAME, sortId = model.SORTID, iconCls = (model.ISGROUP == 1 ? "" : "icon-treenode") }); } return obj; } #endregion #region 菜单管理树形获取 /// /// 获取全部菜单信息 /// /// public object GetTreeList_leftMenu() { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List leftMemuList = db.BAS_LEFTMEMU.OrderBy(m => m.SORTID).ToList(); List moduleMenuList = db.BAS_MODULEMENU.OrderBy(m => m.SORTID).ToList(); List rightList = db.BAS_RIGHT.ToList();//获取所有的权限 WX.CRM.Model.Entity.BAS_RIGHT right = null; List obj = new List(); List childObj = null; //顶部模块部分 foreach (WX.CRM.Model.Entity.BAS_MODULEMENU m in moduleMenuList) { foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU model in leftMemuList.Where(n => n.PARENTID == 0 && n.MODULEMENUID == m.MODULEMENUID)) { if (childObj == null) childObj = new List(); right = null; if (!string.IsNullOrEmpty(model.RIGHTID)) right = rightList.Where(x => x.RIGHTID == model.RIGHTID).FirstOrDefault(); //if (model.ISSHOW != 0) //{ childObj.Add(new { id = model.MENUID.ToString(), text = model.MNAME, moduleMenuId = m.MODULEMENUID.ToString(), sortId = model.SORTID, title = "地址:" + model.URL + " 权限:" + (right == null || string.IsNullOrEmpty(model.RIGHTID) ? "无" : right.RNAME), iconCls = (model.ISSHOW == 1 ? (model.ISGROUP == 1 ? "" : "icon-treenode") : "icon-cant"), children = GetleftMenuTree(model.MENUID, leftMemuList, rightList) }); //} } right = null; if (!string.IsNullOrEmpty(m.RIGHTID)) right = rightList.Where(x => x.RIGHTID == m.RIGHTID).FirstOrDefault(); obj.Add(new { id = (-m.MODULEMENUID).ToString(),//模块ID为负数 text = m.MNAME, iconCls = "icon-group", moduleMenuId = m.MODULEMENUID.ToString(), sortId = m.SORTID, title = "图片:" + m.IMAGEURL + " 权限:" + (right == null || string.IsNullOrEmpty(m.RIGHTID) ? "无" : right.RNAME), children = childObj }); childObj = null; } return obj; } } private object GetleftMenuTree(decimal parentId, List menulist, List rightList) { List obj = null; WX.CRM.Model.Entity.BAS_RIGHT right = null; //下面子菜单 foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU model in menulist.Where(n => n.PARENTID == parentId)) { if (obj == null) obj = new List(); right = null; if (!string.IsNullOrEmpty(model.RIGHTID)) right = rightList.Where(x => x.RIGHTID == model.RIGHTID).FirstOrDefault(); obj.Add(new { id = model.MENUID.ToString(), moduleMenuId = model.MODULEMENUID.ToString(), text = model.MNAME, sortId = model.SORTID, iconCls = (model.ISSHOW == 1 ? (model.ISGROUP == 1 ? "" : "icon-treenode") : "icon-cant"), title = "地址:" + model.URL + " 权限:" + (right == null || string.IsNullOrEmpty(model.RIGHTID) ? "无" : right.RNAME), children = GetleftMenuTree(model.MENUID, menulist, rightList) }); } return obj; } #endregion #region 获取单个实体 /// /// 获取单个实体 /// /// /// public WX.CRM.Model.Entity.BAS_LEFTMEMU GetModel_leftMenu(decimal id) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_LEFTMEMU entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == id); return entry; } } #endregion #region 菜单显示控制 /// /// 获取菜单树结构 /// /// public object GetTree_leftMenu(decimal parentId) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List queryData = _cache.GetList_LeftMemu(); queryData = queryData.Where(m => m.PARENTID == parentId && m.ISSHOW == 1).OrderBy(m => m.SORTID).ToList(); return GetObjectByQuery(queryData); } } /// /// 获取菜单树结构 /// /// public object GetTopTree_leftMenu(decimal moduleMenuId) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List queryData = _cache.GetList_LeftMemu();// db.BAS_LEFTMEMU.AsQueryable(); queryData = queryData.Where(m => m.PARENTID == 0 && m.MODULEMENUID == moduleMenuId && m.ISSHOW == 1).OrderBy(m => m.SORTID).ToList(); return GetObjectByQuery(queryData); } } /// /// 返回数据转换 /// /// /// private object GetObjectByQuery(IQueryable queryData) { object modelList = (from m in queryData select new { id = m.MENUID, text = m.MNAME, value = m.URL, showcheck = false, complete = false, isexpand = false, checkstate = 0, hasChildren = (m.ISGROUP == 1) }).ToList(); return modelList; } /// /// 返回数据转换 /// /// /// private object GetObjectByQuery(List queryData) { object modelList = (from m in queryData select new { id = m.MENUID, text = m.MNAME, value = m.URL, showcheck = false, complete = false, isexpand = false, checkstate = 0, parentid = m.PARENTID, hasChildren = (m.ISGROUP == 1) }).ToList(); return modelList; } #endregion /// /// 根据权限获取菜单 /// /// /// /// public object GetTree_leftMenu(decimal parentId, string[] rightIds) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List queryData = _cache.GetList_LeftMemu(); queryData = queryData.Where(m => m.PARENTID == parentId && m.ISSHOW == 1).OrderBy(m => m.SORTID).Where(m => rightIds.Contains(m.RIGHTID) || string.IsNullOrEmpty(m.RIGHTID) || m.RIGHTID.Trim() == "0").ToList(); return GetObjectByQuery(queryData); } } /// /// 获取菜单组和子菜单 /// /// /// /// private List GetALLleftMenu(decimal parentId, List menulist) { List obj = null; //下面子菜单 foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU model in menulist.Where(n => n.PARENTID == parentId)) { if (obj == null) obj = new List(); obj.Add(new { id = model.MENUID, title = model.MNAME, spread = true, url = (model.URL == "#" || model.URL == "") ? "" : model.URL, children = GetALLleftMenu(model.MENUID, menulist), moduleid = model.MODULEMENUID }); } return obj; } /// /// 根据moduleId获取菜单 /// /// /// /// public List GetRree_leftMenuByModuleId(decimal moduleId, string[] rightIds) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List queryData = _cache.GetList_LeftMemu(); queryData = queryData.Where(m => m.MODULEMENUID == moduleId && m.ISSHOW == 1).OrderBy(m => m.SORTID).Where(m => (m.ISGROUP == 1 || rightIds.Contains(m.RIGHTID))).ToList(); return GetALLleftMenu(0, queryData); } } /// /// 获取默认菜单 /// /// /// public BAS_LEFTMEMU GetDefaultMenu(decimal moduleId, string[] rightIds) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { BAS_LEFTMEMU left = db.BAS_LEFTMEMU.Where(m => m.ISGROUP == 0 && m.ISSHOW == 1 && m.MODULEMENUID == moduleId && rightIds.Contains(m.RIGHTID)).OrderBy(m => m.SORTID).FirstOrDefault(); return left; } } } }