using System; using System.Collections.Generic; using System.Linq; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.IBLL.Base; namespace WX.CRM.BLL.Base { public class BAS_RIGHTGROUP_BL : IBAS_RIGHTGROUP, IBAS_RIGHTGROUP_Q { #region 新增 /// /// 新增 /// /// /// /// public bool Create(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_RIGHTGROUP model) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { model.PKID = new SEQUENCES_BL().Seq_base_get(); db.BAS_RIGHTGROUP.Add(model); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 删除 /// /// 删除 /// /// /// /// public bool Delete(ref ValidationErrors errors, decimal id) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_RIGHTGROUP entry = db.BAS_RIGHTGROUP.FirstOrDefault(m => m.PKID == id); if (entry != null) db.BAS_RIGHTGROUP.Remove(entry); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 修改数据 /// /// 修改数据 /// /// /// /// public bool Update(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_RIGHTGROUP model) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_RIGHTGROUP rightGroup = db.BAS_RIGHTGROUP.FirstOrDefault(m => m.PKID == model.PKID); rightGroup.PARENTID = model.PARENTID; rightGroup.NAME = model.NAME; db.SaveChanges(); return true; } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 获取单个实体 /// /// 获取单个实体 /// /// /// public WX.CRM.Model.Entity.BAS_RIGHTGROUP GetModel(decimal id) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { WX.CRM.Model.Entity.BAS_RIGHTGROUP entry = db.BAS_RIGHTGROUP.FirstOrDefault(m => m.PKID == id); return entry; } } #endregion #region 树形结构数据(异步获取:包含了权限) /// /// 获取节点数据 包括:子权限组+权限 /// /// /// public object GetNodeTreeList(decimal fid) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List rightGroup = db.BAS_RIGHTGROUP.ToList(); List rightList = db.BAS_RIGHT.ToList();//获取所有权限列表 List obj = GetRightTreeChildList(rightGroup, rightList, fid); if (obj == null) obj = new List(); foreach (WX.CRM.Model.Entity.BAS_RIGHT right in rightList.Where(m => m.GROUPID == fid)) { obj.Add(new { id = right.RIGHTID, text = right.RNAME, iconCls = "icon-redmini", attributes = "right" }); } return obj; } } /// /// 获取顶端 /// /// public object GetTopTreeList() { return new List() { new { id = 0, text = "权限树结构", attributes = "group", iconCls = "icon-group", children = GetNodeTreeList(0) } }; } #endregion #region 获取tree数据列表(一次性获取:不包含权限) /// /// 获取tree数据列表(一次性获取:不包含权限) /// /// public object GetAllTreeList() { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List rightGroup = db.BAS_RIGHTGROUP.ToList(); List obj = new List(); obj.Add(new { id = 0, text = "权限树结构", iconCls = "icon-group", children = GetTreeChildList(rightGroup, 0) }); return obj; } } /// /// 获取子节点 /// /// /// /// private object GetTreeChildList(List rightGroup, decimal parentId) { List obj = null; object childObj = null; foreach (WX.CRM.Model.Entity.BAS_RIGHTGROUP model in rightGroup.FindAll(m => m.PARENTID == parentId)) { if (obj == null) obj = new List(); childObj = new { id = model.PKID, text = model.NAME, children = GetTreeChildList(rightGroup, model.PKID) }; obj.Add(childObj); } return obj; } #endregion #region 获取tree数据列表(一次性获取:包含权限) /// /// 获取tree数据列表(一次性获取:包含权限) /// /// public object GetRightTreeList(bool isSelect = false) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List rightGroup = db.BAS_RIGHTGROUP.ToList(); List rightList = db.BAS_RIGHT.ToList();//获取所有权限列表 List obj = new List(); List childobj = new List(); childobj = GetRightTreeChildList(rightGroup, rightList, 0, isSelect); List right_buttons = new BAS_RIGHT_TOOLBUTTON_BL().GetALLToolButton(); List noGroupRight = rightList.Where(o => o.GROUPID.HasValue == false).ToList(); foreach (WX.CRM.Model.Entity.BAS_RIGHT right in noGroupRight) { List toolButton = right_buttons.Where(p => p.RIGHTID.Equals(right.RIGHTID)).ToList(); string buttons = ""; if (toolButton != null && toolButton.Count > 0) { buttons = " 按钮:"; if (isSelect) { foreach (var button in toolButton) { buttons += string.Format("{2}", right.RIGHTID, button.BUTTONID, button.BUTTONNAME); } } else { buttons += string.Join(" , ", toolButton.Select(p => p.BUTTONNAME).ToArray()); } } childobj.Add(new { id = right.RIGHTID, text = right.RNAME + buttons, iconCls = "icon-redmini", attributes = "right" }); } obj.Add(new { id = 0, text = "权限树结构", iconCls = "icon-group", children = childobj }); return obj; } } /// /// 获取子节点 /// /// /// /// private List GetRightTreeChildList(List rightGroup, List rightList, decimal parentId, bool isSelect = false) { List obj = new List(); ; object childObj = null; List nchildObj = null; List right_buttons = new BAS_RIGHT_TOOLBUTTON_BL().GetALLToolButton(); foreach (WX.CRM.Model.Entity.BAS_RIGHTGROUP model in rightGroup.FindAll(m => m.PARENTID == parentId)) { //if (obj == null) nchildObj = GetRightTreeChildList(rightGroup, rightList, model.PKID, isSelect); if (nchildObj == null) nchildObj = new List(); foreach (WX.CRM.Model.Entity.BAS_RIGHT right in rightList.Where(m => m.GROUPID == model.PKID)) { List toolButton = right_buttons.Where(p => p.RIGHTID.Equals(right.RIGHTID)).ToList(); string buttons = ""; if (toolButton != null && toolButton.Count > 0) { buttons = " 按钮:"; if (isSelect) { foreach (var button in toolButton) { buttons += string.Format("{2}", right.RIGHTID, button.BUTTONID, button.BUTTONNAME); } } else { buttons += string.Join(" , ", toolButton.Select(p => p.BUTTONNAME).ToArray()); } } nchildObj.Add(new { id = right.RIGHTID, text = right.RNAME + buttons, iconCls = "icon-redmini", attributes = "right" }); } if (nchildObj.Count == 0) childObj = new { id = model.PKID, text = model.NAME }; else childObj = new { id = model.PKID, text = model.NAME, children = nchildObj }; obj.Add(childObj); } return obj; } #endregion } }