From 0fb0f17319ecf71d66b96a6acfd07f754be9443e Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 24 十月 2024 13:44:38 +0800
Subject: [PATCH] WCS添加穿梭车信息表,修改任务信息表
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 351 insertions(+), 0 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs"
new file mode 100644
index 0000000..fff2699
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs"
@@ -0,0 +1,351 @@
+锘縰sing Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Caching.Memory;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+
+namespace WIDESEA_Core.Caches
+{
+ /// <summary>
+ /// 瀹炰緥鍖栫紦瀛樻帴鍙Caching
+ /// </summary>
+ public class Caching : ICaching
+ {
+ private readonly IDistributedCache _cache;
+
+ public Caching(IDistributedCache cache)
+ {
+ _cache = cache;
+ }
+
+ private byte[] GetBytes<T>(T source)
+ {
+ return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(source));
+ }
+
+ public IDistributedCache Cache => _cache;
+
+ public void AddCacheKey(string cacheKey)
+ {
+ var res = _cache.GetString(CacheConst.KeyAll);
+ var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+ if (!allkeys.Any(m => m == cacheKey))
+ {
+ allkeys.Add(cacheKey);
+ _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+ }
+ }
+
+ /// <summary>
+ /// 澧炲姞缂撳瓨Key
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ public async Task AddCacheKeyAsync(string cacheKey)
+ {
+ var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+ var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+ if (!allkeys.Any(m => m == cacheKey))
+ {
+ allkeys.Add(cacheKey);
+ await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+ }
+ }
+
+ public void DelByPattern(string key)
+ {
+ var allkeys = GetAllCacheKeys();
+ if (allkeys == null) return;
+
+ var delAllkeys = allkeys.Where(u => u.Contains(key)).ToList();
+ delAllkeys.ForEach(u => { _cache.Remove(u); });
+
+ // 鏇存柊鎵�鏈夌紦瀛橀敭
+ allkeys = allkeys.Where(u => !u.Contains(key)).ToList();
+ _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏌愮壒寰佸叧閿瓧缂撳瓨
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ public async Task DelByPatternAsync(string key)
+ {
+ var allkeys = await GetAllCacheKeysAsync();
+ if (allkeys == null) return;
+
+ var delAllkeys = allkeys.Where(u => u.Contains(key)).ToList();
+ delAllkeys.ForEach(u => { _cache.Remove(u); });
+
+ // 鏇存柊鎵�鏈夌紦瀛橀敭
+ allkeys = allkeys.Where(u => !u.Contains(key)).ToList();
+ await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+ }
+
+ public void DelCacheKey(string cacheKey)
+ {
+ var res = _cache.GetString(CacheConst.KeyAll);
+ var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+ if (allkeys.Any(m => m == cacheKey))
+ {
+ allkeys.Remove(cacheKey);
+ _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎缂撳瓨
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ public async Task DelCacheKeyAsync(string cacheKey)
+ {
+ var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+ var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+ if (allkeys.Any(m => m == cacheKey))
+ {
+ allkeys.Remove(cacheKey);
+ await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+ }
+ }
+
+ public bool Exists(string cacheKey)
+ {
+ var res = _cache.Get(cacheKey);
+ return res != null;
+ }
+
+ /// <summary>
+ /// 妫�鏌ョ粰瀹� key 鏄惁瀛樺湪
+ /// </summary>
+ /// <param name="cacheKey">閿�</param>
+ /// <returns></returns>
+ public async Task<bool> ExistsAsync(string cacheKey)
+ {
+ var res = await _cache.GetAsync(cacheKey);
+ return res != null;
+ }
+
+ public List<string> GetAllCacheKeys()
+ {
+ var res = _cache.GetString(CacheConst.KeyAll);
+ return string.IsNullOrWhiteSpace(res) ? null : JsonConvert.DeserializeObject<List<string>>(res);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夌紦瀛樺垪琛�
+ /// </summary>
+ /// <returns></returns>
+ public async Task<List<string>> GetAllCacheKeysAsync()
+ {
+ var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+ return string.IsNullOrWhiteSpace(res) ? null : JsonConvert.DeserializeObject<List<string>>(res);
+ }
+
+ public T Get<T>(string cacheKey)
+ {
+ var res = _cache.Get(cacheKey);
+ return res == null ? default : JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(res));
+ }
+
+ /// <summary>
+ /// 鑾峰彇缂撳瓨
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ public async Task<T> GetAsync<T>(string cacheKey)
+ {
+ var res = await _cache.GetAsync(cacheKey);
+ return res == null ? default : JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(res));
+ }
+
+ public object Get(Type type, string cacheKey)
+ {
+ var res = _cache.Get(cacheKey);
+ return res == null ? default : JsonConvert.DeserializeObject(Encoding.UTF8.GetString(res), type);
+ }
+
+ public async Task<object> GetAsync(Type type, string cacheKey)
+ {
+ var res = await _cache.GetAsync(cacheKey);
+ return res == null ? default : JsonConvert.DeserializeObject(Encoding.UTF8.GetString(res), type);
+ }
+
+ public string GetString(string cacheKey)
+ {
+ return _cache.GetString(cacheKey);
+ }
+
+ /// <summary>
+ /// 鑾峰彇缂撳瓨
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ public async Task<string> GetStringAsync(string cacheKey)
+ {
+ return await _cache.GetStringAsync(cacheKey);
+ }
+
+ public void Remove(string key)
+ {
+ _cache.Remove(key);
+ DelCacheKey(key);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎缂撳瓨
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ public async Task RemoveAsync(string key)
+ {
+ await _cache.RemoveAsync(key);
+ await DelCacheKeyAsync(key);
+ }
+
+ public void RemoveAll()
+ {
+ var catches = GetAllCacheKeys();
+ foreach (var @catch in catches) Remove(@catch);
+
+ catches.Clear();
+ _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(catches));
+ }
+
+ public async Task RemoveAllAsync()
+ {
+ var catches = await GetAllCacheKeysAsync();
+ foreach (var @catch in catches) await RemoveAsync(@catch);
+
+ catches.Clear();
+ await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(catches));
+ }
+
+
+ public void Set<T>(string cacheKey, T value, TimeSpan? expire = null)
+ {
+ _cache.Set(cacheKey, GetBytes(value),
+ expire == null
+ ? new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) }
+ : new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+ AddCacheKey(cacheKey);
+ }
+
+ /// <summary>
+ /// 澧炲姞瀵硅薄缂撳瓨
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ public async Task SetAsync<T>(string cacheKey, T value)
+ {
+ await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)),
+ new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+
+ await AddCacheKeyAsync(cacheKey);
+ }
+
+ /// <summary>
+ /// 澧炲姞瀵硅薄缂撳瓨,骞惰缃繃鏈熸椂闂�
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <param name="value"></param>
+ /// <param name="expire"></param>
+ /// <returns></returns>
+ public async Task SetAsync<T>(string cacheKey, T value, TimeSpan expire)
+ {
+ await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)),
+ new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+ await AddCacheKeyAsync(cacheKey);
+ }
+
+ public void SetPermanent<T>(string cacheKey, T value)
+ {
+ _cache.Set(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)));
+ AddCacheKey(cacheKey);
+ }
+
+ public async Task SetPermanentAsync<T>(string cacheKey, T value)
+ {
+ await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)));
+ await AddCacheKeyAsync(cacheKey);
+ }
+
+ public void SetString(string cacheKey, string value, TimeSpan? expire = null)
+ {
+ if (expire == null)
+ _cache.SetString(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+ else
+ _cache.SetString(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+ AddCacheKey(cacheKey);
+ }
+
+ /// <summary>
+ /// 澧炲姞瀛楃涓茬紦瀛�
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ public async Task SetStringAsync(string cacheKey, string value)
+ {
+ await _cache.SetStringAsync(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+
+ await AddCacheKeyAsync(cacheKey);
+ }
+
+ /// <summary>
+ /// 澧炲姞瀛楃涓茬紦瀛�,骞惰缃繃鏈熸椂闂�
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <param name="value"></param>
+ /// <param name="expire"></param>
+ /// <returns></returns>
+ public async Task SetStringAsync(string cacheKey, string value, TimeSpan expire)
+ {
+ await _cache.SetStringAsync(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+ await AddCacheKeyAsync(cacheKey);
+ }
+
+
+ /// <summary>
+ /// 缂撳瓨鏈�澶ц鑹叉暟鎹寖鍥�
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="dataScopeType"></param>
+ /// <returns></returns>
+ public async Task SetMaxDataScopeType(long userId, int dataScopeType)
+ {
+ var cacheKey = CacheConst.KeyMaxDataScopeType + userId;
+ await SetStringAsync(cacheKey, dataScopeType.ToString());
+
+ await AddCacheKeyAsync(cacheKey);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐖堕敭娓呯┖
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ public async Task DelByParentKeyAsync(string key)
+ {
+ var allkeys = await GetAllCacheKeysAsync();
+ if (allkeys == null) return;
+
+ var delAllkeys = allkeys.Where(u => u.StartsWith(key)).ToList();
+ delAllkeys.ForEach(Remove);
+ // 鏇存柊鎵�鏈夌紦瀛橀敭
+ allkeys = allkeys.Where(u => !u.StartsWith(key)).ToList();
+ await SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+ }
+ }
+}
--
Gitblit v1.9.3