소스 검색

增加用户信息缓存,用户登录缓存用户信息。

zhontai 3 년 전
부모
커밋
54adcd4300

+ 6 - 0
Admin.Core.Common/Cache/CacheKey.cs

@@ -25,5 +25,11 @@ namespace Admin.Core.Common.Cache
         /// </summary>
         [Description("用户权限")]
         public const string UserPermissions = "admin:user:{0}:permissions";
+
+        /// <summary>
+        /// 用户信息 admin:user:用户主键:info
+        /// </summary>
+        [Description("用户信息")]
+        public const string UserInfo = "admin:user:{0}:info";
     }
 }

+ 37 - 47
Admin.Core.Services/Admin/Auth/AuthService.cs

@@ -120,53 +120,43 @@ namespace Admin.Core.Service.Admin.Auth
                 return ResponseOutput.NotOk("未登录!");
             }
 
-            //用户信息
-            var user = await _userRepository.Select.WhereDynamic(User.Id)
-                .ToOneAsync(m => new {
-                    m.NickName,
-                    m.UserName,
-                    m.Avatar
-                });
-
-            //用户菜单
-            var menus = await _permissionRepository.Select
-                .Where(a => new[] { PermissionType.Group, PermissionType.Menu }.Contains(a.Type))
-                .Where(a =>
-                    _permissionRepository.Orm.Select<RolePermissionEntity>()
-                    .InnerJoin<UserRoleEntity>((b, c) => b.RoleId == c.RoleId && c.UserId == User.Id)
-                    .Where(b => b.PermissionId == a.Id)
-                    .Any()
-                )
-                .OrderBy(a => a.ParentId)
-                .OrderBy(a => a.Sort)
-                .ToListAsync(a => new
-                {
-                    a.Id,
-                    a.ParentId,
-                    a.Path,
-                    ViewPath = a.View.Path,
-                    a.Label,
-
-                    a.Icon,
-                    a.Opened,
-                    a.Closable,
-                    a.Hidden,
-                    a.NewWindow,
-                    a.External
-                });
-
-            //用户权限点
-            var permissions = await _permissionRepository.Select
-                .Where(a => new[] { PermissionType.Api, PermissionType.Dot }.Contains(a.Type))
-                .Where(a =>
-                    _permissionRepository.Orm.Select<RolePermissionEntity>()
-                    .InnerJoin<UserRoleEntity>((b, c) => b.RoleId == c.RoleId && c.UserId == User.Id)
-                    .Where(b => b.PermissionId == a.Id)
-                    .Any()
-                )
-                .ToListAsync(a => a.Code);
-
-            return ResponseOutput.Ok(new { user, menus, permissions });
+            var key = string.Format(CacheKey.UserInfo, User.Id);
+            var output = await _cache.GetOrSetAsync(key, async () => 
+            {
+                var authUserInfoOutput = new AuthUserInfoOutput { };
+                //用户信息
+                authUserInfoOutput.User = await _userRepository.Select.WhereDynamic(User.Id)
+                    .ToOneAsync<AuthUserProfileDto>();
+
+                //用户菜单
+                authUserInfoOutput.Menus = await _permissionRepository.Select
+                    .Where(a => new[] { PermissionType.Group, PermissionType.Menu }.Contains(a.Type))
+                    .Where(a =>
+                        _permissionRepository.Orm.Select<RolePermissionEntity>()
+                        .InnerJoin<UserRoleEntity>((b, c) => b.RoleId == c.RoleId && c.UserId == User.Id)
+                        .Where(b => b.PermissionId == a.Id)
+                        .Any()
+                    )
+                    .OrderBy(a => a.ParentId)
+                    .OrderBy(a => a.Sort)
+                    .ToListAsync(a => new AuthUserMenuDto { ViewPath = a.View.Path });
+
+                //用户权限点
+                authUserInfoOutput.Permissions = await _permissionRepository.Select
+                    .Where(a => new[] { PermissionType.Api, PermissionType.Dot }.Contains(a.Type))
+                    .Where(a =>
+                        _permissionRepository.Orm.Select<RolePermissionEntity>()
+                        .InnerJoin<UserRoleEntity>((b, c) => b.RoleId == c.RoleId && c.UserId == User.Id)
+                        .Where(b => b.PermissionId == a.Id)
+                        .Any()
+                    )
+                    .ToListAsync(a => a.Code);
+
+                return authUserInfoOutput;
+            });
+            
+
+            return ResponseOutput.Ok(output);
         }
 
         public async Task<IResponseOutput> GetVerifyCodeAsync(string lastKey)

+ 22 - 0
Admin.Core.Services/Admin/Auth/Output/AuthUserInfoOutput.cs

@@ -0,0 +1,22 @@
+using System.Collections.Generic;
+
+namespace Admin.Core.Service.Admin.Auth.Output
+{ 
+    public class AuthUserInfoOutput
+    {
+        /// <summary>
+        /// 用户个人信息
+        /// </summary>
+        public AuthUserProfileDto User { get; set; }
+
+        /// <summary>
+        /// 用户菜单
+        /// </summary>
+        public List<AuthUserMenuDto> Menus { get; set; }
+
+        /// <summary>
+        /// 用户权限点
+        /// </summary>
+        public List<string> Permissions { get; set; }
+    }
+}

+ 62 - 0
Admin.Core.Services/Admin/Auth/Output/AuthUserMenuDto.cs

@@ -0,0 +1,62 @@
+using Admin.Core.Model.Admin;
+
+namespace Admin.Core.Service.Admin.Auth.Output
+{
+    public class AuthUserMenuDto
+    {
+        /// <summary>
+        /// 权限Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 父级节点
+        /// </summary>
+        public long ParentId { get; set; }
+
+        /// <summary>
+        /// 访问地址
+        /// </summary>
+        public string Path { get; set; }
+
+        /// <summary>
+        /// 视图地址
+        /// </summary>
+        public string ViewPath { get; set; }
+
+        /// <summary>
+        /// 权限名称
+        /// </summary>
+        public string Label { get; set; }
+
+        /// <summary>
+        /// 图标
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 打开
+        /// </summary>
+        public bool? Opened { get; set; }
+
+        /// <summary>
+        /// 可关闭
+        /// </summary>
+        public bool? Closable { get; set; }
+
+        /// <summary>
+        /// 隐藏
+        /// </summary>
+        public bool Hidden { get; set; }
+
+        /// <summary>
+        /// 打开新窗口
+        /// </summary>
+        public bool? NewWindow { get; set; }
+
+        /// <summary>
+        /// 链接外显
+        /// </summary>
+        public bool? External { get; set; }
+    }
+}

+ 20 - 0
Admin.Core.Services/Admin/Auth/Output/AuthUserProfileDto.cs

@@ -0,0 +1,20 @@
+namespace Admin.Core.Service.Admin.Auth.Output
+{ 
+    public class AuthUserProfileDto
+    {
+        /// <summary>
+        /// 账号
+        /// </summary>
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 姓名
+        /// </summary>
+        public string NickName { get; set; }
+
+        /// <summary>
+        /// 头像
+        /// </summary>
+        public string Avatar { get; set; }
+    }
+}

+ 1 - 1
Admin.Core.Services/Admin/User/UserService.cs

@@ -71,7 +71,7 @@ namespace Admin.Core.Service.Admin.User
         public async Task<IList<UserPermissionsOutput>> GetPermissionsAsync()
         {
             var key = string.Format(CacheKey.UserPermissions, User.Id);
-            var result = await _cache.GetOrSetAsync<IList<UserPermissionsOutput>>(key, async () =>
+            var result = await _cache.GetOrSetAsync(key, async () =>
             {
                 var userPermissoins = await _rolePermissionRepository.Select
                 .InnerJoin<UserRoleEntity>((a, b) => a.RoleId == b.RoleId && b.UserId == User.Id && a.Permission.Type == PermissionType.Api)

+ 5 - 0
Admin.Core/Admin.Core.Common.xml

@@ -304,6 +304,11 @@
             用户权限 admin:user:用户主键:permissions
             </summary>
         </member>
+        <member name="F:Admin.Core.Common.Cache.CacheKey.UserInfo">
+            <summary>
+            用户信息 admin:user:用户主键:info
+            </summary>
+        </member>
         <member name="T:Admin.Core.Common.Cache.CacheType">
             <summary>
             缓存类型

+ 85 - 0
Admin.Core/Admin.Core.Service.xml

@@ -317,6 +317,91 @@
             租户类型
             </summary>
         </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserInfoOutput.User">
+            <summary>
+            用户个人信息
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserInfoOutput.Menus">
+            <summary>
+            用户菜单
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserInfoOutput.Permissions">
+            <summary>
+            用户权限点
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.Id">
+            <summary>
+            权限Id
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.ParentId">
+            <summary>
+            父级节点
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.Path">
+            <summary>
+            访问地址
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.ViewPath">
+            <summary>
+            视图地址
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.Label">
+            <summary>
+            权限名称
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.Icon">
+            <summary>
+            图标
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.Opened">
+            <summary>
+            打开
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.Closable">
+            <summary>
+            可关闭
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.Hidden">
+            <summary>
+            隐藏
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.NewWindow">
+            <summary>
+            打开新窗口
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserMenuDto.External">
+            <summary>
+            链接外显
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserProfileDto.UserName">
+            <summary>
+            账号
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserProfileDto.NickName">
+            <summary>
+            姓名
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Auth.Output.AuthUserProfileDto.Avatar">
+            <summary>
+            头像
+            </summary>
+        </member>
         <member name="T:Admin.Core.Service.Admin.Auth.MapConfig">
             <summary>
             映射配置