/// <summary> /// 初始化模块 /// </summary> public void Initialize() { using (ISession session = AuthoritySessionProvider.GetSession()) { session.SetBatchSize(200); using (ITransaction transaction = session.BeginTransaction()) { var modules = ReadJsonData(); foreach (var item in modules) { if (!item.IsCommon) { AuthorityModule authorityModule = new AuthorityModule { Name = item.Name, Icon = item.Icon, Enable = true }; InitAuthorityPage(ref authorityModule, item.Children); session.SaveOrUpdate(authorityModule); } } transaction.Commit(); } } }
/// <summary> /// 初始化模块页面 /// </summary> /// <param name="session"></param> /// <param name="moduleName"></param> /// <param name="moduleId"></param> private void InitAuthorityPage(ref AuthorityModule authorityModule, IList <AuthorityBo> pages) { if (pages.Any()) { foreach (var item in pages) { AuthorityPage authorityPage = new AuthorityPage { Name = item.Name, AuthorityModule = authorityModule, Enable = true }; InitPermission(ref authorityPage, item.Children); authorityModule.AuthorityPages.Add(authorityPage); } } }
/// <summary> /// 查询角色权限树 /// </summary> /// <param name="roleId"></param> /// <returns></returns> public IList <PermissionTreeDto> QueryRolePermissionForTree(int roleId) { using (ISession session = AuthoritySessionProvider.GetSession()) { using (ITransaction transaction = session.BeginTransaction()) { List <PermissionTreeDto> trees = new List <PermissionTreeDto>(); PermissionTreeDto tree = new PermissionTreeDto { Title = "系统权限", Expand = true, Category = "root", Id = 0, Children = new List <PermissionTreeDto>() }; Role role = session .QueryOver <Role>() .And(x => x.Id == roleId) .Fetch(SelectMode.ChildFetch, x => x.RoleModules) .Fetch(SelectMode.ChildFetch, x => x.RolePermissions) .List() .FirstOrDefault(); if (role.RoleModules.Any()) { foreach (var module in role.RoleModules) { PermissionTreeDto childModule = new PermissionTreeDto { Title = module.AuthorityModule.Name, Expand = false, Id = module.AuthorityModule.Id, Category = "module", Children = new List <PermissionTreeDto>() }; AuthorityModule authorityModule = module.AuthorityModule; if (authorityModule.AuthorityPages.Any()) { foreach (var page in authorityModule.AuthorityPages) { PermissionTreeDto childPage = new PermissionTreeDto { Title = page.Name, Expand = true, Id = page.Id, Category = "page", Children = new List <PermissionTreeDto>() }; if (page.Permissions.Any()) { var rolePermissions = role.RolePermissions.Select(x => x.Permission); foreach (var permission in page.Permissions) { if (page.Id == permission.AuthorityPage.Id) { bool isChecked = rolePermissions.Contains(permission); PermissionTreeDto childPermission = new PermissionTreeDto { Title = permission.Name, Expand = true, Id = permission.Id, Category = "per", Checked = isChecked, Children = new List <PermissionTreeDto>() }; childPage.Children.Add(childPermission); } } } childModule.Children.Add(childPage); } } tree.Children.Add(childModule); } } trees.Add(tree); transaction.Commit(); return(trees); } } }