diff --git a/apps/vben5/apps/app-antd/package.json b/apps/vben5/apps/app-antd/package.json index 3fb801bb5..f259b3b0b 100644 --- a/apps/vben5/apps/app-antd/package.json +++ b/apps/vben5/apps/app-antd/package.json @@ -29,6 +29,7 @@ "@abp/account": "workspace:*", "@abp/ai-management": "workspace:*", "@abp/auditing": "workspace:*", + "@abp/cache-management": "workspace:*", "@abp/components": "workspace:*", "@abp/core": "workspace:*", "@abp/data-protection": "workspace:*", diff --git a/apps/vben5/apps/app-antd/src/views/caching/caches/index.vue b/apps/vben5/apps/app-antd/src/views/caching/caches/index.vue new file mode 100644 index 000000000..c38e6545a --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/caching/caches/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/vben5/packages/@abp/cache-management/package.json b/apps/vben5/packages/@abp/cache-management/package.json new file mode 100644 index 000000000..662bd4e92 --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/package.json @@ -0,0 +1,37 @@ +{ + "name": "@abp/cache-management", + "version": "10.0.2", + "homepage": "https://github.com/colinin/abp-next-admin", + "bugs": "https://github.com/colinin/abp-next-admin/issues", + "repository": { + "type": "git", + "url": "git+https://github.com/colinin/abp-next-admin.git", + "directory": "packages/@abp/cache-management" + }, + "license": "MIT", + "type": "module", + "sideEffects": [ + "**/*.css" + ], + "exports": { + ".": { + "types": "./src/index.ts", + "default": "./src/index.ts" + } + }, + "dependencies": { + "@abp/core": "workspace:*", + "@abp/request": "workspace:*", + "@abp/ui": "workspace:*", + "@ant-design/icons-vue": "catalog:", + "@vben/access": "workspace:*", + "@vben/common-ui": "workspace:*", + "@vben/hooks": "workspace:*", + "@vben/icons": "workspace:*", + "@vben/locales": "workspace:*", + "ant-design-vue": "catalog:", + "dayjs": "catalog:", + "vue": "catalog:", + "vxe-table": "catalog:" + } +} diff --git a/apps/vben5/packages/@abp/cache-management/src/api/index.ts b/apps/vben5/packages/@abp/cache-management/src/api/index.ts new file mode 100644 index 000000000..f75f2bf00 --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/api/index.ts @@ -0,0 +1 @@ +export { useCacheManagementApi } from './useCacheManagementApi'; diff --git a/apps/vben5/packages/@abp/cache-management/src/api/useCacheManagementApi.ts b/apps/vben5/packages/@abp/cache-management/src/api/useCacheManagementApi.ts new file mode 100644 index 000000000..15dc2993f --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/api/useCacheManagementApi.ts @@ -0,0 +1,93 @@ +import type { + CacheKeyInput, + CacheKeysDto, + CacheRefreshInput, + CacheRemoveKeysInput, + CacheSetInput, + CacheValueDto, + GetCacheKeysInput, +} from '../types'; + +import { useRequest } from '@abp/request'; + +/** 缓存管理API接口 */ +export function useCacheManagementApi() { + const apiPrefix = '/api/caching-management/cache'; + const { cancel, request } = useRequest(); + + /** + * 获取所有缓存键 + * @param input 参数 + */ + function getKeysApi(input?: GetCacheKeysInput): Promise { + return request(`${apiPrefix}/keys`, { + method: 'GET', + params: input, + }); + } + + /** + * 获取缓存值 + * @param input 参数 + */ + function getKeyValueApi(input: CacheKeyInput): Promise { + return request(`${apiPrefix}/value`, { + method: 'GET', + params: input, + }); + } + + /** + * 设置缓存值 + * @param input 参数 + */ + function setValueApi(input: CacheSetInput): Promise { + return request(`${apiPrefix}/set`, { + method: 'PUT', + data: input, + }); + } + + /** + * 刷新缓存 + * @param input 参数 + */ + function refreshApi(input: CacheRefreshInput): Promise { + return request(`${apiPrefix}/refresh`, { + method: 'PUT', + data: input, + }); + } + + /** + * 移除缓存 + * @param input 参数 + */ + function removeApi(input: CacheKeyInput): Promise { + return request(`${apiPrefix}/remove`, { + method: 'DELETE', + params: input, + }); + } + + /** + * 批量移除缓存 + * @param input 参数 + */ + function bulkRemoveApi(input: CacheRemoveKeysInput): Promise { + return request(`${apiPrefix}/bulk/remove`, { + method: 'DELETE', + data: input, + }); + } + + return { + cancel, + getKeysApi, + getKeyValueApi, + refreshApi, + setValueApi, + removeApi, + bulkRemoveApi, + }; +} diff --git a/apps/vben5/packages/@abp/cache-management/src/components/CacheEditModal.vue b/apps/vben5/packages/@abp/cache-management/src/components/CacheEditModal.vue new file mode 100644 index 000000000..1af566477 --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/components/CacheEditModal.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/apps/vben5/packages/@abp/cache-management/src/components/CacheKeyTable.vue b/apps/vben5/packages/@abp/cache-management/src/components/CacheKeyTable.vue new file mode 100644 index 000000000..2835294a0 --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/components/CacheKeyTable.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/apps/vben5/packages/@abp/cache-management/src/components/CacheRefreshModal.vue b/apps/vben5/packages/@abp/cache-management/src/components/CacheRefreshModal.vue new file mode 100644 index 000000000..22be96ce4 --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/components/CacheRefreshModal.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/apps/vben5/packages/@abp/cache-management/src/components/index.ts b/apps/vben5/packages/@abp/cache-management/src/components/index.ts new file mode 100644 index 000000000..915593b48 --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/components/index.ts @@ -0,0 +1 @@ +export { default as CacheKeyTable } from './CacheKeyTable.vue'; diff --git a/apps/vben5/packages/@abp/cache-management/src/constants/permissions.ts b/apps/vben5/packages/@abp/cache-management/src/constants/permissions.ts new file mode 100644 index 000000000..54c8bdaff --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/constants/permissions.ts @@ -0,0 +1,8 @@ +const CachePrefix = 'AbpCachingManagement.Cache'; + +export const CachingManagementPermissions = { + Refresh: `${CachePrefix}.Refresh`, + Default: CachePrefix, + Delete: `${CachePrefix}.Delete`, + ManageValue: `${CachePrefix}.ManageValue`, +}; diff --git a/apps/vben5/packages/@abp/cache-management/src/index.ts b/apps/vben5/packages/@abp/cache-management/src/index.ts new file mode 100644 index 000000000..314dad0cd --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/index.ts @@ -0,0 +1,3 @@ +export * from './api'; +export * from './components'; +export * from './types'; diff --git a/apps/vben5/packages/@abp/cache-management/src/types/index.ts b/apps/vben5/packages/@abp/cache-management/src/types/index.ts new file mode 100644 index 000000000..ea55e7c90 --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/src/types/index.ts @@ -0,0 +1,48 @@ +interface GetCacheKeysInput { + filter?: string; + marker?: string; + prefix?: string; +} + +interface CacheKeyInput { + key: string; +} + +interface CacheSetInput { + absoluteExpiration?: Date; + key: string; + slidingExpiration?: Date; + value?: string; +} + +interface CacheRefreshInput { + absoluteExpiration?: Date; + key: string; + slidingExpiration?: Date; +} + +interface CacheKeysDto { + keys: string[]; + nextMarker: string; +} + +interface CacheValueDto { + expiration?: Date; + size: number; + type: string; + values: Record; +} + +interface CacheRemoveKeysInput { + keys: string[]; +} + +export type { + CacheKeyInput, + CacheKeysDto, + CacheRefreshInput, + CacheRemoveKeysInput, + CacheSetInput, + CacheValueDto, + GetCacheKeysInput, +}; diff --git a/apps/vben5/packages/@abp/cache-management/tsconfig.json b/apps/vben5/packages/@abp/cache-management/tsconfig.json new file mode 100644 index 000000000..ce1a891fb --- /dev/null +++ b/apps/vben5/packages/@abp/cache-management/tsconfig.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@vben/tsconfig/web.json", + "include": ["src"], + "exclude": ["node_modules"] +}