/// <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) }); }
/// <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) }); }
/// <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 }); }
/// <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); } }