/// <summary> /// /// </summary> /// <param name="userId"></param> /// <returns></returns> public async Task <List <MenuVM> > GetMenu(int userId) { List <MenuVM> parentMenuList = new List <MenuVM>(); //获得用户直接角色 var roleIds = await Task.Run(() => _roleUsers_dal.Query(r => r.User_Id == userId).Result.Select(r => r.Role_Id).ToList()); //获得用户组 var userGroupIds = await Task.Run(() => _userGroupUsers_dal.Query(m => m.User_Id == userId).Result.Select(g => g.UserGroup_Id).ToList()); //获得用户组角色 var userGroupRoleIds = await Task.Run(() => _userGroupRoles_dal.Query(r => userGroupIds.Contains(r.UserGroup_Id)).Result.Select(r => r.Role_Id).ToList()); //获得用户总角色 roleIds.AddRange(userGroupRoleIds); var roleIdsByUser = roleIds.Distinct().ToList(); //获得用户总角色权限 var permissionIds = await Task.Run(() => _permissionRoles_dal.Query(p => roleIdsByUser.Contains(p.Role_Id)).Result.Select(p => p.Permission_Id).Distinct().ToList()); var permissions = await Task.Run(() => _permissions_dal.Query(p => p.Enabled && permissionIds.Contains(p.Id))); //获得用户权限菜单 var ModuleIds = permissions.Select(p => p.ModuleId).Distinct().ToList(); var childModules = await Task.Run(() => _modules_dal.Query(m => ModuleIds.Contains(m.Id))); if (childModules.Count > 0) { var ParentIds = childModules.Select(m => m.ParentId).Distinct().ToList(); var parentMenu = await Task.Run(() => _modules_dal.Query(m => ParentIds.Contains(m.Id)).Result); foreach (var item in parentMenu) { MenuVM menu = new MenuVM(); menu.id = item.Id; menu.isOpen = false; menu.text = item.Name; menu.icon = item.Icon; menu.children = new List <MenuVM>(); foreach (var child in childModules) { MenuVM childMenu = new MenuVM(); if (child.ParentId == item.Id) { childMenu.id = child.Id; childMenu.isOpen = false; childMenu.url = child.LinkUrl; childMenu.text = child.Name; childMenu.targetType = "iframe-tab"; childMenu.icon = child.Icon; menu.children.Add(childMenu); } } parentMenuList.Add(menu); } } return(parentMenuList); }
public async Task <IResultModel> Query(ModulesQueryModel model) { var result = new QueryResultModel <ModulesEntity> { Rows = await _repository.Query(model), Total = model.TotalCount }; return(ResultModel.Success(result)); }