Ejemplo n.º 1
0
        public async Task DeleteWebMenuAuthorityAsync(Guid id)
        {
            List <WebMenuAuthority> allWebMenuAuthorities = await _webMenuAuthorityRepository.GetAllInfoFromCacheAsync();

            WebMenuAuthority webMenuAuthorityFromDB = allWebMenuAuthorities.FirstOrDefault(m => m.ID == id);

            if (webMenuAuthorityFromDB == null)
            {
                throw new InvalidOperationException("API权限不存在");
            }
            ICollection <WebMenuAuthority> allChild = GetAllChild(allWebMenuAuthorities, id);

            foreach (WebMenuAuthority menuAuthority in allChild)
            {
                _authorityUnitOfWork.RegisterDelete(menuAuthority);
            }
            _authorityUnitOfWork.RegisterDelete(webMenuAuthorityFromDB);
            await _authorityUnitOfWork.CommitAsync();

            _webMenuAuthorityRepository.ClearCache();
        }
Ejemplo n.º 2
0
        public async Task <RoleDTO> GetRoleInfoAsync(Guid id)
        {
            Role roleFromDB = await _roleRepository.FirstOrDefaultAsync(id);

            if (roleFromDB == null)
            {
                throw new InvalidOperationException("角色不存在");
            }
            var result = _mapper.Map <RoleDTO>(roleFromDB);
            List <WebMenuAuthority> allWebMenuAuthorities = await _webMenuAuthorityRepository.GetAllInfoFromCacheAsync();

            List <RoleWebMenuAuthority> roleOwnedWebMenus = await _roleWebMenuAuthorityRepository.WhereAsync(m => m.RoleID == id).ToList();

            Guid[] roleHasWebMenuID = roleOwnedWebMenus.Select(m => m.WebMenuAuthorityID).ToArray();
            result.WebMenuAuthorityTreeList = TreeHelper.GetTreeList <RoleWebMenuAuthorityTreeDTO, WebMenuAuthority, Guid>(allWebMenuAuthorities, null,
                                                                                                                           webMenuAuthority =>
            {
                var temp   = webMenuAuthority.CopyProperties <RoleWebMenuAuthorityTreeDTO>(nameof(WebMenuAuthority.Child), nameof(WebMenuAuthority.RoleWebMenuAuthorities));
                temp.Owned = roleHasWebMenuID.Contains(webMenuAuthority.ID);
                return(temp);
            });
            List <APIAuthority> allAPIAuthorities = await _apiAuthorityRepository.GetAllInfoFromCacheAsync();

            List <RoleAPIAuthority> roleOwnedAPIs = await _roleAPIAuthorityRepository.WhereAsync(m => m.RoleID == id).ToList();

            Guid[] roleHasAPIID = roleOwnedAPIs.Select(m => m.APIAuthorityID).ToArray();
            result.APIAuthorityTreeList = TreeHelper.GetTreeList <RoleAPIAuthorityTreeDTO, APIAuthority, Guid>(allAPIAuthorities, null,
                                                                                                               apiAuthority =>
            {
                var temp   = apiAuthority.CopyProperties <RoleAPIAuthorityTreeDTO>(nameof(APIAuthority.Child), nameof(APIAuthority.RoleAPIAuthorities));
                temp.Owned = roleHasAPIID.Contains(apiAuthority.ID);
                return(temp);
            });
            List <ActionAuthority> allActionAuthorities = await _actionAuthorityRepository.WhereAsync(m => true).ToList();

            List <RoleActionAuthority> roleOwnedActions = await _roleActionAuthorityRepository.WhereAsync(m => m.RoleID == id).ToList();

            Guid[] roleHasActionID = roleOwnedActions.Select(m => m.ActionAuthorityID).ToArray();
            result.ActionAuthorityList = allActionAuthorities.Select(m => new RoleActionAuthorityListDTO
            {
                ActionGroupCode = m.ActionGroupCode,
                Code            = m.Code,
                ID    = m.ID,
                Name  = m.Name,
                Owned = roleHasActionID.Contains(m.ID)
            }).ToList();
            return(result);
        }