SysCacheService.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  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. [HttpPost("/sysCache/delete")]
  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. [HttpPost("/sysCache/delByParentKey")]
  83. public int RemoveByPrefixKey(string prefixKey)
  84. {
  85. var delKeys = _cache.Keys.Where(u => u.StartsWith(prefixKey)).ToArray();
  86. if (!delKeys.Any()) return 0;
  87. return _cache.Remove(delKeys);
  88. }
  89. /// <summary>
  90. /// 获取机构Id集合
  91. /// </summary>
  92. /// <param name="userId"></param>
  93. /// <returns></returns>
  94. [NonAction]
  95. public List<long> GetOrgIdList(long userId)
  96. {
  97. var key = CacheConst.KeyOrgIdList + userId;
  98. return _cache.Get<List<long>>(key);
  99. }
  100. /// <summary>
  101. /// 缓存机构Id集合
  102. /// </summary>
  103. /// <param name="userId"></param>
  104. /// <param name="orgIdList"></param>
  105. /// <returns></returns>
  106. [NonAction]
  107. public bool SetOrgIdList(long userId, List<long> orgIdList)
  108. {
  109. var key = CacheConst.KeyOrgIdList + userId;
  110. return _cache.Set(key, orgIdList);
  111. }
  112. /// <summary>
  113. /// 获取权限集合(按钮)
  114. /// </summary>
  115. /// <param name="userId"></param>
  116. /// <returns></returns>
  117. [NonAction]
  118. public List<string> GetPermission(long userId)
  119. {
  120. var key = CacheConst.KeyPermission + userId;
  121. return _cache.Get<List<string>>(key);
  122. }
  123. /// <summary>
  124. /// 缓存权限集合(按钮)
  125. /// </summary>
  126. /// <param name="userId"></param>
  127. /// <param name="permissions"></param>
  128. /// <returns></returns>
  129. [NonAction]
  130. public bool SetPermission(long userId, List<string> permissions)
  131. {
  132. var key = CacheConst.KeyPermission + userId;
  133. return _cache.Set(key, permissions);
  134. }
  135. /// <summary>
  136. /// 获取最大角色数据范围
  137. /// </summary>
  138. /// <param name="userId"></param>
  139. /// <returns></returns>
  140. [NonAction]
  141. public int? GetMaxDataScopeType(long userId)
  142. {
  143. var key = CacheConst.KeyMaxDataScopeType + userId;
  144. return _cache.Get<int>(key);
  145. }
  146. /// <summary>
  147. /// 缓存最大角色数据范围
  148. /// </summary>
  149. /// <param name="userId"></param>
  150. /// <param name="dataScopeType"></param>
  151. /// <returns></returns>
  152. [NonAction]
  153. public bool SetMaxDataScopeType(long userId, int dataScopeType)
  154. {
  155. var key = CacheConst.KeyMaxDataScopeType + userId;
  156. return _cache.Set(key, dataScopeType);
  157. }
  158. /// <summary>
  159. /// 获取缓存
  160. /// </summary>
  161. /// <param name="cacheKey"></param>
  162. /// <returns></returns>
  163. [HttpGet("/sysCache/detail")]
  164. public dynamic CacheDetail(string cacheKey)
  165. {
  166. return _cache.Get<dynamic>(cacheKey);
  167. }
  168. ///// <summary>
  169. ///// 获取菜单缓存
  170. ///// </summary>
  171. ///// <param name="userId"></param>
  172. ///// <param name="appCode"></param>
  173. ///// <returns></returns>
  174. //[NonAction]
  175. //public async Task<List<AntDesignTreeNode>> GetMenu(long userId, string appCode)
  176. //{
  177. // var cacheKey = CacheConst.KeyMenu + $"{userId}-{appCode}";
  178. // var res = await _cache.GetStringAsync(cacheKey);
  179. // return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<AntDesignTreeNode>>(res);
  180. //}
  181. ///// <summary>
  182. ///// 缓存菜单
  183. ///// </summary>
  184. ///// <param name="userId"></param>
  185. ///// <param name="appCode"></param>
  186. ///// <param name="menus"></param>
  187. ///// <returns></returns>
  188. //[NonAction]
  189. //public async Task SetMenu(long userId, string appCode, List<AntDesignTreeNode> menus)
  190. //{
  191. // var cacheKey = CommonConst.CACHE_KEY_MENU + $"{userId}-{appCode}";
  192. // await _cache.SetStringAsync(cacheKey, JSON.Serialize(menus));
  193. //}
  194. }