using Hotline.Caches; using Hotline.CallCenter.Calls; using XF.Domain.Cache; using XF.Domain.Dependency; namespace Hotline.CacheManager { public class CallCacheManager : ICallCacheManager, IScopeDependency { private readonly ITypedCache> _cacheCall; private const string CallKey = "CallQueue"; public CallCacheManager(ITypedCache> cacheCall) { _cacheCall = cacheCall; } /// /// 新增或修改队列 /// /// public void AddCallCache(Call call) { var list = GetCallQueueList(); if (list == null) { list = new List(); } list.Add(call); _cacheCall.AddOrUpdate(CallKey, list); } /// /// 获取队列 /// /// public List? GetCallQueueList() { var list = _cacheCall.GetOrAdd(CallKey, k => { return new List(); }); return list; } /// /// 删除队列 /// /// /// public void RemoveCallCache(string id) { var list = _cacheCall.Get(CallKey)?.ToList(); if (list != null) { var model = list.FirstOrDefault(x => x.Id == id); if (model != null) { list.Remove(model); _cacheCall.AddOrUpdate(CallKey, list); } } } } }