From 978a7fab4c7dc6fe8183594e845ee2ca4e57a7d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sat, 7 Sep 2024 02:17:07 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90ruoyi=E3=80=81pur?= =?UTF-8?q?e=E8=8F=9C=E5=8D=95=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/AccountService.cs | 23 +- .../Dtos/UserRoleMenuDto.cs | 5 + .../Dtos/Vue3PureRouterDto.cs | 10 +- .../Enums/MenuSourceEnum.cs | 7 + .../Entities/MenuAggregateRoot.cs | 71 +- .../DataSeeds/MenuPureDataSeed.cs | 519 ++++++++++++++ .../{MenuDataSeed.cs => MenuRuoYiDataSeed.cs} | 662 +++++++++--------- Yi.Pure.Vue3/mock/asyncRoutes.ts | 67 ++ Yi.Pure.Vue3/src/api/{user.ts => account.ts} | 0 Yi.Pure.Vue3/src/api/routes.ts | 10 +- Yi.Pure.Vue3/src/api/system.ts | 52 -- Yi.Pure.Vue3/src/router/utils.ts | 10 +- Yi.Pure.Vue3/src/store/modules/user.ts | 2 +- Yi.Pure.Vue3/src/views/login/index.vue | 3 +- .../src/views/monitor/logs/system/detail.vue | 4 +- .../src/views/monitor/logs/system/hook.tsx | 44 +- 16 files changed, 1052 insertions(+), 437 deletions(-) create mode 100644 Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Enums/MenuSourceEnum.cs create mode 100644 Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuPureDataSeed.cs rename Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/{MenuDataSeed.cs => MenuRuoYiDataSeed.cs} (71%) rename Yi.Pure.Vue3/src/api/{user.ts => account.ts} (100%) delete mode 100644 Yi.Pure.Vue3/src/api/system.ts diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/AccountService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/AccountService.cs index 3a97bd76..0882a965 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/AccountService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/AccountService.cs @@ -275,11 +275,12 @@ namespace Yi.Framework.Rbac.Application.Services /// /// 获取当前登录用户的前端路由 + /// 支持ruoyi/pure /// /// [Authorize] - [Route("account/Vue3Router")] - public async Task> GetVue3Router() + [Route("account/Vue3Router/{routerType?}")] + public async Task GetVue3Router([FromRoute]string? routerType) { var userId = _currentUser.Id; if (_currentUser.Id is null) @@ -296,10 +297,20 @@ namespace Yi.Framework.Rbac.Application.Services menus = ObjectMapper.Map, List>(await _menuRepository.GetListAsync()); } - //将后端菜单转换成前端路由,组件级别需要过滤 - List routers = - ObjectMapper.Map, List>(menus).Vue3RouterBuild(); - return routers; + object output = null; + if (routerType is null ||routerType=="ruoyi") + { + //将后端菜单转换成前端路由,组件级别需要过滤 + output = + ObjectMapper.Map, List>(menus).Vue3RuoYiRouterBuild(); + } + else if (routerType =="pure") + { + //将后端菜单转换成前端路由,组件级别需要过滤 + output = + ObjectMapper.Map, List>(menus).Vue3PureRouterBuild(); + } + return output; } /// diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/UserRoleMenuDto.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/UserRoleMenuDto.cs index 478a51e0..199b98e9 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/UserRoleMenuDto.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/UserRoleMenuDto.cs @@ -195,6 +195,11 @@ namespace Yi.Framework.Rbac.Domain.Shared.Dtos public class MenuDto { public Guid Id { get; set; } + /// + /// 菜单来源 + /// + public MenuSourceEnum MenuSource { get; set; } + public string? RouterName { get; set; } /// /// 逻辑删除 diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/Vue3PureRouterDto.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/Vue3PureRouterDto.cs index 6c25e5ed..5ec31acc 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/Vue3PureRouterDto.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/Vue3PureRouterDto.cs @@ -2,10 +2,13 @@ public class Vue3PureRouterDto { + public Guid Id { get; set; } + public Guid ParentId { get; set; } public string Path { get; set; } public string Name { get; set; } public MetaPureRouterDto Meta { get; set; } = new MetaPureRouterDto(); - + + public string? component { get; set; } public List? Children { get; set; } } @@ -14,11 +17,6 @@ public class MetaPureRouterDto public string Icon { get; set; } public string Title { get; set; } - /// - /// 排序 - /// - public string Rank { get; set; } - public List? Roles { get; set; } public List? Auths { get; set; } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Enums/MenuSourceEnum.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Enums/MenuSourceEnum.cs new file mode 100644 index 00000000..36c97c3d --- /dev/null +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Enums/MenuSourceEnum.cs @@ -0,0 +1,7 @@ +namespace Yi.Framework.Rbac.Domain.Shared.Enums; + +public enum MenuSourceEnum +{ + Ruoyi=0, + Pure=1 +} \ No newline at end of file diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/MenuAggregateRoot.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/MenuAggregateRoot.cs index 49b981b2..c79a1978 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/MenuAggregateRoot.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/MenuAggregateRoot.cs @@ -1,4 +1,5 @@ -using SqlSugar; +using NUglify.Helpers; +using SqlSugar; using Volo.Abp; using Volo.Abp.Auditing; using Volo.Abp.Domain.Entities; @@ -75,7 +76,12 @@ namespace Yi.Framework.Rbac.Domain.Entities /// /// 菜单名 /// - public string MenuName { get; set; } = string.Empty; + public string MenuName { get; set; } + + /// + /// 路由名称 + /// + public string? RouterName { get; set; } /// /// @@ -137,6 +143,11 @@ namespace Yi.Framework.Rbac.Domain.Entities [SugarColumn(ColumnName = "Component")] public string? Component { get; set; } + /// + /// 菜单来源 + /// + public MenuSourceEnum MenuSource { get; set; } = MenuSourceEnum.Ruoyi; + /// /// 路由参数 /// @@ -156,9 +167,13 @@ namespace Yi.Framework.Rbac.Domain.Entities /// /// /// - public static List Vue3RouterBuild(this List menus) + public static List Vue3RuoYiRouterBuild(this List menus) { - menus = menus.Where(m => m.MenuType != MenuTypeEnum.Component).ToList(); + menus = menus + .Where(m => m.State == true) + .Where(m => m.MenuType != MenuTypeEnum.Component) + .Where(m => m.MenuSource == MenuSourceEnum.Ruoyi) + .ToList(); List routers = new(); foreach (var m in menus) { @@ -216,16 +231,58 @@ namespace Yi.Framework.Rbac.Domain.Entities return TreeHelper.SetTree(routers); } - + /// /// 构建vue3 pure路由 /// /// /// - /// public static List Vue3PureRouterBuild(this List menus) { - throw new NotImplementedException(); + //pure的菜单为树形 + var allRouters = menus + .Where(m => m.State == true) + .Where(m => m.MenuType != MenuTypeEnum.Component) + .Where(m => m.MenuSource == MenuSourceEnum.Pure) + .Select(m => new Vue3PureRouterDto + { + Path = m.Router.StartsWith("/")?m.Router:"/"+m.Router, + Name = m.RouterName, + component = m.Component, + Meta = new MetaPureRouterDto() + { + showLink = m.IsShow, + FrameSrc = m.IsLink == true ? m.Router : null, + Auths = new List() { m.PermissionCode }, + Icon = m.MenuIcon, + Title = m.MenuName, + + }, + Children =null, + Id = m.Id, + ParentId = m.ParentId + }) + .ToList(); + + + var routerDic = allRouters.GroupBy(x => x.ParentId).ToDictionary(x => x.Key,y=>y.ToList()); + //根路由 + if (!routerDic.TryGetValue(Guid.Empty, out var rootRouters)) + { + return new List(); + } + Stack stack = new Stack(rootRouters); + while (stack.Count > 0) + { + var currentRouter = stack.Pop(); + if (routerDic.TryGetValue(currentRouter.Id, out var items)) + { + currentRouter.Children = items; + items?.ForEach(x => stack.Push(x)); + } + } + + return rootRouters; } } } \ No newline at end of file diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuPureDataSeed.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuPureDataSeed.cs new file mode 100644 index 00000000..948d6412 --- /dev/null +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuPureDataSeed.cs @@ -0,0 +1,519 @@ +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Guids; +using Yi.Framework.Rbac.Domain.Entities; +using Yi.Framework.Rbac.Domain.Shared.Enums; +using Yi.Framework.SqlSugarCore.Abstractions; + +namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds +{ + public class MenuPureDataSeed : IDataSeedContributor, ITransientDependency + { + private ISqlSugarRepository _repository; + private IGuidGenerator _guidGenerator; + public MenuPureDataSeed(ISqlSugarRepository repository, IGuidGenerator guidGenerator) + { + _repository = repository; + _guidGenerator = guidGenerator; + } + + public async Task SeedAsync(DataSeedContext context) + { + if (!await _repository.IsAnyAsync(x => x.MenuName == "系统管理"&&x.MenuSource==MenuSourceEnum.Pure)) + { + await _repository.InsertManyAsync(GetSeedData()); + } + } + public List GetSeedData() + { + List entities = new List(); + //系统管理 + MenuAggregateRoot system = new MenuAggregateRoot(_guidGenerator.Create(), Guid.Empty) + { + MenuName = "系统管理", + MenuType = MenuTypeEnum.Catalogue, + Router = "/system", + MenuIcon = "ri:settings-3-line", + OrderNum = 100 + }; + entities.Add(system); + + //系统监控 + MenuAggregateRoot monitoring = new MenuAggregateRoot(_guidGenerator.Create()) + { + MenuName = "系统监控", + MenuType = MenuTypeEnum.Catalogue, + Router = "/monitor", + MenuIcon = "menus.pureSysMonitor", + OrderNum = 99, + }; + entities.Add(monitoring); + + + //在线用户 + MenuAggregateRoot online = new MenuAggregateRoot(_guidGenerator.Create(), monitoring.Id) + { + MenuName = "在线用户", + PermissionCode = "monitor:online:list", + MenuType = MenuTypeEnum.Menu, + Router = "/monitor/online-user", + MenuIcon = "ri:user-voice-line", + OrderNum = 100, + RouterName = "OnlineUser", + Component = "monitor/online/index" + }; + entities.Add(online); + + + //Yi框架 + MenuAggregateRoot guide = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "Yi框架", + MenuType = MenuTypeEnum.Catalogue, + Router = "https://gitee.com/ccnetcore/yi", + IsLink = true, + MenuIcon = "guide", + OrderNum = 90, + }; + entities.Add(guide); + + //用户管理 + MenuAggregateRoot user = new MenuAggregateRoot(_guidGenerator.Create()) + { + MenuName = "用户管理", + PermissionCode = "system:user:list", + MenuType = MenuTypeEnum.Menu, + Router = "/system/user/index", + MenuIcon = "ri:admin-line", + OrderNum = 100, + ParentId = system.Id, + RouterName = "SystemUser" + }; + entities.Add(user); + + MenuAggregateRoot userQuery = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "用户查询", + PermissionCode = "system:user:query", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = user.Id, + IsDeleted = false + }; + entities.Add(userQuery); + + MenuAggregateRoot userAdd = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "用户新增", + PermissionCode = "system:user:add", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = user.Id, + IsDeleted = false + }; + entities.Add(userAdd); + + MenuAggregateRoot userEdit = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "用户修改", + PermissionCode = "system:user:edit", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = user.Id, + IsDeleted = false + }; + entities.Add(userEdit); + + MenuAggregateRoot userRemove = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "用户删除", + PermissionCode = "system:user:remove", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = user.Id, + IsDeleted = false + }; + entities.Add(userRemove); + + + MenuAggregateRoot userResetPwd = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "重置密码", + PermissionCode = "system:user:resetPwd", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = user.Id, + IsDeleted = false + }; + entities.Add(userResetPwd); + + + //角色管理 + MenuAggregateRoot role = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "角色管理", + PermissionCode = "system:role:list", + MenuType = MenuTypeEnum.Menu, + Router = "/system/role/index", + MenuIcon = "ri:admin-fill", + OrderNum = 99, + ParentId = system.Id, + RouterName = "SystemRole" + }; + entities.Add(role); + + MenuAggregateRoot roleQuery = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "角色查询", + PermissionCode = "system:role:query", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = role.Id, + IsDeleted = false + }; + entities.Add(roleQuery); + + MenuAggregateRoot roleAdd = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "角色新增", + PermissionCode = "system:role:add", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = role.Id, + IsDeleted = false + }; + entities.Add(roleAdd); + + MenuAggregateRoot roleEdit = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "角色修改", + PermissionCode = "system:role:edit", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = role.Id, + IsDeleted = false + }; + entities.Add(roleEdit); + + MenuAggregateRoot roleRemove = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "角色删除", + PermissionCode = "system:role:remove", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = role.Id, + IsDeleted = false + }; + entities.Add(roleRemove); + + + //菜单管理 + MenuAggregateRoot menu = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "菜单管理", + PermissionCode = "system:menu:list", + MenuType = MenuTypeEnum.Menu, + Router = "/system/menu/index", + MenuIcon = "ep:menu", + OrderNum = 98, + ParentId = system.Id, + RouterName = "SystemMenu" + }; + entities.Add(menu); + + MenuAggregateRoot menuQuery = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "菜单查询", + PermissionCode = "system:menu:query", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = menu.Id, + IsDeleted = false + }; + entities.Add(menuQuery); + + MenuAggregateRoot menuAdd = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "菜单新增", + PermissionCode = "system:menu:add", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = menu.Id, + IsDeleted = false + }; + entities.Add(menuAdd); + + MenuAggregateRoot menuEdit = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "菜单修改", + PermissionCode = "system:menu:edit", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = menu.Id, + IsDeleted = false + }; + entities.Add(menuEdit); + + MenuAggregateRoot menuRemove = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "菜单删除", + PermissionCode = "system:menu:remove", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = menu.Id, + IsDeleted = false + }; + entities.Add(menuRemove); + + //部门管理 + MenuAggregateRoot dept = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "部门管理", + PermissionCode = "system:dept:list", + MenuType = MenuTypeEnum.Menu, + Router = "/system/dept/index", + MenuIcon = "ri:git-branch-line", + OrderNum = 97, + ParentId = system.Id, + RouterName = "SystemDept" + }; + entities.Add(dept); + + MenuAggregateRoot deptQuery = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "部门查询", + PermissionCode = "system:dept:query", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = dept.Id, + IsDeleted = false + }; + entities.Add(deptQuery); + + MenuAggregateRoot deptAdd = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "部门新增", + PermissionCode = "system:dept:add", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = dept.Id, + IsDeleted = false + }; + entities.Add(deptAdd); + + MenuAggregateRoot deptEdit = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "部门修改", + PermissionCode = "system:dept:edit", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = dept.Id, + IsDeleted = false + }; + entities.Add(deptEdit); + + MenuAggregateRoot deptRemove = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "部门删除", + PermissionCode = "system:dept:remove", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = dept.Id, + IsDeleted = false + }; + entities.Add(deptRemove); + + + + //岗位管理 + MenuAggregateRoot post = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "岗位管理", + PermissionCode = "system:post:list", + MenuType = MenuTypeEnum.Menu, + Router = "/system/post/index", + MenuIcon = "ant-design:deployment-unit-outlined", + OrderNum = 96, + ParentId = system.Id, + RouterName = "SystemPost" + }; + entities.Add(post); + + MenuAggregateRoot postQuery = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "岗位查询", + PermissionCode = "system:post:query", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = post.Id, + IsDeleted = false + }; + entities.Add(postQuery); + + MenuAggregateRoot postAdd = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "岗位新增", + PermissionCode = "system:post:add", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = post.Id, + IsDeleted = false + }; + entities.Add(postAdd); + + MenuAggregateRoot postEdit = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "岗位修改", + PermissionCode = "system:post:edit", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = post.Id, + IsDeleted = false + }; + entities.Add(postEdit); + + MenuAggregateRoot postRemove = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "岗位删除", + PermissionCode = "system:post:remove", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = post.Id, + IsDeleted = false + }; + entities.Add(postRemove); + + + //操作日志 + MenuAggregateRoot operationLog = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "操作日志", + PermissionCode = "monitor:operlog:list", + MenuType = MenuTypeEnum.Menu, + Router = "/monitor/operation-logs", + MenuIcon = "ri:history-fill", + OrderNum = 100, + ParentId = monitoring.Id, + RouterName = "OperationLog", + Component = "monitor/logs/operation/index" + }; + entities.Add(operationLog); + + MenuAggregateRoot operationLogQuery = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "操作查询", + PermissionCode = "monitor:operlog:query", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = operationLog.Id, + IsDeleted = false + }; + entities.Add(operationLogQuery); + + MenuAggregateRoot operationLogRemove = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "操作删除", + PermissionCode = "monitor:operlog:remove", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = operationLog.Id, + IsDeleted = false + }; + entities.Add(operationLogRemove); + + + //登录日志 + MenuAggregateRoot loginLog = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "登录日志", + PermissionCode = "monitor:logininfor:list", + MenuType = MenuTypeEnum.Menu, + Router = "/monitor/login-logs", + IsShow = true, + IsLink = false, + IsCache = true, + Component = "monitor/logs/login/index", + MenuIcon = "ri:window-line", + OrderNum = 100, + ParentId = monitoring.Id, + RouterName = "LoginLog", + }; + entities.Add(loginLog); + + MenuAggregateRoot loginLogQuery = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "登录查询", + PermissionCode = "monitor:logininfor:query", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = loginLog.Id, + IsDeleted = false + }; + entities.Add(loginLogQuery); + + MenuAggregateRoot loginLogRemove = new MenuAggregateRoot(_guidGenerator.Create()) + { + + MenuName = "登录删除", + PermissionCode = "monitor:logininfor:remove", + MenuType = MenuTypeEnum.Component, + OrderNum = 100, + ParentId = loginLog.Id, + IsDeleted = false, + + }; + entities.Add(loginLogRemove); + + //默认值 + entities.ForEach(m => + { + m.IsDeleted = false; + m.State = true; + m.MenuSource = MenuSourceEnum.Pure; + m.IsShow = true; + }); + + var p = entities.GroupBy(x => x.Id); + foreach (var k in p) + { + if (k.ToList().Count > 1) + { + Console.WriteLine("菜单id重复"); + } + + } + return entities; + } + } +} diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuDataSeed.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuRuoYiDataSeed.cs similarity index 71% rename from Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuDataSeed.cs rename to Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuRuoYiDataSeed.cs index d2652c06..d3264a32 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuDataSeed.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuRuoYiDataSeed.cs @@ -7,11 +7,11 @@ using Yi.Framework.SqlSugarCore.Abstractions; namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds { - public class MenuDataSeed : IDataSeedContributor, ITransientDependency + public class MenuRuoYiDataSeed : IDataSeedContributor, ITransientDependency { private ISqlSugarRepository _repository; private IGuidGenerator _guidGenerator; - public MenuDataSeed(ISqlSugarRepository repository, IGuidGenerator guidGenerator) + public MenuRuoYiDataSeed(ISqlSugarRepository repository, IGuidGenerator guidGenerator) { _repository = repository; _guidGenerator = guidGenerator; @@ -19,7 +19,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds public async Task SeedAsync(DataSeedContext context) { - if (!await _repository.IsAnyAsync(x => x.MenuName == "系统管理")) + if (!await _repository.IsAnyAsync(x => x.MenuName == "系统管理"&&x.MenuSource==MenuSourceEnum.Ruoyi)) { await _repository.InsertManyAsync(GetSeedData()); } @@ -54,7 +54,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds IsLink = false, MenuIcon = "build", OrderNum = 91, - IsDeleted = false + IsDeleted = false, }; entities.Add(code); @@ -229,332 +229,332 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds entities.Add(swagger); - //ERP - MenuAggregateRoot erp = new MenuAggregateRoot(_guidGenerator.Create()) - { - MenuName = "ERP(待更新)", - MenuType = MenuTypeEnum.Catalogue, - Router = "/erp", - IsShow = true, - IsLink = false, - MenuIcon = "international", - OrderNum = 96, - IsDeleted = false - }; - entities.Add(erp); - - - - //供应商定义 - MenuAggregateRoot supplier = new MenuAggregateRoot(_guidGenerator.Create(), erp.Id) - { - MenuName = "供应商定义", - PermissionCode = "erp:supplier:list", - MenuType = MenuTypeEnum.Menu, - Router = "supplier", - IsShow = true, - IsLink = false, - IsCache = true, - Component = "erp/supplier/index", - MenuIcon = "education", - OrderNum = 100, - IsDeleted = false - }; - entities.Add(supplier); - - MenuAggregateRoot supplierQuery = new MenuAggregateRoot(_guidGenerator.Create(), supplier.Id) - { - MenuName = "供应商查询", - PermissionCode = "erp:supplier:query", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(supplierQuery); - - MenuAggregateRoot supplierAdd = new MenuAggregateRoot(_guidGenerator.Create(), supplier.Id) - { - MenuName = "供应商新增", - PermissionCode = "erp:supplier:add", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - - IsDeleted = false - }; - entities.Add(supplierAdd); - - MenuAggregateRoot supplierEdit = new MenuAggregateRoot(_guidGenerator.Create(), supplier.Id) - { - MenuName = "供应商修改", - PermissionCode = "erp:supplier:edit", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(supplierEdit); - - MenuAggregateRoot supplierRemove = new MenuAggregateRoot(_guidGenerator.Create(), supplier.Id) - { - MenuName = "供应商删除", - PermissionCode = "erp:supplier:remove", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(supplierRemove); - - - //仓库定义 - MenuAggregateRoot warehouse = new MenuAggregateRoot(_guidGenerator.Create(), erp.Id) - { - MenuName = "仓库定义", - PermissionCode = "erp:warehouse:list", - MenuType = MenuTypeEnum.Menu, - Router = "warehouse", - IsShow = true, - IsLink = false, - IsCache = true, - Component = "erp/warehouse/index", - MenuIcon = "education", - OrderNum = 100, - IsDeleted = false - }; - entities.Add(warehouse); - - MenuAggregateRoot warehouseQuery = new MenuAggregateRoot(_guidGenerator.Create(), warehouse.Id) - { - MenuName = "仓库查询", - PermissionCode = "erp:warehouse:query", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = warehouse.Id, - IsDeleted = false - }; - entities.Add(warehouseQuery); - - MenuAggregateRoot warehouseAdd = new MenuAggregateRoot(_guidGenerator.Create(), warehouse.Id) - { - MenuName = "仓库新增", - PermissionCode = "erp:warehouse:add", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(warehouseAdd); - - MenuAggregateRoot warehouseEdit = new MenuAggregateRoot(_guidGenerator.Create(), warehouse.Id) - { - MenuName = "仓库修改", - PermissionCode = "erp:warehouse:edit", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(warehouseEdit); - - MenuAggregateRoot warehouseRemove = new MenuAggregateRoot(_guidGenerator.Create(), warehouse.Id) - { - MenuName = "仓库删除", - PermissionCode = "erp:warehouse:remove", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(warehouseRemove); - - - //单位定义 - MenuAggregateRoot unit = new MenuAggregateRoot(_guidGenerator.Create(), erp.Id) - { - MenuName = "单位定义", - PermissionCode = "erp:unit:list", - MenuType = MenuTypeEnum.Menu, - Router = "unit", - IsShow = true, - IsLink = false, - IsCache = true, - Component = "erp/unit/index", - MenuIcon = "education", - OrderNum = 100, - IsDeleted = false - }; - entities.Add(unit); - - MenuAggregateRoot unitQuery = new MenuAggregateRoot(_guidGenerator.Create(), unit.Id) - { - MenuName = "单位查询", - PermissionCode = "erp:unit:query", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(unitQuery); - - MenuAggregateRoot unitAdd = new MenuAggregateRoot(_guidGenerator.Create(), unit.Id) - { - MenuName = "单位新增", - PermissionCode = "erp:unit:add", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(unitAdd); - - MenuAggregateRoot unitEdit = new MenuAggregateRoot(_guidGenerator.Create(), unit.Id) - { - MenuName = "单位修改", - PermissionCode = "erp:unit:edit", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(unitEdit); - - MenuAggregateRoot unitRemove = new MenuAggregateRoot(_guidGenerator.Create(), unit.Id) - { - MenuName = "单位删除", - PermissionCode = "erp:unit:remove", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - IsDeleted = false - }; - entities.Add(unitRemove); - - - //物料定义 - MenuAggregateRoot material = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "物料定义", - PermissionCode = "erp:material:list", - MenuType = MenuTypeEnum.Menu, - Router = "material", - IsShow = true, - IsLink = false, - IsCache = true, - Component = "erp/material/index", - MenuIcon = "education", - OrderNum = 100, - ParentId = erp.Id, - IsDeleted = false - }; - entities.Add(material); - - MenuAggregateRoot materialQuery = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "物料查询", - PermissionCode = "erp:material:query", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = material.Id, - IsDeleted = false - }; - entities.Add(materialQuery); - - MenuAggregateRoot materialAdd = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "物料新增", - PermissionCode = "erp:material:add", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = material.Id, - IsDeleted = false - }; - entities.Add(materialAdd); - - MenuAggregateRoot materialEdit = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "物料修改", - PermissionCode = "erp:material:edit", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = material.Id, - IsDeleted = false - }; - entities.Add(materialEdit); - - MenuAggregateRoot materialRemove = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "物料删除", - PermissionCode = "erp:material:remove", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = material.Id, - IsDeleted = false - }; - entities.Add(materialRemove); - - - //采购订单 - MenuAggregateRoot purchase = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "采购订单", - PermissionCode = "erp:purchase:list", - MenuType = MenuTypeEnum.Menu, - Router = "purchase", - IsShow = true, - IsLink = false, - IsCache = true, - Component = "erp/purchase/index", - MenuIcon = "education", - OrderNum = 100, - ParentId = erp.Id, - IsDeleted = false - }; - entities.Add(purchase); - - MenuAggregateRoot purchaseQuery = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "采购订单查询", - PermissionCode = "erp:purchase:query", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = purchase.Id, - IsDeleted = false - }; - entities.Add(purchaseQuery); - - MenuAggregateRoot purchaseAdd = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "采购订单新增", - PermissionCode = "erp:purchase:add", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = purchase.Id, - IsDeleted = false - }; - entities.Add(purchaseAdd); - - MenuAggregateRoot purchaseEdit = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "采购订单修改", - PermissionCode = "erp:purchase:edit", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = purchase.Id, - IsDeleted = false - }; - entities.Add(purchaseEdit); - - MenuAggregateRoot purchaseRemove = new MenuAggregateRoot(_guidGenerator.Create()) - { - - MenuName = "采购订单删除", - PermissionCode = "erp:purchase:remove", - MenuType = MenuTypeEnum.Component, - OrderNum = 100, - ParentId = purchase.Id, - IsDeleted = false - }; - entities.Add(purchaseRemove); + // //ERP + // MenuAggregateRoot erp = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // MenuName = "ERP(待更新)", + // MenuType = MenuTypeEnum.Catalogue, + // Router = "/erp", + // IsShow = true, + // IsLink = false, + // MenuIcon = "international", + // OrderNum = 96, + // IsDeleted = false + // }; + // entities.Add(erp); + // + // + // + // //供应商定义 + // MenuAggregateRoot supplier = new MenuAggregateRoot(_guidGenerator.Create(), erp.Id) + // { + // MenuName = "供应商定义", + // PermissionCode = "erp:supplier:list", + // MenuType = MenuTypeEnum.Menu, + // Router = "supplier", + // IsShow = true, + // IsLink = false, + // IsCache = true, + // Component = "erp/supplier/index", + // MenuIcon = "education", + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(supplier); + // + // MenuAggregateRoot supplierQuery = new MenuAggregateRoot(_guidGenerator.Create(), supplier.Id) + // { + // MenuName = "供应商查询", + // PermissionCode = "erp:supplier:query", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(supplierQuery); + // + // MenuAggregateRoot supplierAdd = new MenuAggregateRoot(_guidGenerator.Create(), supplier.Id) + // { + // MenuName = "供应商新增", + // PermissionCode = "erp:supplier:add", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // + // IsDeleted = false + // }; + // entities.Add(supplierAdd); + // + // MenuAggregateRoot supplierEdit = new MenuAggregateRoot(_guidGenerator.Create(), supplier.Id) + // { + // MenuName = "供应商修改", + // PermissionCode = "erp:supplier:edit", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(supplierEdit); + // + // MenuAggregateRoot supplierRemove = new MenuAggregateRoot(_guidGenerator.Create(), supplier.Id) + // { + // MenuName = "供应商删除", + // PermissionCode = "erp:supplier:remove", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(supplierRemove); + // + // + // //仓库定义 + // MenuAggregateRoot warehouse = new MenuAggregateRoot(_guidGenerator.Create(), erp.Id) + // { + // MenuName = "仓库定义", + // PermissionCode = "erp:warehouse:list", + // MenuType = MenuTypeEnum.Menu, + // Router = "warehouse", + // IsShow = true, + // IsLink = false, + // IsCache = true, + // Component = "erp/warehouse/index", + // MenuIcon = "education", + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(warehouse); + // + // MenuAggregateRoot warehouseQuery = new MenuAggregateRoot(_guidGenerator.Create(), warehouse.Id) + // { + // MenuName = "仓库查询", + // PermissionCode = "erp:warehouse:query", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = warehouse.Id, + // IsDeleted = false + // }; + // entities.Add(warehouseQuery); + // + // MenuAggregateRoot warehouseAdd = new MenuAggregateRoot(_guidGenerator.Create(), warehouse.Id) + // { + // MenuName = "仓库新增", + // PermissionCode = "erp:warehouse:add", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(warehouseAdd); + // + // MenuAggregateRoot warehouseEdit = new MenuAggregateRoot(_guidGenerator.Create(), warehouse.Id) + // { + // MenuName = "仓库修改", + // PermissionCode = "erp:warehouse:edit", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(warehouseEdit); + // + // MenuAggregateRoot warehouseRemove = new MenuAggregateRoot(_guidGenerator.Create(), warehouse.Id) + // { + // MenuName = "仓库删除", + // PermissionCode = "erp:warehouse:remove", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(warehouseRemove); + // + // + // //单位定义 + // MenuAggregateRoot unit = new MenuAggregateRoot(_guidGenerator.Create(), erp.Id) + // { + // MenuName = "单位定义", + // PermissionCode = "erp:unit:list", + // MenuType = MenuTypeEnum.Menu, + // Router = "unit", + // IsShow = true, + // IsLink = false, + // IsCache = true, + // Component = "erp/unit/index", + // MenuIcon = "education", + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(unit); + // + // MenuAggregateRoot unitQuery = new MenuAggregateRoot(_guidGenerator.Create(), unit.Id) + // { + // MenuName = "单位查询", + // PermissionCode = "erp:unit:query", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(unitQuery); + // + // MenuAggregateRoot unitAdd = new MenuAggregateRoot(_guidGenerator.Create(), unit.Id) + // { + // MenuName = "单位新增", + // PermissionCode = "erp:unit:add", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(unitAdd); + // + // MenuAggregateRoot unitEdit = new MenuAggregateRoot(_guidGenerator.Create(), unit.Id) + // { + // MenuName = "单位修改", + // PermissionCode = "erp:unit:edit", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(unitEdit); + // + // MenuAggregateRoot unitRemove = new MenuAggregateRoot(_guidGenerator.Create(), unit.Id) + // { + // MenuName = "单位删除", + // PermissionCode = "erp:unit:remove", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // IsDeleted = false + // }; + // entities.Add(unitRemove); + // + // + // //物料定义 + // MenuAggregateRoot material = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "物料定义", + // PermissionCode = "erp:material:list", + // MenuType = MenuTypeEnum.Menu, + // Router = "material", + // IsShow = true, + // IsLink = false, + // IsCache = true, + // Component = "erp/material/index", + // MenuIcon = "education", + // OrderNum = 100, + // ParentId = erp.Id, + // IsDeleted = false + // }; + // entities.Add(material); + // + // MenuAggregateRoot materialQuery = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "物料查询", + // PermissionCode = "erp:material:query", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = material.Id, + // IsDeleted = false + // }; + // entities.Add(materialQuery); + // + // MenuAggregateRoot materialAdd = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "物料新增", + // PermissionCode = "erp:material:add", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = material.Id, + // IsDeleted = false + // }; + // entities.Add(materialAdd); + // + // MenuAggregateRoot materialEdit = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "物料修改", + // PermissionCode = "erp:material:edit", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = material.Id, + // IsDeleted = false + // }; + // entities.Add(materialEdit); + // + // MenuAggregateRoot materialRemove = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "物料删除", + // PermissionCode = "erp:material:remove", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = material.Id, + // IsDeleted = false + // }; + // entities.Add(materialRemove); + // + // + // //采购订单 + // MenuAggregateRoot purchase = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "采购订单", + // PermissionCode = "erp:purchase:list", + // MenuType = MenuTypeEnum.Menu, + // Router = "purchase", + // IsShow = true, + // IsLink = false, + // IsCache = true, + // Component = "erp/purchase/index", + // MenuIcon = "education", + // OrderNum = 100, + // ParentId = erp.Id, + // IsDeleted = false + // }; + // entities.Add(purchase); + // + // MenuAggregateRoot purchaseQuery = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "采购订单查询", + // PermissionCode = "erp:purchase:query", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = purchase.Id, + // IsDeleted = false + // }; + // entities.Add(purchaseQuery); + // + // MenuAggregateRoot purchaseAdd = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "采购订单新增", + // PermissionCode = "erp:purchase:add", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = purchase.Id, + // IsDeleted = false + // }; + // entities.Add(purchaseAdd); + // + // MenuAggregateRoot purchaseEdit = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "采购订单修改", + // PermissionCode = "erp:purchase:edit", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = purchase.Id, + // IsDeleted = false + // }; + // entities.Add(purchaseEdit); + // + // MenuAggregateRoot purchaseRemove = new MenuAggregateRoot(_guidGenerator.Create()) + // { + // + // MenuName = "采购订单删除", + // PermissionCode = "erp:purchase:remove", + // MenuType = MenuTypeEnum.Component, + // OrderNum = 100, + // ParentId = purchase.Id, + // IsDeleted = false + // }; + // entities.Add(purchaseRemove); @@ -1317,6 +1317,8 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds { m.IsDeleted = false; m.State = true; + m.MenuSource = MenuSourceEnum.Ruoyi; + m.IsShow = true; }); var p = entities.GroupBy(x => x.Id); diff --git a/Yi.Pure.Vue3/mock/asyncRoutes.ts b/Yi.Pure.Vue3/mock/asyncRoutes.ts index 4fffebed..15d5f973 100644 --- a/Yi.Pure.Vue3/mock/asyncRoutes.ts +++ b/Yi.Pure.Vue3/mock/asyncRoutes.ts @@ -7,6 +7,72 @@ import { system, monitor } from "@/router/enums"; * admin:管理员角色 * common:普通角色 */ +const testRouter = [ + { + id: "906c8094-21a1-1042-f151-3a14dab3cadb", + parentId: "00000000-0000-0000-0000-000000000000", + path: "/monitor", + name: null, + meta: { + icon: "menus.pureSysMonitor", + title: "系统监控", + component: null, + roles: null, + auths: [null], + frameSrc: null, + frameLoading: null, + keepAlive: null, + showLink: true + }, + children: [ + { + id: "c765691a-32e4-4e88-6e8a-3a14dab3cadb", + parentId: "906c8094-21a1-1042-f151-3a14dab3cadb", + path: "/monitor/online-user", + name: "OnlineUser", + meta: { + icon: "ri:user-voice-line", + title: "在线用户", + component: null, + roles: null, + auths: ["monitor:online:list"], + frameSrc: null, + frameLoading: null, + keepAlive: null, + showLink: true + }, + }, + { + path: "/monitor/operation-logs", + name: "OperationLog", + meta: { + icon: "ri:history-fill", + title: "操作日志", + component: "monitor/logs/operation/index", + showLink: true + }, + }, + { + id: "580a7b97-15ab-6d43-d011-3a14dab3cadc", + parentId: "906c8094-21a1-1042-f151-3a14dab3cadb", + path: "/monitor/login-logs", + name: "LoginLog", + meta: { + icon: "ri:window-line", + title: "登录日志", + component: "monitor/logs/login/index", + roles: null, + auths: ["monitor:logininfor:list"], + frameSrc: null, + frameLoading: null, + keepAlive: null, + showLink: true + }, + children: null + } + ] + } +]; const systemManagementRouter = { path: "/system", @@ -334,6 +400,7 @@ export default defineFakeRoute([ url: `/dev-api/get-async-routes`, method: "get", response: () => { + return testRouter; return [ systemManagementRouter, systemMonitorRouter diff --git a/Yi.Pure.Vue3/src/api/user.ts b/Yi.Pure.Vue3/src/api/account.ts similarity index 100% rename from Yi.Pure.Vue3/src/api/user.ts rename to Yi.Pure.Vue3/src/api/account.ts diff --git a/Yi.Pure.Vue3/src/api/routes.ts b/Yi.Pure.Vue3/src/api/routes.ts index 501ea3c7..9202da85 100644 --- a/Yi.Pure.Vue3/src/api/routes.ts +++ b/Yi.Pure.Vue3/src/api/routes.ts @@ -1,10 +1,10 @@ import { http } from "@/utils/http"; - -type Result = { - success: boolean; - data: Array; -}; +import type { Result } from "@/api/result"; export const getAsyncRoutes = () => { return http.request("get", "/get-async-routes"); }; + +export const getRoutes = () => { + return http.request("get", "/account/Vue3Router/pure"); +}; diff --git a/Yi.Pure.Vue3/src/api/system.ts b/Yi.Pure.Vue3/src/api/system.ts deleted file mode 100644 index 2dd467ba..00000000 --- a/Yi.Pure.Vue3/src/api/system.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { http } from "@/utils/http"; -import type { Result, ResultList, ResultPage } from "./result.ts"; - -/** 新增角色 */ -export const addRole = (data: any) => { - return http.request("post", `/role`, { data }); -}; - -/** 获取系统管理-角色管理列表 */ -export const getRoleList = (data?: object) => { - return http.request("post", "/role", { data }); -}; - -/** 获取系统管理-菜单管理列表 */ -export const getMenuList = (data?: object) => { - return http.request("post", "/menu", { data }); -}; - -/** 获取系统监控-在线用户列表 */ -export const getOnlineLogsList = (data?: object) => { - return http.request("post", "/online-logs", { data }); -}; - -/** 获取系统监控-登录日志列表 */ -export const getLoginLogsList = (data?: object) => { - return http.request("post", "/login-logs", { data }); -}; - -/** 获取系统监控-操作日志列表 */ -export const getOperationLogsList = (data?: object) => { - return http.request("post", "/operation-logs", { data }); -}; - -/** 获取系统监控-系统日志列表 */ -export const getSystemLogsList = (data?: object) => { - return http.request("post", "/system-logs", { data }); -}; - -/** 获取系统监控-系统日志-根据 id 查日志详情 */ -export const getSystemLogsDetail = (data?: object) => { - return http.request("post", "/system-logs-detail", { data }); -}; - -/** 获取角色管理-权限-菜单权限 */ -export const getRoleMenu = (data?: object) => { - return http.request("post", "/role-menu", { data }); -}; - -/** 获取角色管理-权限-菜单权限-根据角色 id 查对应菜单 */ -export const getRoleMenuIds = (data?: object) => { - return http.request("post", "/role-menu-ids", { data }); -}; diff --git a/Yi.Pure.Vue3/src/router/utils.ts b/Yi.Pure.Vue3/src/router/utils.ts index dd6df9aa..007c7ee6 100644 --- a/Yi.Pure.Vue3/src/router/utils.ts +++ b/Yi.Pure.Vue3/src/router/utils.ts @@ -27,7 +27,8 @@ const IFrame = () => import("@/layout/frame.vue"); const modulesRoutes = import.meta.glob("/src/views/**/*.{vue,tsx}"); // 动态路由 -import { getAsyncRoutes } from "@/api/routes"; +// getAsyncRoutes +import { getRoutes,getAsyncRoutes } from "@/api/routes"; function handRank(routeInfo: any) { const { name, path, parentId, meta } = routeInfo; @@ -202,7 +203,7 @@ function initRouter() { }); } else { return new Promise(resolve => { - getAsyncRoutes().then(({ data }) => { + getRoutes().then(({ data }) => { handleAsyncRoutes(cloneDeep(data)); storageLocal().setItem(key, data); resolve(router); @@ -211,7 +212,7 @@ function initRouter() { } } else { return new Promise(resolve => { - getAsyncRoutes().then(({ data }) => { + getRoutes().then(({ data }) => { handleAsyncRoutes(cloneDeep(data)); resolve(router); }); @@ -303,6 +304,9 @@ function addAsyncRoutes(arrRoutes: Array) { if (!arrRoutes || !arrRoutes.length) return; const modulesRoutesKeys = Object.keys(modulesRoutes); arrRoutes.forEach((v: RouteRecordRaw) => { + if (v.children == null) { + v.children = undefined; + } // 将backstage属性加入meta,标识此路由为后端返回路由 v.meta.backstage = true; // 父级的redirect属性取值:如果子级存在且父级的redirect属性不存在,默认取第一个子级的path;如果子级存在且父级的redirect属性存在,取存在的redirect属性,会覆盖默认值 diff --git a/Yi.Pure.Vue3/src/store/modules/user.ts b/Yi.Pure.Vue3/src/store/modules/user.ts index 2b0a0c95..e5f10379 100644 --- a/Yi.Pure.Vue3/src/store/modules/user.ts +++ b/Yi.Pure.Vue3/src/store/modules/user.ts @@ -13,7 +13,7 @@ import { getLogin, getUserInfo, refreshTokenApi -} from "@/api/user"; +} from "@/api/account"; import { useMultiTagsStoreHook } from "./multiTags"; import { type DataInfo, setToken, removeToken, userKey } from "@/utils/auth"; diff --git a/Yi.Pure.Vue3/src/views/login/index.vue b/Yi.Pure.Vue3/src/views/login/index.vue index 5f0dc784..189de72e 100644 --- a/Yi.Pure.Vue3/src/views/login/index.vue +++ b/Yi.Pure.Vue3/src/views/login/index.vue @@ -19,12 +19,11 @@ import LoginQrCode from "./components/LoginQrCode.vue"; import { useUserStoreHook } from "@/store/modules/user"; import { initRouter, getTopMenu } from "@/router/utils"; import { bg, avatar, illustration } from "./utils/static"; -import { ReImageVerify } from "@/components/ReImageVerify"; import { ref, toRaw, reactive, watch, computed } from "vue"; import { useRenderIcon } from "@/components/ReIcon/src/hooks"; import { useTranslationLang } from "@/layout/hooks/useTranslationLang"; import { useDataThemeChange } from "@/layout/hooks/useDataThemeChange"; -import { getCodeImg } from "@/api/user"; +import { getCodeImg } from "@/api/account"; import dayIcon from "@/assets/svg/day.svg?component"; import darkIcon from "@/assets/svg/dark.svg?component"; diff --git a/Yi.Pure.Vue3/src/views/monitor/logs/system/detail.vue b/Yi.Pure.Vue3/src/views/monitor/logs/system/detail.vue index 052f3311..c2b72313 100644 --- a/Yi.Pure.Vue3/src/views/monitor/logs/system/detail.vue +++ b/Yi.Pure.Vue3/src/views/monitor/logs/system/detail.vue @@ -42,12 +42,12 @@ const dataList = ref([ { title: "响应体", name: "requestResult", - data: (props.data[0] as any).requestResult + data: (props.data[0] as any)?.requestResult }, { title: "请求体", name: "requestParam", - data: (props.data[0] as any).requestParam + data: (props.data[0] as any)?.requestParam } ]); diff --git a/Yi.Pure.Vue3/src/views/monitor/logs/system/hook.tsx b/Yi.Pure.Vue3/src/views/monitor/logs/system/hook.tsx index c5b59e4f..4a7c55bf 100644 --- a/Yi.Pure.Vue3/src/views/monitor/logs/system/hook.tsx +++ b/Yi.Pure.Vue3/src/views/monitor/logs/system/hook.tsx @@ -1,11 +1,8 @@ import dayjs from "dayjs"; -import Detail from "../detail.vue"; import { message } from "@/utils/message"; -import { addDialog } from "@/components/ReDialog"; import type { PaginationProps } from "@pureadmin/table"; -import { type Ref, reactive, ref, onMounted, toRaw } from "vue"; +import { type Ref, reactive, ref, onMounted } from "vue"; import { getKeyList, useCopyToClipboard } from "@pureadmin/utils"; -import { getSystemLogsList, getSystemLogsDetail } from "@/api/system"; import Info from "@iconify-icons/ri/question-line"; export function useRole(tableRef: Ref) { @@ -189,28 +186,29 @@ export function useRole(tableRef: Ref) { } function onDetail(row) { - getSystemLogsDetail({ id: row.id }).then(res => { - addDialog({ - title: "系统日志详情", - fullscreen: true, - hideFooter: true, - contentRenderer: () => Detail, - props: { - data: [res] - } - }); - }); + console.log(row); + // getSystemLogsDetail({ id: row.id }).then(res => { + // addDialog({ + // title: "系统日志详情", + // fullscreen: true, + // hideFooter: true, + // contentRenderer: () => Detail, + // props: { + // data: [res] + // } + // }); + // }); } async function onSearch() { - loading.value = true; - const { data } = await getSystemLogsList(toRaw(form)); - dataList.value = data.items; - pagination.total = data.totalCount; - - setTimeout(() => { - loading.value = false; - }, 500); + // loading.value = true; + // const { data } = await getSystemLogsList(toRaw(form)); + // dataList.value = data.items; + // pagination.total = data.totalCount; + // + // setTimeout(() => { + // loading.value = false; + // }, 500); } const resetForm = formEl => { From 40b5f33c4ef3bc59095fb1352a3e53d52cfbcce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sat, 7 Sep 2024 13:43:00 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/Menu/MenuCreateInputVo.cs | 2 ++ .../Dtos/Menu/MenuGetListInputVo.cs | 3 ++- .../Dtos/Menu/MenuUpdateInputVo.cs | 3 +-- .../Services/System/MenuService.cs | 11 +++++++++++ Yi.Pure.Vue3/mock/asyncRoutes.ts | 4 ++-- Yi.Pure.Vue3/src/router/utils.ts | 2 +- Yi.Pure.Vue3/src/views/system/menu/form.vue | 8 +++++--- Yi.Pure.Vue3/src/views/system/menu/utils/hook.tsx | 13 ++++++++----- Yi.Pure.Vue3/src/views/system/menu/utils/types.ts | 4 +++- Yi.Pure.Vue3/src/views/system/post/utils/hook.tsx | 3 ++- Yi.Pure.Vue3/src/views/system/role/utils/hook.tsx | 4 +++- Yi.Pure.Vue3/src/views/system/user/utils/hook.tsx | 2 +- 12 files changed, 41 insertions(+), 18 deletions(-) diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuCreateInputVo.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuCreateInputVo.cs index 823f2710..e93697ca 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuCreateInputVo.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuCreateInputVo.cs @@ -24,5 +24,7 @@ namespace Yi.Framework.Rbac.Application.Contracts.Dtos.Menu public string? Component { get; set; } public string? Query { get; set; } public int OrderNum { get; set; } + public MenuSourceEnum MenuSource { get; set; } = MenuSourceEnum.Ruoyi; + public string? RouterName { get; set; } } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuGetListInputVo.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuGetListInputVo.cs index 376aefa7..e25cb266 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuGetListInputVo.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuGetListInputVo.cs @@ -1,4 +1,5 @@ using Volo.Abp.Application.Dtos; +using Yi.Framework.Rbac.Domain.Shared.Enums; namespace Yi.Framework.Rbac.Application.Contracts.Dtos.Menu { @@ -7,6 +8,6 @@ namespace Yi.Framework.Rbac.Application.Contracts.Dtos.Menu public bool? State { get; set; } public string? MenuName { get; set; } - + public MenuSourceEnum MenuSource { get; set; } = MenuSourceEnum.Ruoyi; } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuUpdateInputVo.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuUpdateInputVo.cs index 70bf6c29..3ba9f924 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuUpdateInputVo.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/Menu/MenuUpdateInputVo.cs @@ -20,7 +20,6 @@ namespace Yi.Framework.Rbac.Application.Contracts.Dtos.Menu public string? Component { get; set; } public string? Query { get; set; } public int OrderNum { get; set; } - - //public List? Children { get; set; } + public string? RouterName { get; set; } } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/MenuService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/MenuService.cs index 0dfbf38e..324ae02c 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/MenuService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/System/MenuService.cs @@ -28,6 +28,7 @@ namespace Yi.Framework.Rbac.Application.Services.System var entities = await _repository._DbQueryable.WhereIF(!string.IsNullOrEmpty(input.MenuName), x => x.MenuName.Contains(input.MenuName!)) .WhereIF(input.State is not null, x => x.State == input.State) + .Where(x=>x.MenuSource==input.MenuSource) .OrderByDescending(x => x.OrderNum) .ToListAsync(); //.ToPageListAsync(input.SkipCount, input.MaxResultCount, total); @@ -45,5 +46,15 @@ namespace Yi.Framework.Rbac.Application.Services.System return await MapToGetListOutputDtosAsync(entities); } + + public override Task UpdateAsync(Guid id, MenuUpdateInputVo input) + { + return base.UpdateAsync(id, input); + } + + public override Task CreateAsync(MenuCreateInputVo input) + { + return base.CreateAsync(input); + } } } diff --git a/Yi.Pure.Vue3/mock/asyncRoutes.ts b/Yi.Pure.Vue3/mock/asyncRoutes.ts index 15d5f973..52ffb1e1 100644 --- a/Yi.Pure.Vue3/mock/asyncRoutes.ts +++ b/Yi.Pure.Vue3/mock/asyncRoutes.ts @@ -40,7 +40,7 @@ const testRouter = [ frameLoading: null, keepAlive: null, showLink: true - }, + } }, { path: "/monitor/operation-logs", @@ -50,7 +50,7 @@ const testRouter = [ title: "操作日志", component: "monitor/logs/operation/index", showLink: true - }, + } }, { id: "580a7b97-15ab-6d43-d011-3a14dab3cadc", diff --git a/Yi.Pure.Vue3/src/router/utils.ts b/Yi.Pure.Vue3/src/router/utils.ts index 007c7ee6..5a027c54 100644 --- a/Yi.Pure.Vue3/src/router/utils.ts +++ b/Yi.Pure.Vue3/src/router/utils.ts @@ -28,7 +28,7 @@ const modulesRoutes = import.meta.glob("/src/views/**/*.{vue,tsx}"); // 动态路由 // getAsyncRoutes -import { getRoutes,getAsyncRoutes } from "@/api/routes"; +import { getRoutes } from "@/api/routes"; function handRank(routeInfo: any) { const { name, path, parentId, meta } = routeInfo; diff --git a/Yi.Pure.Vue3/src/views/system/menu/form.vue b/Yi.Pure.Vue3/src/views/system/menu/form.vue index 40488942..c00a71e1 100644 --- a/Yi.Pure.Vue3/src/views/system/menu/form.vue +++ b/Yi.Pure.Vue3/src/views/system/menu/form.vue @@ -28,11 +28,13 @@ const props = withDefaults(defineProps(), { router: "", component: "", orderNum: 0, - icon: "", + menuIcon: "", permissionCode: "", isShow: true, isLink: false, - state: true + state: true, + routerName: "", + menuSource: "Pure" }) }); @@ -93,7 +95,7 @@ defineExpose({ getRef }); :sm="24" > - + diff --git a/Yi.Pure.Vue3/src/views/system/menu/utils/hook.tsx b/Yi.Pure.Vue3/src/views/system/menu/utils/hook.tsx index 4e81a86a..e8c0675f 100644 --- a/Yi.Pure.Vue3/src/views/system/menu/utils/hook.tsx +++ b/Yi.Pure.Vue3/src/views/system/menu/utils/hook.tsx @@ -18,7 +18,8 @@ import { menuTypeOptions } from "@/views/system/menu/utils/enums"; export function useMenu() { const form = reactive({ - menuName: "" + menuName: "", + menuSource: "Pure" }); const formRef = ref(); @@ -44,7 +45,7 @@ export function useMenu() { cellRenderer: ({ row }) => ( <> - {h(useRenderIcon(row.icon), { + {h(useRenderIcon(row.menuIcon), { style: { paddingTop: "1px" } })} @@ -137,7 +138,7 @@ export function useMenu() { async function openDialog(title = "新增", row?: FormItemProps) { let data: any = null; if (title == "修改") { - data = await getMenu(row.id); + data = (await getMenu(row.id)).data; } addDialog({ title: `${title}菜单`, @@ -156,11 +157,13 @@ export function useMenu() { router: data?.router ?? "", component: data?.component ?? "", orderNum: data?.orderNum ?? 0, - icon: data?.icon ?? "", + menuIcon: data?.menuIcon ?? "", permissionCode: data?.permissionCode ?? "", showLink: data?.isShow ?? true, isLink: data?.isLink ?? false, - state: data?.state ?? true + state: data?.state ?? true, + routerName: data?.routerName ?? "", + menuSource: data?.menuSource ?? "Pure" } }, width: "45%", diff --git a/Yi.Pure.Vue3/src/views/system/menu/utils/types.ts b/Yi.Pure.Vue3/src/views/system/menu/utils/types.ts index a3fdf2ea..7544e8fc 100644 --- a/Yi.Pure.Vue3/src/views/system/menu/utils/types.ts +++ b/Yi.Pure.Vue3/src/views/system/menu/utils/types.ts @@ -8,11 +8,13 @@ interface FormItemProps { router: string; component: string; orderNum: number; - icon: string; + menuIcon: string; permissionCode: string; isShow: boolean; isLink: boolean; state: boolean; + routerName: string; + menuSource: string; } interface FormProps { formInline: FormItemProps; diff --git a/Yi.Pure.Vue3/src/views/system/post/utils/hook.tsx b/Yi.Pure.Vue3/src/views/system/post/utils/hook.tsx index 4cb88611..1aafdb69 100644 --- a/Yi.Pure.Vue3/src/views/system/post/utils/hook.tsx +++ b/Yi.Pure.Vue3/src/views/system/post/utils/hook.tsx @@ -48,7 +48,8 @@ export function usePost() { const columns: TableColumnList = [ { label: "岗位编号", - prop: "id" + prop: "id", + width: 300 }, { label: "岗位名称", diff --git a/Yi.Pure.Vue3/src/views/system/role/utils/hook.tsx b/Yi.Pure.Vue3/src/views/system/role/utils/hook.tsx index 8ea4b233..6945190a 100644 --- a/Yi.Pure.Vue3/src/views/system/role/utils/hook.tsx +++ b/Yi.Pure.Vue3/src/views/system/role/utils/hook.tsx @@ -66,7 +66,9 @@ export function useRole(treeRef: Ref) { const columns: TableColumnList = [ { label: "角色编号", - prop: "id" + prop: "id", + width: "300", + fixed: true }, { label: "角色名称", diff --git a/Yi.Pure.Vue3/src/views/system/user/utils/hook.tsx b/Yi.Pure.Vue3/src/views/system/user/utils/hook.tsx index 84292afa..f1ca112b 100644 --- a/Yi.Pure.Vue3/src/views/system/user/utils/hook.tsx +++ b/Yi.Pure.Vue3/src/views/system/user/utils/hook.tsx @@ -84,7 +84,7 @@ export function useUser(tableRef: Ref, treeRef: Ref) { { label: "用户编号", prop: "id", - width: 200 + width: 300 }, { label: "用户头像", From 579f60e789f1c372cd56ebf7ae1e9f495c5df412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sat, 7 Sep 2024 13:43:28 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=E8=8F=9C=E5=8D=95=E7=A7=8D?= =?UTF-8?q?=E5=AD=90=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/MenuAggregateRoot.cs | 7 ++++--- .../Yi.Framework.Rbac.Domain/Managers/UserManager.cs | 9 +++++---- .../DataSeeds/MenuPureDataSeed.cs | 8 ++++---- .../DataSeeds/MenuRuoYiDataSeed.cs | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/MenuAggregateRoot.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/MenuAggregateRoot.cs index c79a1978..fdf49281 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/MenuAggregateRoot.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/MenuAggregateRoot.cs @@ -1,4 +1,5 @@ -using NUglify.Helpers; +using System.Web; +using NUglify.Helpers; using SqlSugar; using Volo.Abp; using Volo.Abp.Auditing; @@ -246,8 +247,8 @@ namespace Yi.Framework.Rbac.Domain.Entities .Where(m => m.MenuSource == MenuSourceEnum.Pure) .Select(m => new Vue3PureRouterDto { - Path = m.Router.StartsWith("/")?m.Router:"/"+m.Router, - Name = m.RouterName, + Path =m.Router.StartsWith("/")?m.Router:"/"+m.Router, + Name =m.IsLink==true?"Link": m.RouterName, component = m.Component, Meta = new MetaPureRouterDto() { diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/UserManager.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/UserManager.cs index 2e14bbd5..d3a50014 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/UserManager.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Managers/UserManager.cs @@ -231,10 +231,11 @@ namespace Yi.Framework.Rbac.Domain.Managers var userRoleMenu = new UserRoleMenuDto(); //首先获取到该用户全部信息,导航到角色、菜单,(菜单需要去重,完全交给Set来处理即可) - //if (user is null) - //{ - // throw new UserFriendlyException($"数据错误,用户id:{nameof(userId)} 不存在,请重新登录"); - //} + if (user is null) + { + //为了解决token前端缓存,后端数据库重新dbseed + throw new UserFriendlyException($"数据错误,查询用户不存在,请重新登录"); + } user.EncryPassword.Password = string.Empty; user.EncryPassword.Salt = string.Empty; diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuPureDataSeed.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuPureDataSeed.cs index 948d6412..75bd258f 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuPureDataSeed.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuPureDataSeed.cs @@ -44,7 +44,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds MenuName = "系统监控", MenuType = MenuTypeEnum.Catalogue, Router = "/monitor", - MenuIcon = "menus.pureSysMonitor", + MenuIcon = "ep:monitor", OrderNum = 99, }; entities.Add(monitoring); @@ -68,13 +68,13 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds //Yi框架 MenuAggregateRoot guide = new MenuAggregateRoot(_guidGenerator.Create()) { - MenuName = "Yi框架", MenuType = MenuTypeEnum.Catalogue, - Router = "https://gitee.com/ccnetcore/yi", + Router = "https://ccnetcore.com", IsLink = true, - MenuIcon = "guide", + MenuIcon = "ri:at-line", OrderNum = 90, + Component = null }; entities.Add(guide); diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuRuoYiDataSeed.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuRuoYiDataSeed.cs index d3264a32..1dda106e 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuRuoYiDataSeed.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuRuoYiDataSeed.cs @@ -564,7 +564,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds MenuName = "Yi框架", MenuType = MenuTypeEnum.Catalogue, - Router = "https://gitee.com/ccnetcore/yi", + Router = "https://ccnetcore.com", IsShow = true, IsLink = true, MenuIcon = "guide", From 8374c8186045437f92451512d2dc7057cb91f04f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sat, 7 Sep 2024 13:49:25 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90ruoyi=E3=80=81pur?= =?UTF-8?q?e=E3=80=81yi=E3=80=81bbs=20=E4=B8=89=E4=BD=8D=E4=B8=80=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Yi.Pure.Vue3/publish.bat | 24 ++++++++++++++++++++++++ Yi.Pure.Vue3/src/views/login/index.vue | 8 ++++---- Yi.RuoYi.Vue3/publish.bat | 24 ++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 Yi.Pure.Vue3/publish.bat create mode 100644 Yi.RuoYi.Vue3/publish.bat diff --git a/Yi.Pure.Vue3/publish.bat b/Yi.Pure.Vue3/publish.bat new file mode 100644 index 00000000..b8456cad --- /dev/null +++ b/Yi.Pure.Vue3/publish.bat @@ -0,0 +1,24 @@ +@echo on + +set SERVER_USER=root +set SERVER_IP=ccnetcore.com +set FILE_PATH=publish_pure_02.zip +set REMOTE_PATH=/home/yi/build/publish_pure_02.zip +set REMOTE_COMMAND="cd /home/yi/pure&&pwd&&unzip -o /home/yi/build/publish_pure_02.zip -d ./" +set sevenzip_Path="D:\Program Files\7-Zip\7z.exe" + +echo start +echo 1-build-start +:: npm run build +echo 1-build-end +echo 2-zip-start + +%sevenzip_Path% a ./publish_pure_02.zip ./dist/* +:: tar -cvf publish_bbs_02.zip -C "dist" "*" +echo 2-zip-end +echo 3-publish-start +scp %FILE_PATH% %SERVER_USER%@%SERVER_IP%:%REMOTE_PATH% +ssh %SERVER_USER%@%SERVER_IP% %REMOTE_COMMAND% +echo 3-publish-end +echo end +pause diff --git a/Yi.Pure.Vue3/src/views/login/index.vue b/Yi.Pure.Vue3/src/views/login/index.vue index 189de72e..7adcc70a 100644 --- a/Yi.Pure.Vue3/src/views/login/index.vue +++ b/Yi.Pure.Vue3/src/views/login/index.vue @@ -58,8 +58,8 @@ const { title, getDropdownItemStyle, getDropdownItemClass } = useNav(); const { locale, translationCh, translationEn } = useTranslationLang(); const ruleForm = reactive({ - username: "cc", - password: "123456", + username: "", + password: "", verifyCode: "", uuid: "" }); @@ -100,7 +100,7 @@ const onLogin = async (formEl: FormInstance | undefined) => { message(t("login.pureLoginFail"), { type: "error" }); } }) - .catch(err => { + .catch(() => { getCode(); }) .finally(() => (loading.value = false)); @@ -137,7 +137,7 @@ getCode();