|
@@ -1,4 +1,5 @@
|
|
|
-using CallCenter.Users;
|
|
|
+using CallCenter.Share.Requests;
|
|
|
+using CallCenter.Users;
|
|
|
using XF.Domain.Cache;
|
|
|
using XF.Domain.Dependency;
|
|
|
using XF.Domain.Exceptions;
|
|
@@ -9,13 +10,16 @@ public class UserCacheManager : IUserCacheManager, IScopeDependency
|
|
|
{
|
|
|
private readonly ITypedCache<Work> _cacheWork;
|
|
|
private readonly IWorkRepository _workRepository;
|
|
|
-
|
|
|
+ private readonly ITypedCache<List<Work>> _cacheWorks;
|
|
|
+ private const string WorkKey = "Works";
|
|
|
public UserCacheManager(
|
|
|
ITypedCache<Work> cacheWork,
|
|
|
- IWorkRepository workRepository)
|
|
|
+ IWorkRepository workRepository,
|
|
|
+ ITypedCache<List<Work>> cacheWorks)
|
|
|
{
|
|
|
_cacheWork = cacheWork;
|
|
|
_workRepository = workRepository;
|
|
|
+ _cacheWorks = cacheWorks;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -55,6 +59,42 @@ public class UserCacheManager : IUserCacheManager, IScopeDependency
|
|
|
return work;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 查询所有在工作的记录
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public List<Work> GetWorks()
|
|
|
+ {
|
|
|
+ var works = _cacheWorks.GetOrAdd(WorkKey, k =>
|
|
|
+ {
|
|
|
+ var works = _workRepository.QueryAsync(x => x.EndTime == null).GetAwaiter().GetResult();
|
|
|
+ return works;
|
|
|
+ });
|
|
|
+ return works;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void AddOrUpdateWorksCache(List<Work> list)
|
|
|
+ {
|
|
|
+ _cacheWorks.AddOrUpdate(WorkKey, list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void RemoveCallCache(string id)
|
|
|
+ {
|
|
|
+ var list = _cacheWorks.Get(WorkKey)?.ToList();
|
|
|
+ if (list!=null)
|
|
|
+ {
|
|
|
+ var model = list.First(x => x.Id == id);
|
|
|
+ if (model!=null)
|
|
|
+ {
|
|
|
+ list.Remove(model);
|
|
|
+ AddOrUpdateWorksCache(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 查询分机是否处于工作
|
|
|
/// </summary>
|
|
@@ -108,4 +148,7 @@ public class UserCacheManager : IUserCacheManager, IScopeDependency
|
|
|
{
|
|
|
_cacheWork.Update(Work.GetKey(KeyMode.UserId, work.UserId), d => work);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|