admin %!s(int64=2) %!d(string=hai) anos
pai
achega
3fbb238ad2

+ 1 - 1
src/Hotline.Api/Controllers/HomeController.cs

@@ -176,7 +176,7 @@ public class HomeController : BaseController
     public async Task<UserAuthorityDto> GetUserAuthorityMenuByToken()
     {
         var roles = _sessionContext.Roles;
-        var menus = await _systemAuthorityRepository.GetMyMenu(roles);
+        var menus = _mapper.Map<List<SystemMenuDto>>(await _systemAuthorityRepository.GetMyMenu(roles));
         var buttons = await _systemAuthorityRepository.GetMyButton(roles);
         return new UserAuthorityDto() { menus = menus, buttons = buttons };
     }

+ 3 - 3
src/Hotline.Repository.SqlSugar/System/SystemAuthorityRepository.cs

@@ -17,11 +17,11 @@ namespace Hotline.Repository.SqlSugar.System
         /// </summary>
         /// <param name="roles"></param>
         /// <returns></returns>
-        public async Task<List<string>> GetMyMenu(string[] roles)
+        public async Task<List<SystemMenu>> GetMyMenu(string[] roles)
         {
             if (roles.Contains(RoleSeedData.AdminRole))
             {
-                return await Db.Queryable<SystemMenu>().Where(x=> x.MenuType != Share.Enums.Settings.EMenuType.Button).OrderBy(x => x.DisplayOrder).Select(x=>x.PermissionCode).ToListAsync();
+                return await Db.Queryable<SystemMenu>().Where(x=> x.MenuType != Share.Enums.Settings.EMenuType.Button).OrderBy(x => x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");
             }
             var list = await Db.Queryable<SystemAuthority>()
                 .Where(x => roles.Contains(x.RoleCode)).ToListAsync();
@@ -31,7 +31,7 @@ namespace Hotline.Repository.SqlSugar.System
                 menuarr.AddRange(item.SystemMenuArr);
             }
             var newmenu = menuarr.Distinct().ToList();
-            return await Db.Queryable<SystemMenu>().Where(x => menuarr.Contains(x.PermissionCode) && x.MenuType != Share.Enums.Settings.EMenuType.Button ).OrderBy(x => x.DisplayOrder).Select(x=>x.PermissionCode).ToListAsync();
+            return await Db.Queryable<SystemMenu>().Where(x => menuarr.Contains(x.PermissionCode) && x.MenuType != Share.Enums.Settings.EMenuType.Button ).OrderBy(x => x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");
         }
 
         /// <summary>

+ 99 - 2
src/Hotline.Share/Dtos/Home/HomeDto.cs

@@ -1,5 +1,7 @@
-using System;
+using Hotline.Share.Enums.Settings;
+using System;
 using System.Collections.Generic;
+using System.Data.SqlTypes;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -23,8 +25,103 @@ namespace Hotline.Share.Dtos.Home
 
     public class UserAuthorityDto
     {
-        public List<string> menus { get; set; }
+        public List<SystemMenuDto> menus { get; set; }
         public List<string> buttons { get; set; }
     }
 
+    public class SystemMenuDto
+    {
+        /// <summary>
+        /// 页面名称
+        /// </summary>
+        public string PageName { get; set; }
+
+        /// <summary>
+        /// 排序
+        /// </summary>
+        public int DisplayOrder { get; set; }
+
+        /// <summary>
+        /// 上级ID
+        /// </summary>
+        public string ParentId { get; set; }
+
+        /// <summary>
+        /// 类型
+        /// </summary>
+        public EMenuType? MenuType { get; set; }
+
+        /// <summary>
+        /// 功能点Code
+        /// </summary>
+        public string PermissionCode { get; set; }
+
+        /// <summary>
+        /// 是否显示
+        /// </summary>
+        public bool IsHide { get; set; }
+
+        /// <summary>
+        /// 重定向地址
+        /// </summary>
+        public string Redirect { get; set; }
+
+        /// <summary>
+        /// 是否外链
+        /// </summary>
+        public bool IsLink { get; set; }
+
+        /// <summary>
+        /// 外部连接
+        /// </summary>
+        public string Link { get; set; }
+
+        /// <summary>
+        /// 路由路径
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
+        /// 是否缓存
+        /// </summary>
+        public bool IsKeepAlive { get; set; }
+
+        /// <summary>
+        /// 是否固定
+        /// </summary>
+        public bool IsAffix { get; set; }
+
+        /// <summary>
+        /// 是否内嵌
+        /// </summary>
+        public bool IsIframe { get; set; }
+
+        /// <summary>
+        /// 路由名称
+        /// </summary>
+        public string RuleName { get; set; }
+
+        /// <summary>
+        /// 组件路径
+        /// </summary>
+        public string Component { get; set; }
+
+        /// <summary>
+        /// 图标
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 是否可为快捷
+        /// </summary>
+        public bool IsFast { get; set; }
+
+        /// <summary>
+        /// 快捷图标
+        /// </summary>
+        public string FastIcon { get; set; }
+
+        public List<SystemMenuDto> children { get; set; }
+    }
+
 }

+ 1 - 1
src/Hotline/Settings/ISystemAuthorityRepository.cs

@@ -9,7 +9,7 @@ namespace Hotline.Settings
         /// </summary>
         /// <param name="roles"></param>
         /// <returns></returns>
-        Task<List<string>> GetMyMenu(string[] roles);
+        Task<List<SystemMenu>> GetMyMenu(string[] roles);
 
         /// <summary>
         /// 获取所有功能点