SysCacheService.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. using NewLife.Caching;
  2. namespace Admin.NET.Core.Service;
  3. /// <summary>
  4. /// 系统缓存服务
  5. /// </summary>
  6. [ApiDescriptionSettings(Order = 190)]
  7. public class SysCacheService : IDynamicApiController, ISingleton
  8. {
  9. private readonly ICache _cache;
  10. public SysCacheService(ICache cache)
  11. {
  12. _cache = cache;
  13. }
  14. /// <summary>
  15. /// 获取所有缓存键名
  16. /// </summary>
  17. /// <returns></returns>
  18. [HttpGet("/sysCache/keyList")]
  19. public List<string> GetCacheKeys()
  20. {
  21. return _cache.Keys.ToList();
  22. }
  23. /// <summary>
  24. /// 增加缓存
  25. /// </summary>
  26. /// <param name="key"></param>
  27. /// <param name="value"></param>
  28. /// <returns></returns>
  29. [HttpPost("/sysCache/add")]
  30. public void Set(string key, object value)
  31. {
  32. _cache.Set(key, value);
  33. }
  34. /// <summary>
  35. /// 增加缓存并设置过期时间
  36. /// </summary>
  37. /// <param name="key"></param>
  38. /// <param name="value"></param>
  39. /// <param name="expire"></param>
  40. /// <returns></returns>
  41. [HttpPost("/sysCache/add/expire")]
  42. public void Set(string key, object value, TimeSpan expire)
  43. {
  44. _cache.Set(key, value, expire);
  45. }
  46. /// <summary>
  47. /// 获取缓存
  48. /// </summary>
  49. /// <typeparam name="T"></typeparam>
  50. /// <param name="key"></param>
  51. /// <returns></returns>
  52. [NonAction]
  53. public T Get<T>(string key)
  54. {
  55. return _cache.Get<T>(key);
  56. }
  57. /// <summary>
  58. /// 删除缓存
  59. /// </summary>
  60. /// <param name="key"></param>
  61. /// <returns></returns>
  62. [HttpGet("/sysCache/remove")]
  63. public void Remove(string key)
  64. {
  65. _cache.Remove(key);
  66. }
  67. /// <summary>
  68. /// 检查缓存是否存在
  69. /// </summary>
  70. /// <param name="key">键</param>
  71. /// <returns></returns>
  72. [NonAction]
  73. public bool ExistKey(string key)
  74. {
  75. return _cache.ContainsKey(key);
  76. }
  77. /// <summary>
  78. /// 根据键名前缀删除缓存
  79. /// </summary>
  80. /// <param name="prefixKey">键名前缀</param>
  81. /// <returns></returns>
  82. [HttpGet("/sysCache/delByParentKey")]
  83. public int RemoveByPrefixKey(string prefixKey)
  84. {
  85. var delKeys = _cache.Keys.Where(u => u.StartsWith(prefixKey)).ToArray();
  86. return _cache.Remove(delKeys);
  87. }
  88. /// <summary>
  89. /// 获取机构Id集合
  90. /// </summary>
  91. /// <param name="userId"></param>
  92. /// <returns></returns>
  93. [NonAction]
  94. public List<long> GetOrgIdList(long userId)
  95. {
  96. var key = CacheConst.KeyOrgIdList + userId;
  97. return _cache.Get<List<long>>(key);
  98. }
  99. /// <summary>
  100. /// 缓存机构Id集合
  101. /// </summary>
  102. /// <param name="userId"></param>
  103. /// <param name="orgIdList"></param>
  104. /// <returns></returns>
  105. [NonAction]
  106. public bool SetOrgIdList(long userId, List<long> orgIdList)
  107. {
  108. var key = CacheConst.KeyOrgIdList + userId;
  109. return _cache.Set(key, orgIdList);
  110. }
  111. /// <summary>
  112. /// 获取权限集合(按钮)
  113. /// </summary>
  114. /// <param name="userId"></param>
  115. /// <returns></returns>
  116. [NonAction]
  117. public List<string> GetPermission(long userId)
  118. {
  119. var key = CacheConst.KeyPermission + userId;
  120. return _cache.Get<List<string>>(key);
  121. }
  122. /// <summary>
  123. /// 缓存权限集合(按钮)
  124. /// </summary>
  125. /// <param name="userId"></param>
  126. /// <param name="permissions"></param>
  127. /// <returns></returns>
  128. [NonAction]
  129. public bool SetPermission(long userId, List<string> permissions)
  130. {
  131. var key = CacheConst.KeyPermission + userId;
  132. return _cache.Set(key, permissions);
  133. }
  134. /// <summary>
  135. /// 获取最大角色数据范围
  136. /// </summary>
  137. /// <param name="userId"></param>
  138. /// <returns></returns>
  139. [NonAction]
  140. public int? GetMaxDataScopeType(long userId)
  141. {
  142. var key = CacheConst.KeyMaxDataScopeType + userId;
  143. return _cache.Get<int>(key);
  144. }
  145. /// <summary>
  146. /// 缓存最大角色数据范围
  147. /// </summary>
  148. /// <param name="userId"></param>
  149. /// <param name="dataScopeType"></param>
  150. /// <returns></returns>
  151. [NonAction]
  152. public bool SetMaxDataScopeType(long userId, int dataScopeType)
  153. {
  154. var key = CacheConst.KeyMaxDataScopeType + userId;
  155. return _cache.Set(key, dataScopeType);
  156. }
  157. /// <summary>
  158. /// 获取缓存
  159. /// </summary>
  160. /// <param name="cacheKey"></param>
  161. /// <returns></returns>
  162. [HttpGet("/sysCache/detail")]
  163. public dynamic CacheDetail(string cacheKey)
  164. {
  165. return _cache.Get<dynamic>(cacheKey);
  166. }
  167. ///// <summary>
  168. ///// 获取菜单缓存
  169. ///// </summary>
  170. ///// <param name="userId"></param>
  171. ///// <param name="appCode"></param>
  172. ///// <returns></returns>
  173. //[NonAction]
  174. //public async Task<List<AntDesignTreeNode>> GetMenu(long userId, string appCode)
  175. //{
  176. // var cacheKey = CacheConst.KeyMenu + $"{userId}-{appCode}";
  177. // var res = await _cache.GetStringAsync(cacheKey);
  178. // return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<AntDesignTreeNode>>(res);
  179. //}
  180. ///// <summary>
  181. ///// 缓存菜单
  182. ///// </summary>
  183. ///// <param name="userId"></param>
  184. ///// <param name="appCode"></param>
  185. ///// <param name="menus"></param>
  186. ///// <returns></returns>
  187. //[NonAction]
  188. //public async Task SetMenu(long userId, string appCode, List<AntDesignTreeNode> menus)
  189. //{
  190. // var cacheKey = CommonConst.CACHE_KEY_MENU + $"{userId}-{appCode}";
  191. // await _cache.SetStringAsync(cacheKey, JSON.Serialize(menus));
  192. //}
  193. }