/// <summary> /// 获取菜单权限 待优化代码 /// </summary> /// <param name="menuId"></param> /// <returns></returns> public async Task <MessageModel <List <SysMenuPowerGroupVM> > > GetMenuPowerGroups(string menuId) { if (string.IsNullOrWhiteSpace(menuId)) { return(MessageModel <List <SysMenuPowerGroupVM> > .Fail("未传入菜单ID")); } //查询菜单是否存在 var sysMenu = await _sysMenuRepository.QueryById(menuId); if (sysMenu != null && sysMenu.Status != 2) { //查询菜单的权限组 var sysMenuPowerGroups = await _dal.Query(d => d.SysMenuID == menuId && d.Status == 1); //var resultR=from sysMenuPowersG in sysMenuPowerGroups.sys var arrayPowerGroups = sysMenuPowerGroups.Select(s => s.SysPowerGroupID).ToArray(); var sysPowers = await _sysPowerRepository.Query(d => (arrayPowerGroups).Contains(d.SysPowerGroupID) && d.Status == 1); var returnMenuPowerGroupsVM = new List <SysMenuPowerGroupVM>(); foreach (var item in sysMenuPowerGroups) { //var sysMenuPowerGroupVM = new SysMenuPowerGroupVM(); var sysMenuPowerGroupVM = new SysMenuPowerGroupVM() { ID = item.ID, Status = item.Status, CreateID = item.CreateID, CreateTime = item.CreateTime, Creator = item.Creator, SysMenuID = item.SysMenuID, SysPowerGroupID = item.SysPowerGroupID }; //mapper 有错误,我也不知道为啥 //try //{ // var source = new Source<SysMenuPowerGroup> { Value = item }; // var destination = _mapper.Map<Destination<SysMenuPowerGroupVM>>(source); // sysMenuPowerGroupVM = destination.Value; //} //catch (Exception ex) //{ // throw; //} //sysMenuPowerGroupVM.SysMenu = sysMenu; sysMenuPowerGroupVM.SysPowers = sysPowers.Where(d => d.SysPowerGroupID == item.SysPowerGroupID).ToList(); sysMenuPowerGroupVM.SysPowerGroup = await _sysPowerGroupRepository.QueryById(item.SysPowerGroupID); returnMenuPowerGroupsVM.Add(sysMenuPowerGroupVM); } return(MessageModel <List <SysMenuPowerGroupVM> > .Success(returnMenuPowerGroupsVM)); } return(MessageModel <List <SysMenuPowerGroupVM> > .Fail("菜单已不存在")); }
/// <summary> /// 实现 菜单树 /// </summary> /// <param name="parentId"></param> /// <returns></returns> public async Task <MessageModel <SysMenuTreeVM> > GetMenuTree(string parentId = "") { if (string.IsNullOrWhiteSpace(parentId)) { parentId = default(Guid).ToString(); } var sysMenus = await _dal.Query(d => d.Status == 1);//里面是没有根节点的,因为根节点是虚拟的 var sysMenuTrees = (from child in sysMenus //where child.IsDeleted == false orderby child.OrderNo select new SysMenuTreeVM { ID = child.ID, MenuId = child.MenuId, Name = child.Name, Url = child.Url, PathUrl = child.PathUrl, Description = child.Description, Icon = child.Icon, OrderNo = child.OrderNo, IsShow = child.IsShow, ParentId = child.ParentId, CreateID = child.CreateID, CreateTime = child.CreateTime, Creator = child.Creator, ModifyID = child.ModifyID, Modifier = child.Modifier, ModifyTime = child.ModifyTime, Status = child.Status, //PowerGroups = _mapper.Map<Destination<List<SysMenuPowerGroupVM>>>(new Source<SysMenuPowerGroup> { Value = _sysMenuPowerGRepository.Query() }).Value; //转换 //将数据转化为T // var source = new Source<SysUser> { Value = sysUserInfo }; //var t = _mapper.Map<Destination<SysUserVM>>(source); //data = MessageModel<SysUserVM>.Success(t.Value); }).ToList(); //虚拟一个根节点 SysMenuTreeVM rootRoot = new SysMenuTreeVM { ID = default(Guid).ToString(), ParentId = default(Guid).ToString(), Name = "根节点", ParentArray = new List <String> {//不知道这块还给不给这个,还是赋值为空,待验证 default(Guid).ToString() } }; sysMenuTrees = sysMenuTrees.OrderBy(d => d.OrderNo).ToList(); //查询出所有菜单权限组 var allSysMenuPowerGs = await _sysMenuPowerGRepository.Query(mg => mg.Status == 1); //查询出所有的权限组 var allSysPowerGroups = await _sysPowerGroupRepository.Query(g => g.Status == 1); //查询每个节点的父节点 数组 foreach (var item in sysMenuTrees) { if (!default(Guid).ToString().Equals(item.ID)) { // List <string> pidArray = new List <string>(); //pidArray.Add(item.ID);//不要自己 var parent = sysMenuTrees.FirstOrDefault(d => d.ID == item.ParentId); while (parent != null) { pidArray.Add(parent.ID); parent = sysMenuTrees.FirstOrDefault(d => d.ID == parent.ParentId); } //补上根节点 pidArray.Add(default(Guid).ToString()); pidArray.Reverse(); item.ParentArray = pidArray; //给每个节点加上权限组 item.PowerGroups = (from child in allSysPowerGroups join mppg in allSysMenuPowerGs on child.ID equals mppg.SysPowerGroupID where mppg.SysMenuID == item.ID orderby child.OrderNo select new SysPowerGroupVM { ID = child.ID, Name = child.Name, OrderNo = child.OrderNo, CreateID = child.CreateID, CreateTime = child.CreateTime, Creator = child.Creator, ModifyID = child.ModifyID, Modifier = child.Modifier, ModifyTime = child.ModifyTime, Status = child.Status, }).ToList(); } } LoopToAppendChildren(sysMenuTrees, rootRoot, parentId);//不是很懂是如何传递回rootRoot的 var messageModel = MessageModel <SysMenuTreeVM> .Success(); if (messageModel.success) { messageModel.data = rootRoot; messageModel.msg = "获取成功"; } return(messageModel); }