From 7d18d00b3b6b0fe2750a6bd0523828a6f92ad0f0 Mon Sep 17 00:00:00 2001 From: colin Date: Mon, 21 Apr 2025 11:27:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(vben5):=20=E5=A2=9E=E5=8A=A0webhook?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=88=97=E8=A1=A8=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app-antd/src/locales/langs/en-US/abp.json | 3 +- .../app-antd/src/locales/langs/zh-CN/abp.json | 3 +- .../app-antd/src/router/routes/modules/abp.ts | 9 + .../src/views/webhooks/definitions/index.vue | 15 + .../packages/@abp/webhooks/src/api/index.ts | 2 + .../src/api/useWebhookDefinitionsApi.ts | 91 +++++ .../webhooks/WebhookDefinitionTable.vue | 328 ++++++++++++++++++ .../@abp/webhooks/src/components/index.ts | 1 + .../webhooks/src/constants/permissions.ts | 11 + .../@abp/webhooks/src/types/definitions.ts | 40 +++ .../packages/@abp/webhooks/src/types/index.ts | 1 + 11 files changed, 502 insertions(+), 2 deletions(-) create mode 100644 apps/vben5/apps/app-antd/src/views/webhooks/definitions/index.vue create mode 100644 apps/vben5/packages/@abp/webhooks/src/api/useWebhookDefinitionsApi.ts create mode 100644 apps/vben5/packages/@abp/webhooks/src/components/definitions/webhooks/WebhookDefinitionTable.vue create mode 100644 apps/vben5/packages/@abp/webhooks/src/types/definitions.ts diff --git a/apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json b/apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json index ad4031f55..80be45b1f 100644 --- a/apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json +++ b/apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json @@ -116,6 +116,7 @@ }, "webhooks": { "title": "Webhooks", - "groups": "Groups" + "groups": "Groups", + "definitions": "Definitions" } } diff --git a/apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json b/apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json index e22314e36..4d3eff156 100644 --- a/apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json +++ b/apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json @@ -116,6 +116,7 @@ }, "webhooks": { "title": "Webhook管理", - "groups": "Webhook分组" + "groups": "Webhook分组", + "definitions": "Webhook定义" } } diff --git a/apps/vben5/apps/app-antd/src/router/routes/modules/abp.ts b/apps/vben5/apps/app-antd/src/router/routes/modules/abp.ts index e4c7b825f..709a89c04 100644 --- a/apps/vben5/apps/app-antd/src/router/routes/modules/abp.ts +++ b/apps/vben5/apps/app-antd/src/router/routes/modules/abp.ts @@ -467,6 +467,15 @@ const routes: RouteRecordRaw[] = [ path: '/webhooks/groups', component: () => import('#/views/webhooks/groups/index.vue'), }, + { + meta: { + title: $t('abp.webhooks.definitions'), + icon: 'material-symbols:webhook', + }, + name: 'WebhookDefinitions', + path: '/webhooks/definitions', + component: () => import('#/views/webhooks/definitions/index.vue'), + }, ], }, { diff --git a/apps/vben5/apps/app-antd/src/views/webhooks/definitions/index.vue b/apps/vben5/apps/app-antd/src/views/webhooks/definitions/index.vue new file mode 100644 index 000000000..c8a497b4b --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/webhooks/definitions/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/vben5/packages/@abp/webhooks/src/api/index.ts b/apps/vben5/packages/@abp/webhooks/src/api/index.ts index e69de29bb..12a6e651a 100644 --- a/apps/vben5/packages/@abp/webhooks/src/api/index.ts +++ b/apps/vben5/packages/@abp/webhooks/src/api/index.ts @@ -0,0 +1,2 @@ +export * from './useWebhookDefinitionsApi'; +export * from './useWebhookGroupDefinitionsApi'; diff --git a/apps/vben5/packages/@abp/webhooks/src/api/useWebhookDefinitionsApi.ts b/apps/vben5/packages/@abp/webhooks/src/api/useWebhookDefinitionsApi.ts new file mode 100644 index 000000000..e582b62f4 --- /dev/null +++ b/apps/vben5/packages/@abp/webhooks/src/api/useWebhookDefinitionsApi.ts @@ -0,0 +1,91 @@ +import type { ListResultDto } from '@abp/core'; + +import type { + WebhookDefinitionCreateDto, + WebhookDefinitionDto, + WebhookDefinitionGetListInput, + WebhookDefinitionUpdateDto, +} from '../types/definitions'; + +import { useRequest } from '@abp/request'; + +export function useWebhookDefinitionsApi() { + const { cancel, request } = useRequest(); + + /** + * 删除Webhook定义 + * @param name Webhook名称 + */ + function deleteApi(name: string): Promise { + return request(`/api/webhooks/definitions/${name}`, { + method: 'DELETE', + }); + } + + /** + * 查询Webhook定义 + * @param name Webhook名称 + * @returns Webhook定义数据传输对象 + */ + function getApi(name: string): Promise { + return request(`/api/webhooks/definitions/${name}`, { + method: 'GET', + }); + } + + /** + * 查询Webhook定义列表 + * @param input Webhook过滤条件 + * @returns Webhook定义数据传输对象列表 + */ + function getListApi( + input?: WebhookDefinitionGetListInput, + ): Promise> { + return request>( + `/api/webhooks/definitions`, + { + method: 'GET', + params: input, + }, + ); + } + + /** + * 创建Webhook定义 + * @param input Webhook定义参数 + * @returns Webhook定义数据传输对象 + */ + function createApi( + input: WebhookDefinitionCreateDto, + ): Promise { + return request('/api/webhooks/definitions', { + data: input, + method: 'POST', + }); + } + + /** + * 更新Webhook定义 + * @param name Webhook名称 + * @param input Webhook定义参数 + * @returns Webhook定义数据传输对象 + */ + function updateApi( + name: string, + input: WebhookDefinitionUpdateDto, + ): Promise { + return request(`/api/webhooks/definitions/${name}`, { + data: input, + method: 'PUT', + }); + } + + return { + cancel, + createApi, + deleteApi, + getApi, + getListApi, + updateApi, + }; +} diff --git a/apps/vben5/packages/@abp/webhooks/src/components/definitions/webhooks/WebhookDefinitionTable.vue b/apps/vben5/packages/@abp/webhooks/src/components/definitions/webhooks/WebhookDefinitionTable.vue new file mode 100644 index 000000000..0120ef14e --- /dev/null +++ b/apps/vben5/packages/@abp/webhooks/src/components/definitions/webhooks/WebhookDefinitionTable.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/apps/vben5/packages/@abp/webhooks/src/components/index.ts b/apps/vben5/packages/@abp/webhooks/src/components/index.ts index 5632abd6d..14b4c03ac 100644 --- a/apps/vben5/packages/@abp/webhooks/src/components/index.ts +++ b/apps/vben5/packages/@abp/webhooks/src/components/index.ts @@ -1 +1,2 @@ export { default as WebhookGroupDefinitionTable } from './definitions/groups/WebhookGroupDefinitionTable.vue'; +export { default as WebhookDefinitionTable } from './definitions/webhooks/WebhookDefinitionTable.vue'; diff --git a/apps/vben5/packages/@abp/webhooks/src/constants/permissions.ts b/apps/vben5/packages/@abp/webhooks/src/constants/permissions.ts index 25334ca12..73156c1b8 100644 --- a/apps/vben5/packages/@abp/webhooks/src/constants/permissions.ts +++ b/apps/vben5/packages/@abp/webhooks/src/constants/permissions.ts @@ -8,3 +8,14 @@ export const GroupDefinitionsPermissions = { /** 更新 */ Update: 'AbpWebhooks.GroupDefinitions.Update', }; + +/** Webhook定义权限 */ +export const WebhookDefinitionsPermissions = { + /** 新增 */ + Create: 'AbpWebhooks.Definitions.Create', + Default: 'AbpWebhooks.Definitions', + /** 删除 */ + Delete: 'AbpWebhooks.Definitions.Delete', + /** 更新 */ + Update: 'AbpWebhooks.Definitions.Update', +}; diff --git a/apps/vben5/packages/@abp/webhooks/src/types/definitions.ts b/apps/vben5/packages/@abp/webhooks/src/types/definitions.ts new file mode 100644 index 000000000..2f3391d7d --- /dev/null +++ b/apps/vben5/packages/@abp/webhooks/src/types/definitions.ts @@ -0,0 +1,40 @@ +import type { IHasConcurrencyStamp, IHasExtraProperties } from '@abp/core'; + +interface WebhookDefinitionDto extends IHasExtraProperties { + description?: string; + displayName: string; + groupName: string; + isEnabled: boolean; + isStatic: boolean; + name: string; + requiredFeatures?: string[]; +} + +interface WebhookDefinitionCreateOrUpdateDto extends IHasExtraProperties { + description?: string; + displayName: string; + isEnabled: boolean; + requiredFeatures?: string[]; +} + +interface WebhookDefinitionCreateDto + extends WebhookDefinitionCreateOrUpdateDto { + groupName: string; + name: string; +} + +interface WebhookDefinitionUpdateDto + extends IHasConcurrencyStamp, + WebhookDefinitionCreateOrUpdateDto {} + +interface WebhookDefinitionGetListInput { + filter?: string; + groupName?: string; +} + +export type { + WebhookDefinitionCreateDto, + WebhookDefinitionDto, + WebhookDefinitionGetListInput, + WebhookDefinitionUpdateDto, +}; diff --git a/apps/vben5/packages/@abp/webhooks/src/types/index.ts b/apps/vben5/packages/@abp/webhooks/src/types/index.ts index d20b7e110..6a41718f6 100644 --- a/apps/vben5/packages/@abp/webhooks/src/types/index.ts +++ b/apps/vben5/packages/@abp/webhooks/src/types/index.ts @@ -1 +1,2 @@ +export * from './definitions'; export * from './groups';