using CRM.Core.BLL.Util; using CRM.Core.Model.Entity; using System; using System.Collections.Generic; using System.Linq; using WX.CRM.Common; namespace CRM.Core.BLL.Base { public class BAS_RIGHTGROUP_BL { public List GetList() { using (zxdContext db = new zxdContext()) { return db.BAS_RIGHTGROUP.ToList(); } } /// /// 新增 /// /// /// /// public bool Create(ref ValidationErrors errors, BAS_RIGHTGROUP model) { try { using (zxdContext db = new zxdContext()) { db.BAS_RIGHTGROUP.Add(model); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #region 删除 /// /// 删除 /// /// /// /// public bool Delete(ref ValidationErrors errors, decimal id) { try { using (var db = new zxdContext()) { var 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, BAS_RIGHTGROUP model) { try { using (var db = new zxdContext()) { var 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 BAS_RIGHTGROUP GetModel(decimal id) { using (var db = new zxdContext()) { var entry = db.BAS_RIGHTGROUP.FirstOrDefault(m => m.PKID == id); return entry; } } #endregion #region 树形结构数据(异步获取:包含了权限) /// /// 获取节点数据 包括:子权限组+权限 /// /// /// public object GetNodeTreeList(decimal fid) { using (var db = new zxdContext()) { var rightGroup = db.BAS_RIGHTGROUP.ToList(); var rightList = db.BAS_RIGHT.ToList();//获取所有权限列表 List obj = GetRightTreeChildList(rightGroup, rightList, fid); if (obj == null) obj = new List(); foreach (var 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 (var db = new zxdContext()) { var 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 (var 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 (var db = new zxdContext()) { var rightGroup = db.BAS_RIGHTGROUP.ToList(); var rightList = db.BAS_RIGHT.ToList();//获取所有权限列表 List obj = new List(); List childobj = new List(); childobj = GetRightTreeChildList(rightGroup, rightList, 0, isSelect); //var right_buttons = new BAS_RIGHT_TOOLBUTTON_BL().GetALLToolButton(); //var noGroupRight = rightList.Where(o => o.GROUPID.HasValue == false).ToList(); //var level = 1; //foreach (var right in noGroupRight) //{ // var 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, name = right.RNAME + buttons }); // childobj.Add(new { id = right.RIGHTID, title = right.RNAME, isLast = false, level, parentId = 0 }); // level++; //} //obj.Add(new { id = 0, name = "权限树结构", children = childobj, spread = true }); obj.Add(new { id = 0, title = "权限树结构", isLast = false, level = 0, parentId = 0, checkArr = new List() { new { type = 0, isChecked = 0 } }, 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; var right_buttons = new BAS_RIGHT_TOOLBUTTON_BL().GetALLToolButton(); foreach (var model in rightGroup.FindAll(m => m.PARENTID == parentId)) { nchildObj = GetRightTreeChildList(rightGroup, rightList, model.PKID, isSelect); if (nchildObj == null) nchildObj = new List(); foreach (var right in rightList.Where(m => m.GROUPID == model.PKID)) { var toolButton = right_buttons.Where(p => p.RIGHTID.Equals(right.RIGHTID)).ToList(); var buttonChild = new List(); foreach (var button in toolButton) { buttonChild.Add(new { id = right.RIGHTID + "_" + button.BUTTONID, title = button.BUTTONNAME, isLast = true, checkArr = new List() { new { type = 0, isChecked = 0 } } }); } nchildObj.Add(new { id = right.RIGHTID, title = right.RNAME, isLast = false, parentId = 0, checkArr = new List() { new { type = 0, isChecked = 0 } }, children = buttonChild }); } if (nchildObj.Count == 0) { //childObj = new { id = model.PKID, name = model.NAME }; childObj = new { id = model.PKID, title = model.NAME, isLast = true, parentId, checkArr = new List() { new { type = 0, isChecked = 0 } } }; } else { //childObj = new { id = model.PKID, name = model.NAME, children = nchildObj, spread = true }; childObj = new { id = model.PKID, title = model.NAME, isLast = false, parentId, checkArr = new List() { new { type = 0, isChecked = 0 } }, children = nchildObj }; } obj.Add(childObj); } return obj; } #endregion } }