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_ROLERIGHTRESOURCE_BL : IBAS_ROLERIGHTRESOURCE, IBAS_ROLERIGHTRESOURCE_Q { #region 获取角色对应的权限ID列表 /// /// 获取角色对应的权限ID列表 /// /// /// 返回object类型 public object GetObjectByRoleId(decimal roleId) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { object obj = (from a in db.BAS_ROLERIGHTRESOURCE.Where(m => m.ROLEID == roleId).ToList() select new { id = a.RIGHTID, toolValue = a.TOOLBARVALUE }); return obj; } } #endregion public IEnumerable IncRolesList(string rightId) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { return db.BAS_ROLERIGHTRESOURCE.Where(p => p.RIGHTID == rightId).Select(p => p.ROLEID).ToList(); } } #region 保存角色权限信息 /// /// 保存角色权限信息 /// /// /// /// public bool Save(ref ValidationErrors errors, decimal roleId, string rightIds, decimal createUser) { try { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { List rightsAndButtons = new List(); if (!string.IsNullOrEmpty(rightIds)) { rightsAndButtons = Utility.JSONToObject>(rightIds); } string[] rightIdList = rightsAndButtons.Select(p => p.rightId).ToArray(); List entryList = db.BAS_ROLERIGHTRESOURCE.Where(m => m.ROLEID == roleId).ToList(); WX.CRM.Model.Entity.BAS_ROLERIGHTRESOURCE model = null; foreach (var right in rightsAndButtons) { WX.CRM.Model.Entity.BAS_ROLERIGHTRESOURCE entry = entryList.Where(m => m.RIGHTID == right.rightId).FirstOrDefault(); if (entry == null)//没有数据 { model = new WX.CRM.Model.Entity.BAS_ROLERIGHTRESOURCE(); model.ROLEID = roleId; model.RIGHTID = right.rightId; model.TOOLBARVALUE = right.buttons; model.CTIME = DateTime.Now; model.CREATEUSER = createUser; db.BAS_ROLERIGHTRESOURCE.Add(model); } else { if (!entry.TOOLBARVALUE.HasValue || (entry.TOOLBARVALUE.Value != right.buttons)) { entry.TOOLBARVALUE = right.buttons; } } } foreach (WX.CRM.Model.Entity.BAS_ROLERIGHTRESOURCE entry in (from d in entryList where !rightIdList.Contains(d.RIGHTID) select d))//将已经没有了的rightID数据删除 { db.BAS_ROLERIGHTRESOURCE.Remove(entry); } return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion public List GetRoleRightResourceByRoleId(decimal[] RoleId) { using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext()) { return db.BAS_ROLERIGHTRESOURCE.Where(p => RoleId.Contains(p.ROLEID)).ToList(); } } public class RightAndButton { public string rightId { get; set; } public decimal buttons { get; set; } } } }