Example #1
0
        /// <summary>
        /// 获取角色的权限集合
        /// </summary>
        /// <param name="RoleId">角色Id</param>
        /// <param name="authorityType">权限类型</param>
        /// <returns></returns>
        public MessageModel GetRoleAuthoritieList(string RoleId, SysEnum.Enum_AuthorityType authorityType)
        {
            var RoleList = sysRoleBLL.GetModels(t => t.RoleId.Equals(RoleId));

            return(new MessageModel
            {
                Data = sysAuthorityDAL.GetSysAuthorities(false, RoleList, authorityType)
            });
        }
Example #2
0
        /// <summary>
        /// 获取用户权限集合
        /// </summary>
        /// <param name="user"></param>
        /// <param name="authorityType"></param>
        /// <returns></returns>
        public MessageModel GetSysAuthorities(SysUser user, SysEnum.Enum_AuthorityType authorityType)
        {
            List <SysRole> roles = new List <SysRole>(user.SysRoles);

            if (user.SysUserGroup != null)
            {
                roles.AddRange(user.SysUserGroup.SysRoles);
            }
            return(new MessageModel
            {
                Data = sysAuthorityDAL.GetSysAuthorities(user.IsAdministrctor, roles.Distinct().ToList(), authorityType)
            });
        }
Example #3
0
        /// <summary>
        /// 根据用户获取功能菜单
        /// </summary>
        /// <param name="user">用户实体</param>
        /// <returns></returns>
        public MessageModel GetMenusBy(SysUser user, SysEnum.Enum_AuthorityType mType)
        {
            var listMenuDto = new List <SysMenuDto>();

            listMenuDtos = Mapper.Map <List <SysMenuDto> >(((List <SysAuthority>)(sysAuthorityBLL.GetSysAuthorities(user, mType).Data)).Select(t => t.SysMenu).ToList());
            //找出所有一级菜单
            listMenuDto.AddRange(listMenuDtos.Where(t => t.ParentMenuId.Equals(Guid.Empty.ToString())).OrderBy(t => t.MenuSort).ThenBy(t => t.CreateTime));
            foreach (var item in listMenuDto)
            {
                item.children = GetMenuChildren(item.MenuId);
            }
            return(new MessageModel
            {
                Data = listMenuDto
            });
        }
Example #4
0
        /// <summary>
        /// 获取角色的权限集合
        /// </summary>
        /// <param name="isAdmin">是否超级管理员</param>
        /// <param name="roles">角色集合</param>
        /// <param name="authorityType">权限类型</param>
        /// <returns></returns>
        public List <SysAuthority> GetSysAuthorities(Boolean isAdmin, List <SysRole> roles, SysEnum.Enum_AuthorityType authorityType)
        {
            StringBuilder builder = new StringBuilder(20);

            builder.AppendLine($@"SELECT DISTINCT SAT.*, SM.*
                                FROM(
                                    SELECT SAT.*
                                    FROM Sys_Authority SAT WHERE DeleteSign={(int)SysEnum.Enum_DeleteSign.Sing_Deleted} ) SAT");
            if (!isAdmin)
            {
                var roleList = roles.Select(t => t.RoleId).ToList();
                if (roleList.Count() == 0)
                {
                    roleList.Add(Guid.Empty.ToString());
                }
                builder.AppendLine($@"INNER JOIN (
                                SELECT srar.AuthorityId
                                FROM Sys_Role srol, Sys_RaRelated srar
                                WHERE srol.RoleId = srar.RoleId
                                    AND srol.RoleId IN ('{string.Join("','", roleList)}')
                            ) t
                            ON t.AuthorityId = SAT.AuthorityId");
            }
            switch (authorityType)
            {
            case SysEnum.Enum_AuthorityType.Type_Menu:
                builder.AppendLine($@"
                                INNER JOIN Sys_AmRelated SAR ON SAR.AuthorityId = SAT.AuthorityId
                                INNER JOIN Sys_Menu SM ON SAR.MenuId = SM.MenuId AND (SM.MenuType=0 OR SM.MenuType=1)");
                break;

            case SysEnum.Enum_AuthorityType.Type_Button:
                builder.AppendLine($@"
                                INNER JOIN Sys_AmRelated SAR ON SAR.AuthorityId = SAT.AuthorityId
                                INNER JOIN Sys_Menu SM ON SAR.MenuId = SM.MenuId AND SM.MenuType=2");
                break;

            case SysEnum.Enum_AuthorityType.ALL:
                builder.AppendLine($@"
                                INNER JOIN Sys_AmRelated SAR ON SAR.AuthorityId = SAT.AuthorityId
                                INNER JOIN Sys_Menu SM ON SAR.MenuId = SM.MenuId");
                break;
            }
            using (var conn = dapper.GetConnection)
            {
                var list = conn.Query <SysAuthority, SysMenu, SysAuthority>(builder.ToString(), (a, b) =>
                {
                    a.SysMenu = b;
                    return(a);
                }, splitOn: "MenuId").ToList();
                return(list);
            }
        }