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 7a838659..3a97bd76 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 @@ -270,6 +270,9 @@ namespace Yi.Framework.Rbac.Application.Services } + + + /// /// 获取当前登录用户的前端路由 /// 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 new file mode 100644 index 00000000..6c25e5ed --- /dev/null +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain.Shared/Dtos/Vue3PureRouterDto.cs @@ -0,0 +1,33 @@ +namespace Yi.Framework.Rbac.Domain.Shared.Dtos; + +public class Vue3PureRouterDto +{ + public string Path { get; set; } + public string Name { get; set; } + public MetaPureRouterDto Meta { get; set; } = new MetaPureRouterDto(); + + public List? Children { get; set; } +} + +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; } + + public string? FrameSrc { get; set; } + + public string? FrameLoading { get; set; } + + public bool? KeepAlive { get; set; } + + public bool? showLink { get; set; } +} \ 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 7ebed1ea..49b981b2 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 @@ -15,10 +15,22 @@ namespace Yi.Framework.Rbac.Domain.Entities [SugarTable("Menu")] public partial class MenuAggregateRoot : AggregateRoot, ISoftDelete, IAuditedObject, IOrderNum, IState { - public MenuAggregateRoot() { } + public MenuAggregateRoot() + { + } + + public MenuAggregateRoot(Guid id) + { + Id = id; + ParentId = Guid.Empty; + } + + public MenuAggregateRoot(Guid id, Guid parentId) + { + Id = id; + ParentId = parentId; + } - public MenuAggregateRoot(Guid id) { Id = id; ParentId = Guid.Empty; } - public MenuAggregateRoot(Guid id, Guid parentId) { Id = id; ParentId = parentId; } /// /// 主键 /// @@ -64,16 +76,19 @@ namespace Yi.Framework.Rbac.Domain.Entities /// 菜单名 /// public string MenuName { get; set; } = string.Empty; + /// /// /// [SugarColumn(ColumnName = "MenuType")] public MenuTypeEnum MenuType { get; set; } = MenuTypeEnum.Menu; + /// /// /// [SugarColumn(ColumnName = "PermissionCode")] public string? PermissionCode { get; set; } + /// /// /// @@ -85,21 +100,25 @@ namespace Yi.Framework.Rbac.Domain.Entities /// [SugarColumn(ColumnName = "MenuIcon")] public string? MenuIcon { get; set; } + /// /// 菜单组件路由 /// [SugarColumn(ColumnName = "Router")] public string? Router { get; set; } + /// /// 是否为外部链接 /// [SugarColumn(ColumnName = "IsLink")] public bool IsLink { get; set; } + /// /// 是否缓存 /// [SugarColumn(ColumnName = "IsCache")] public bool IsCache { get; set; } + /// /// 是否显示 /// @@ -111,20 +130,20 @@ namespace Yi.Framework.Rbac.Domain.Entities /// [SugarColumn(ColumnName = "Remark")] public string? Remark { get; set; } + /// /// 组件路径 /// [SugarColumn(ColumnName = "Component")] public string? Component { get; set; } + /// /// 路由参数 /// [SugarColumn(ColumnName = "Query")] public string? Query { get; set; } - [SugarColumn(IsIgnore = true)] - public List? Children { get; set; } - + [SugarColumn(IsIgnore = true)] public List? Children { get; set; } } /// @@ -143,7 +162,6 @@ namespace Yi.Framework.Rbac.Domain.Entities List routers = new(); foreach (var m in menus) { - var r = new Vue3RouterDto(); r.OrderNum = m.OrderNum; var routerName = m.Router?.Split("/").LastOrDefault(); @@ -171,6 +189,7 @@ namespace Yi.Framework.Rbac.Domain.Entities r.Component = "ParentView"; } } + if (m.MenuType == MenuTypeEnum.Menu) { r.Redirect = "noRedirect"; @@ -178,6 +197,7 @@ namespace Yi.Framework.Rbac.Domain.Entities r.Component = m.Component!; r.AlwaysShow = false; } + r.Meta = new Meta { Title = m.MenuName!, @@ -192,8 +212,20 @@ namespace Yi.Framework.Rbac.Domain.Entities routers.Add(r); } - return TreeHelper.SetTree(routers); + return TreeHelper.SetTree(routers); + } + + + /// + /// 构建vue3 pure路由 + /// + /// + /// + /// + public static List Vue3PureRouterBuild(this List menus) + { + throw new NotImplementedException(); } } -} +} \ No newline at end of file