Explorar o código

sysdicdata cache

dss %!s(int64=2) %!d(string=hai) anos
pai
achega
b1e362b843

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

@@ -276,7 +276,7 @@ namespace Hotline.Api.Controllers
         [HttpGet("dictdata-type")]
         public async Task<List<SysDicData>> GetSysDicData([FromQuery] GetSysDicDataDto dto)
         {
-            return await _sysDicDataRepository.Queryable().Where(x => x.DicTypeId == dto.typeid).WhereIF(!string.IsNullOrEmpty(dto.datavalue),x=>x.DicDataValue.Contains(dto.datavalue)).ToTreeAsync(x=>x.children,x=>x.ParentId,"");
+            return await _sysDicDataRepository.Queryable().Where(x => x.DicTypeId == dto.typeid).WhereIF(!string.IsNullOrEmpty(dto.datavalue),x=>x.DicDataValue.Contains(dto.datavalue)).ToTreeAsync(x=>x.Children,x=>x.ParentId,"");
         }
 
         /// <summary>

+ 32 - 0
src/Hotline.CacheManager/SysDicDataCacheManager.cs

@@ -0,0 +1,32 @@
+using Hotline.Caches;
+using Hotline.Settings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Cache;
+
+namespace Hotline.CacheManager
+{
+    public class SysDicDataCacheManager : ISysDicDataCacheManager
+    {
+        private readonly ISysDicDataRepository _sysDicDataRepository;
+        private readonly ITypedCache<IReadOnlyList<SysDicData>> _cacheSysDicData;
+
+        public SysDicDataCacheManager(ISysDicDataRepository sysDicDataRepository,ITypedCache<IReadOnlyList<SysDicData>> cacheSysDicData)
+        {
+            _sysDicDataRepository = sysDicDataRepository;
+            _cacheSysDicData = cacheSysDicData;
+        }
+
+        public IReadOnlyList<SysDicData> GetSysDicDataCache(string code)
+        {
+            var sysDicDataList = _cacheSysDicData.GetOrAdd(code, k =>
+            {
+                return _sysDicDataRepository.Queryable().Where(x => x.DicTypeCode == code).ToTreeAsync(x => x.Children, it => it.ParentId, "").GetAwaiter().GetResult();
+            });
+            return sysDicDataList;
+        }
+    }
+}

+ 14 - 0
src/Hotline/Caches/ISysDicDataCacheManager.cs

@@ -0,0 +1,14 @@
+using Hotline.Settings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Caches
+{
+    public interface ISysDicDataCacheManager
+    {
+        IReadOnlyList<SysDicData> GetSysDicDataCache(string code);
+    }
+}

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

@@ -34,6 +34,6 @@ namespace Hotline.Settings
         public string? ParentId { get; set; }
 
         [SugarColumn(IsIgnore = true)]
-        public List<SysDicData> children { get; set; }
+        public List<SysDicData> Children { get; set; }
     }
 }