using System; using System.Collections.Generic; using System.Linq; using System.Text.Json.Serialization; using SqlSugar; using Yi.Framework.Common.Enum; using Yi.Framework.Common.Models; using Yi.Framework.Model.Base; namespace Yi.Framework.Model.RABC.Entitys { /// /// 菜单表 /// [SugarTable("Menu")] public partial class MenuEntity : IBaseModelEntity { public MenuEntity() { IsCache = false; CreateTime = DateTime.Now; } [JsonConverter(typeof(ValueToStringConverter))] [SugarColumn(ColumnName = "Id", IsPrimaryKey = true)] public long Id { get; set; } /// /// /// [SugarColumn(ColumnName = "MenuName")] public string? MenuName { get; set; } /// /// /// [SugarColumn(ColumnName = "MenuType")] public int? MenuType { get; set; } /// /// /// [SugarColumn(ColumnName = "PermissionCode")] public string? PermissionCode { get; set; } /// /// /// [SugarColumn(ColumnName = "ParentId")] public long? ParentId { get; set; } /// /// 创建者 /// [SugarColumn(ColumnName = "CreateUser")] public long? CreateUser { get; set; } /// /// 创建时间 /// [SugarColumn(ColumnName = "CreateTime")] public DateTime? CreateTime { get; set; } /// /// 修改者 /// [SugarColumn(ColumnName = "ModifyUser")] public long? ModifyUser { get; set; } /// /// 修改时间 /// [SugarColumn(ColumnName = "ModifyTime")] public DateTime? ModifyTime { get; set; } /// /// 是否删除 /// [SugarColumn(ColumnName = "IsDeleted")] public bool? IsDeleted { get; set; } /// /// 租户Id /// [SugarColumn(ColumnName = "TenantId")] public long? TenantId { get; set; } /// /// 菜单图标 /// [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; } /// /// 是否显示 /// [SugarColumn(ColumnName = "IsShow")] public bool? IsShow { get; set; } /// /// 排序字段 /// [SugarColumn(ColumnName = "OrderNum")] public int? OrderNum { get; set; } /// /// 描述 /// [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; } public static List RouterBuild(List menus) { menus = menus.Where(m => m.MenuType != null && m.MenuType != MenuTypeEnum.Component.GetHashCode()).ToList(); List routers = new(); foreach (var m in menus) { var r = new VueRouterModel(); r.OrderNum = m.OrderNum ?? 0; var routerName = m.Router?.Split("/").LastOrDefault(); r.Id = m.Id; r.ParentId = m.ParentId ?? -1; //开头大写 r.Name = routerName?.First().ToString().ToUpper() + routerName?.Substring(1); r.Path = m.Router!; r.Hidden = !m.IsShow ?? false; if (m.MenuType == MenuTypeEnum.Catalogue.GetHashCode()) { r.Redirect = "noRedirect"; r.AlwaysShow = true; //判断是否为最顶层的路由 if (0 == m.ParentId) { r.Component = "Layout"; } else { r.Component = "ParentView"; } } if (m.MenuType == MenuTypeEnum.Menu.GetHashCode()) { r.Redirect = "noRedirect"; r.AlwaysShow = true; r.Component = m.Component!; r.AlwaysShow = false; } r.Meta = new Meta { Title = m.MenuName!, Icon = m.MenuIcon!, NoCache = !m.IsCache ?? true }; if (m.IsLink ?? false) { r.Meta.link = m.Router!; r.AlwaysShow = false; } routers.Add(r); } return Common.Helper.TreeHelper.SetTree(routers); } } }