ソースを参照

优化自定义SqlSugar二级缓存

zuohuaijun 4 年 前
コミット
7157c83db8

+ 11 - 10
Admin.NET/Admin.NET.Core/Admin.NET.Core.xml

@@ -3728,11 +3728,19 @@
         </member>
         <member name="M:Admin.NET.Core.Service.SysCacheService.GetStringAsync(System.String)">
             <summary>
-            获取缓存
+            获取字符串缓存
             </summary>
             <param name="cacheKey"></param>
             <returns></returns>
         </member>
+        <member name="M:Admin.NET.Core.Service.SysCacheService.GetAsync``1(System.String)">
+            <summary>
+            获取对象缓存
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="cacheKey"></param>
+            <returns></returns>
+        </member>
         <member name="M:Admin.NET.Core.Service.SysCacheService.RemoveAsync(System.String)">
             <summary>
             删除缓存
@@ -3747,14 +3755,6 @@
             <param name="key"></param>
             <returns></returns>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysCacheService.GetAsync``1(System.String)">
-            <summary>
-            获取缓存
-            </summary>
-            <typeparam name="T"></typeparam>
-            <param name="cacheKey"></param>
-            <returns></returns>
-        </member>
         <member name="M:Admin.NET.Core.Service.SysCacheService.ExistsAsync(System.String)">
             <summary>
             检查给定 key 是否存在
@@ -3823,7 +3823,7 @@
         </member>
         <member name="M:Admin.NET.Core.Service.SysCacheService.DelByParentKeyAsync(System.String)">
             <summary>
-             根据父键清空
+             根据父键清空缓存
             </summary>
             <param name="key"></param>
             <returns></returns>
@@ -7482,6 +7482,7 @@
             <summary>
             返回 RESTful 风格结果集
             </summary>
+            <param name="context"></param>
             <param name="statusCode"></param>
             <param name="succeeded"></param>
             <param name="data"></param>

+ 10 - 12
Admin.NET/Admin.NET.Core/Service/Cache/ISysCacheService.cs

@@ -2,7 +2,7 @@
 
 public interface ISysCacheService
 {
-    Task AddCacheKey(string cacheKey);
+    Task DelByParentKeyAsync(string key);
 
     Task DelByPatternAsync(string key);
 
@@ -14,6 +14,12 @@ public interface ISysCacheService
 
     Task<T> GetAsync<T>(string cacheKey);
 
+    Task<int?> GetMaxDataScopeType(long userId);
+
+    Task<List<long>> GetOrgIdList(long userId);
+
+    Task<List<string>> GetPermission(long userId);
+
     Task<string> GetStringAsync(string cacheKey);
 
     Task RemoveAsync(string key);
@@ -22,21 +28,13 @@ public interface ISysCacheService
 
     Task SetAsync(string cacheKey, object value, TimeSpan expire);
 
-    Task SetStringAsync(string cacheKey, string value);
-
-    Task SetStringAsync(string cacheKey, string value, TimeSpan expire);
-
-    Task<List<long>> GetOrgIdList(long userId);
+    Task SetMaxDataScopeType(long userId, int dataScopeType);
 
     Task SetOrgIdList(long userId, List<long> orgIdList);
 
-    Task<List<string>> GetPermission(long userId);
-
     Task SetPermission(long userId, List<string> permissions);
 
-    Task<int?> GetMaxDataScopeType(long userId);
-
-    Task SetMaxDataScopeType(long userId, int dataScopeType);
+    Task SetStringAsync(string cacheKey, string value);
 
-    Task DelByParentKeyAsync(string key);
+    Task SetStringAsync(string cacheKey, string value, TimeSpan expire);
 }

+ 16 - 17
Admin.NET/Admin.NET.Core/Service/Cache/SysCacheService.cs

@@ -83,7 +83,7 @@ public class SysCacheService : ISysCacheService, IDynamicApiController, ISinglet
     }
 
     /// <summary>
-    /// 获取缓存
+    /// 获取字符串缓存
     /// </summary>
     /// <param name="cacheKey"></param>
     /// <returns></returns>
@@ -93,6 +93,19 @@ public class SysCacheService : ISysCacheService, IDynamicApiController, ISinglet
         return await _cache.GetStringAsync(cacheKey);
     }
 
+    /// <summary>
+    /// 获取对象缓存
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="cacheKey"></param>
+    /// <returns></returns>
+    [NonAction]
+    public async Task<T> GetAsync<T>(string cacheKey)
+    {
+        var res = await _cache.GetAsync(cacheKey);
+        return res == null ? default : JSON.Deserialize<T>(Encoding.UTF8.GetString(res));
+    }
+
     /// <summary>
     /// 删除缓存
     /// </summary>
@@ -128,19 +141,6 @@ public class SysCacheService : ISysCacheService, IDynamicApiController, ISinglet
         await _cache.SetStringAsync(CacheConst.KeyAll, JSON.Serialize(allkeys));
     }
 
-    /// <summary>
-    /// 获取缓存
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    /// <param name="cacheKey"></param>
-    /// <returns></returns>
-    [NonAction]
-    public async Task<T> GetAsync<T>(string cacheKey)
-    {
-        var res = await _cache.GetAsync(cacheKey);
-        return res == null ? default : JSON.Deserialize<T>(Encoding.UTF8.GetString(res));
-    }
-
     /// <summary>
     /// 检查给定 key 是否存在
     /// </summary>
@@ -158,8 +158,7 @@ public class SysCacheService : ISysCacheService, IDynamicApiController, ISinglet
     /// </summary>
     /// <param name="cacheKey"></param>
     /// <returns></returns>
-    [NonAction]
-    public async Task AddCacheKey(string cacheKey)
+    private async Task AddCacheKey(string cacheKey)
     {
         var res = await _cache.GetStringAsync(CacheConst.KeyAll);
         var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JSON.Deserialize<List<string>>(res);
@@ -302,7 +301,7 @@ public class SysCacheService : ISysCacheService, IDynamicApiController, ISinglet
     }
 
     /// <summary>
-    ///  根据父键清空
+    ///  根据父键清空缓存
     /// </summary>
     /// <param name="key"></param>
     /// <returns></returns>

+ 8 - 0
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

@@ -135,6 +135,8 @@ public static class SqlSugarSetup
                     SetCustomEntityFilter(dbProvider);
                     // 配置租户实体过滤器
                     SetTenantEntityFilter(dbProvider);
+
+                    db.DataCache.Add(config.ConfigId, dbProvider.QueryFilter);
                 }
                 else
                 {
@@ -224,6 +226,12 @@ public static class SqlSugarSetup
 
         foreach (var entityType in entityTypes)
         {
+            // 排除非当前数据库实体
+            var tAtt = entityType.GetCustomAttribute<TenantAttribute>();
+            if ((tAtt != null && (string)db.CurrentConnectionConfig.ConfigId != tAtt.configId.ToString()) ||
+                (tAtt == null && (string)db.CurrentConnectionConfig.ConfigId != SqlSugarConst.ConfigId))
+                continue;
+
             Expression<Func<DataEntityBase, bool>> dynamicExpression = u => u.IsDelete == false;
             db.QueryFilter.Add(new TableFilterItem<object>(entityType, dynamicExpression));
         }

+ 1 - 0
Admin.NET/Admin.NET.Core/Util/AdminResultProvider.cs

@@ -71,6 +71,7 @@ public class AdminResultProvider : IUnifyResultProvider
     /// <summary>
     /// 返回 RESTful 风格结果集
     /// </summary>
+    /// <param name="context"></param>
     /// <param name="statusCode"></param>
     /// <param name="succeeded"></param>
     /// <param name="data"></param>