Browse Source

!1398 增加清空所有缓存
Merge pull request !1398 from KaneLeung/next

zuohuaijun 1 year ago
parent
commit
359e8bf139

+ 1 - 0
Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs

@@ -130,6 +130,7 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
             new SysMenu{ Id=1310000000371, Pid=1310000000301, Title="缓存管理", Path="/platform/cache", Name="sysCache", Component="/system/cache/index", Icon="ele-Loading", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=160 },
             new SysMenu{ Id=1310000000371, Pid=1310000000301, Title="缓存管理", Path="/platform/cache", Name="sysCache", Component="/system/cache/index", Icon="ele-Loading", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=160 },
             new SysMenu{ Id=1310000000372, Pid=1310000000371, Title="查询", Permission="sysCache:keyList", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
             new SysMenu{ Id=1310000000372, Pid=1310000000371, Title="查询", Permission="sysCache:keyList", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
             new SysMenu{ Id=1310000000373, Pid=1310000000371, Title="删除", Permission="sysCache:delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
             new SysMenu{ Id=1310000000373, Pid=1310000000371, Title="删除", Permission="sysCache:delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
+            new SysMenu{ Id=1310000000374, Pid=1310000000371, Title="清空", Permission="sysCache:clear", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
 
 
             new SysMenu{ Id=1310000000381, Pid=1310000000301, Title="行政区域", Path="/platform/region", Name="sysRegion", Component="/system/region/index", Icon="ele-LocationInformation", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=170 },
             new SysMenu{ Id=1310000000381, Pid=1310000000301, Title="行政区域", Path="/platform/region", Name="sysRegion", Component="/system/region/index", Icon="ele-LocationInformation", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=170 },
             new SysMenu{ Id=1310000000382, Pid=1310000000381, Title="查询", Permission="sysRegion:page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
             new SysMenu{ Id=1310000000382, Pid=1310000000381, Title="查询", Permission="sysRegion:page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },

+ 16 - 0
Admin.NET/Admin.NET.Core/Service/Cache/SysCacheService.cs

@@ -86,6 +86,22 @@ public class SysCacheService : IDynamicApiController, ISingleton
         return _cacheProvider.Cache.Remove($"{_cacheOptions.Prefix}{key}");
         return _cacheProvider.Cache.Remove($"{_cacheOptions.Prefix}{key}");
     }
     }
 
 
+    /// <summary>
+    /// 清空所有缓存 🔖
+    /// </summary>
+    /// <returns></returns>
+    [HttpDelete]
+    [DisplayName("清空所有缓存")]
+    [ApiDescriptionSettings(Name = "Clear")]
+    public void Clear()
+    {
+        // 清除框架的缓存
+        _cacheProvider.Cache.Clear();
+        // 当使用Redis时,清除MemoryCache,SqlSugarFilter会用到
+        var memoryCache = Cache.Default;
+        if (memoryCache != _cacheProvider.Cache) memoryCache.Clear();
+    }
+
     /// <summary>
     /// <summary>
     /// 检查缓存是否存在
     /// 检查缓存是否存在
     /// </summary>
     /// </summary>

+ 23 - 3
Web/src/views/system/cache/index.vue

@@ -33,7 +33,10 @@
 					<template #header>
 					<template #header>
 						<div class="card-header">
 						<div class="card-header">
 							<span>{{ `缓存数据${state.cacheKey ? `【${state.cacheKey}】` : ''}` }}</span>
 							<span>{{ `缓存数据${state.cacheKey ? `【${state.cacheKey}】` : ''}` }}</span>
-							<el-button icon="ele-Delete" size="small" type="danger" @click="delCache" v-auth="'sysCache:delete'"> 删除缓存 </el-button>
+							<el-space :size="5">
+								<el-button icon="ele-Delete" size="small" type="danger" @click="delCache" v-auth="'sysCache:delete'"> 删除缓存 </el-button>
+								<el-button icon="ele-DeleteFilled" size="small" type="danger" @click="clearCache" v-auth="'sysCache:clear'"> 清空缓存 </el-button>
+							</el-space>
 						</div>
 						</div>
 					</template>
 					</template>
 					<vue-json-pretty :data="state.cacheValue" showLength showIcon showLineNumber showSelectController />
 					<vue-json-pretty :data="state.cacheValue" showLength showIcon showLineNumber showSelectController />
@@ -66,7 +69,7 @@ const state = reactive({
 });
 });
 
 
 onMounted(async () => {
 onMounted(async () => {
-	handleQuery();
+	await handleQuery();
 });
 });
 
 
 // 查询操作
 // 查询操作
@@ -114,7 +117,7 @@ const delCache = () => {
 	})
 	})
 		.then(async () => {
 		.then(async () => {
 			await getAPI(SysCacheApi).apiSysCacheDeleteKeyPost(currentNode.value.id);
 			await getAPI(SysCacheApi).apiSysCacheDeleteKeyPost(currentNode.value.id);
-			handleQuery();
+			await handleQuery();
 			state.cacheValue = undefined;
 			state.cacheValue = undefined;
 			state.cacheKey = undefined;
 			state.cacheKey = undefined;
 			ElMessage.success('删除成功');
 			ElMessage.success('删除成功');
@@ -122,6 +125,23 @@ const delCache = () => {
 		.catch(() => {});
 		.catch(() => {});
 };
 };
 
 
+// 清空
+const clearCache = () => {
+	ElMessageBox.confirm(`确认清空所有缓存?`, '提示', {
+		confirmButtonText: '确定',
+		cancelButtonText: '取消',
+		type: 'warning',
+	})
+		.then(async () => {
+			await getAPI(SysCacheApi).apiSysCacheClearDelete();
+			await handleQuery();
+			state.cacheValue = undefined;
+			state.cacheKey = undefined;
+			ElMessage.success('清空成功');
+		})
+		.catch(() => {});
+};
+
 // 树点击
 // 树点击
 const nodeClick = async (node: any) => {
 const nodeClick = async (node: any) => {
 	if (node.id == 0) return;
 	if (node.id == 0) return;