public async Task DeleteWebMenuAsync([Required(ErrorMessage = "唯一标识不能为空")] Guid id) { List <WebMenu> allWebMenus = await _webMenuRepository.FindAsync(m => true); WebMenu webMenuFromDB = allWebMenus.FirstOrDefault(m => m.ID == id); if (webMenuFromDB == null) { throw new InvalidOperationException("网页菜单权限不存在"); } ICollection <WebMenu> allChild = GetAllChild(allWebMenus, id); foreach (WebMenu menuAuthority in allChild) { _authorityUnitOfWork.RegisterDelete(menuAuthority); } _authorityUnitOfWork.RegisterDelete(webMenuFromDB); await _authorityUnitOfWork.CommitAsync(); }
public async Task <RoleDTO> GetRoleInfoAsync([Required(ErrorMessage = "唯一标识不能为空")] Guid id) { Role roleFromDB = await _roleRepository.FirstOrDefaultAsync(id); if (roleFromDB == null) { throw new InvalidOperationException("角色不存在"); } var result = _mapper.Map <RoleDTO>(roleFromDB); List <WebMenu> webMenus = await _webMenuRepository.FindAsync(m => m.SubSystemID == roleFromDB.SubSystemID); List <RoleWebMenuMap> roleWebMenuMaps = await _roleWebMenuRepository.FindAsync(m => m.RoleID == id); Guid[] roleHasWebMenuID = roleWebMenuMaps.Select(m => m.WebMenuID).ToArray(); result.WebMenuTreeList = TreeHelper.GetTreeList <RoleWebMenuTreeDTO, WebMenu, Guid>(webMenus, null, webMenu => { var temp = webMenu.CopyProperties <RoleWebMenuTreeDTO>(); temp.Owned = roleHasWebMenuID.Contains(webMenu.ID); return(temp); }); return(result); }