/// <summary>
        ///     获取菜单、字段对应拥有者信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <SystemPrivilegeDetailOutput> GetSystemPrivilegeDetailOutputsByAccessAndValue(
            SystemPrivilegeDetailInput input)
        {
            var output = new SystemPrivilegeDetailOutput();
            //获取角色、组、岗位数据
            IList <SystemPrivilegeDetailListOutput> privilegeDetailDtos =
                (await _permissionUsernRepository.GetSystemPrivilegeDetailOutputsByAccessAndValue(input)).ToList().DistinctBy(
                    p => new { p.Name, p.OrganizationId, p.PrivilegeMaster }).ToList();

            var allOrgs = (await _organizationRepository.FindAllAsync()).ToList();

            foreach (var dto in privilegeDetailDtos)
            {
                string description  = string.Empty;
                var    organization = allOrgs.FirstOrDefault(w => w.OrganizationId == dto.OrganizationId);
                if (organization != null && !organization.ParentIds.IsNullOrEmpty())
                {
                    foreach (var parent in organization.ParentIds.Split(','))
                    {
                        //查找上级
                        var dicinfo = allOrgs.FirstOrDefault(w => w.OrganizationId.ToString() == parent);
                        if (dicinfo != null)
                        {
                            description += dicinfo.Name + ">";
                        }
                    }
                    if (!description.IsNullOrEmpty())
                    {
                        description = description.TrimEnd('>');
                    }
                }
                dto.Organization = description;
            }

            //角色
            output.Role = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.角色).ToList();
            //组
            output.Group = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组).ToList();
            //岗位
            output.Post = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.岗位).ToList();
            //组织机构
            output.Organization = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组织机构).ToList();
            //用户
            output.User = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.人员).ToList();
            return(output);
        }
Пример #2
0
        /// <summary>
        ///     获取菜单、字段对应拥有者信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <SystemPrivilegeDetailOutput> GetSystemPrivilegeDetailOutputsByAccessAndValue(
            SystemPrivilegeDetailInput input)
        {
            var output = new SystemPrivilegeDetailOutput();
            //获取角色、组、岗位数据
            IList <SystemPrivilegeDetailListOutput> privilegeDetailDtos =
                (await _permissionUsernRepository.GetSystemPrivilegeDetailOutputsByAccessAndValue(input)).DistinctBy(
                    p => new { p.Name, p.Organization, p.PrivilegeMaster }).ToList();

            //角色
            output.Role = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.角色).ToList();
            //组
            output.Group = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组).ToList();
            //岗位
            output.Post = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.岗位).ToList();
            //组织机构
            output.Organization = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.组织机构).ToList();
            //用户
            output.User = privilegeDetailDtos.Where(w => w.PrivilegeMaster == EnumPrivilegeMaster.人员).ToList();
            return(output);
        }