/// <summary> /// 通过角色编号获取对应 /// </summary> /// <param name="roleId"></param> /// <returns></returns> public List <Right_Privilege> GetMenusByRoleID(string roleId) { var list = _menuAppService.QueryList(a => a.ID != Guid.Empty); List <Right_Privilege> Dtopilist = new List <Right_Privilege>(); var parentList = list.Where(a => a.ParentId == Guid.Empty && a.Type == (int)Utils.Enum.AM_Enum.MenuTypeEnum.ParentMenu).OrderBy(a => a.SerialNumber); Guid currRoleID = Guid.Empty; Role currRole = null; if (Guid.TryParse(roleId, out currRoleID)) { currRole = _repository.Get(currRoleID); } if (!string.IsNullOrEmpty(roleId)) { } foreach (var item in parentList) { Right_Privilege dtopil = new Right_Privilege() { cateName = item.Name, cateId = item.ID }; dtopil.cateQuanxian = new List <Right_Control>() { new Right_Control() { quanxian = "查看", quanxianid = item.ID, state = 0 } }; if (currRole != null && currRole.RoleMenus.Any(a => a.MenuId.Equals(item.ID))) { dtopil.cateQuanxian[0].state = 1; } dtopil.childCateList = new List <Right_Privilege>(); dtopil.childCateList.AddRange(GetChildPermissions(list, item, currRole)); if (item.ParentId != Guid.Empty) { dtopil.cateQuanxian.AddRange(GetChildMenus(list, item, currRole)); } Dtopilist.Add(dtopil); } return(Dtopilist); }
private IEnumerable <Right_Privilege> GetChildPermissions(List <MenuDto> list, MenuDto item, Role currRole) { List <Right_Privilege> privileges = new List <Right_Privilege>(); var query = list.Where(a => a.ParentId == item.ID).OrderBy(a => a.SerialNumber); foreach (var child in query) { Right_Privilege dtopil = new Right_Privilege() { cateName = child.Name, cateId = child.ID, catePid = child.ID }; dtopil.cateQuanxian = new List <Right_Control>() { new Right_Control() { quanxian = "查看", quanxianid = child.ID, state = 0 } }; if (currRole != null && currRole.RoleMenus.Any(a => a.MenuId.Equals(child.ID))) { dtopil.cateQuanxian[0].state = 1; } dtopil.childCateList = new List <Right_Privilege>(); if (child.Type == 1) { dtopil.childCateList.AddRange(GetChildPermissions(list, child, currRole)); } dtopil.cateQuanxian.AddRange(GetChildMenus(list, child, currRole)); privileges.Add(dtopil); } return(privileges); }