/// <summary>
        ///     获取菜单、字段对应拥有者信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public Task <IEnumerable <SystemPrivilegeDetailListOutput> > GetSystemPrivilegeDetailOutputsByAccessAndValue(
            SystemPrivilegeDetailInput input)
        {
            var sql = string.Format(@"SELECT PrivilegeMaster,
                        CASE PrivilegeMaster 
                        WHEN {0} THEN --角色
                        (SELECT Name FROM dbo.System_Role WHERE RoleId=per.PrivilegeMasterValue) 
						WHEN  {1} THEN --组织机构
                        (SELECT Name FROM dbo.System_Organization WHERE OrganizationId=per.PrivilegeMasterValue) 
                         WHEN {2} THEN --组
                        (SELECT Name FROM dbo.System_Group WHERE GroupId=per.PrivilegeMasterValue) 
                         WHEN {3} THEN --岗位
                        (SELECT Name FROM dbo.System_Post WHERE PostId=per.PrivilegeMasterValue)
						WHEN  {4} THEN --人员
                        (SELECT Name FROM dbo.System_UserInfo WHERE UserId=per.PrivilegeMasterValue) 
                        END Name,--名称

                        CASE PrivilegeMaster 
                        WHEN {0} THEN --角色
                        (
                        SELECT Name FROM dbo.System_Organization WHERE OrganizationId =
                        (SELECT OrganizationId FROM dbo.System_Role WHERE RoleId=per.PrivilegeMasterValue)
                        ) 
						WHEN  {1} THEN --组织机构
                        (SELECT Name FROM dbo.System_Organization WHERE OrganizationId=per.PrivilegeMasterValue) 
                         WHEN {2} THEN --组
                        (
                        SELECT Name FROM dbo.System_Organization WHERE OrganizationId =
                        (SELECT OrganizationId FROM dbo.System_Group WHERE GroupId=per.PrivilegeMasterValue) 
                        )
                         WHEN {3} THEN --岗位
                        (
                        SELECT Name FROM dbo.System_Organization WHERE OrganizationId =
                        (SELECT OrganizationId FROM dbo.System_Post WHERE PostId=per.PrivilegeMasterValue)
                        )
						WHEN  {4} THEN --人员
                        (
                        SELECT Name FROM dbo.System_Organization WHERE OrganizationId =
                        (SELECT PrivilegeMasterValue FROM System_PermissionUser u
						 WHERE  u.PrivilegeMaster={1} AND u.PrivilegeMasterUserId=per.PrivilegeMasterValue)
                        )
                        END Organization --组织机构		
                        FROM  dbo.System_Permission per
						WHERE PrivilegeAccessValue=@privilegeAccessValue AND PrivilegeAccess=@privilegeAccess AND PrivilegeMaster IN ({0},{1},{2},{3},{4})"                        ,
                                    (byte)EnumPrivilegeMaster.角色,
                                    (byte)EnumPrivilegeMaster.组织机构,
                                    (byte)EnumPrivilegeMaster.组,
                                    (byte)EnumPrivilegeMaster.岗位,
                                    (byte)EnumPrivilegeMaster.人员);

            return(SqlMapperUtil.SqlWithParams <SystemPrivilegeDetailListOutput>(sql, new
            {
                privilegeAccessValue = input.Id,
                privilegeAccess = (byte)input.Access
            }));
        }
        /// <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);
        }
예제 #3
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);
        }
예제 #4
0
 public async Task <JsonResult> GetSystemPrivilegeDetailOutputsByAccessAndValue(SystemPrivilegeDetailInput input)
 {
     return(Json(await _permissionUserLogic.GetSystemPrivilegeDetailOutputsByAccessAndValue(input)));
 }