From 19803463936eed5c244f0f2a32eef486d083b323 Mon Sep 17 00:00:00 2001 From: colin Date: Mon, 17 Feb 2025 15:54:28 +0800 Subject: [PATCH 1/3] feat: add saas package. --- apps/vben5/apps/app-antd/package.json | 1 + .../app-antd/src/locales/langs/en-US/abp.json | 5 + .../app-antd/src/locales/langs/zh-CN/abp.json | 5 + .../app-antd/src/router/routes/modules/abp.ts | 28 ++ .../src/views/saas/editions/index.vue | 15 + .../app-antd/src/views/saas/tenants/index.vue | 15 + .../vben5/packages/@abp/core/src/types/dto.ts | 55 ++-- .../packages/@abp/identity/src/types/users.ts | 8 +- .../permissions/PermissionDefinitionTable.vue | 2 +- .../request/src/hooks/useWrapperResult.ts | 10 +- apps/vben5/packages/@abp/saas/package.json | 45 +++ .../vben5/packages/@abp/saas/src/api/index.ts | 2 + .../@abp/saas/src/api/useEditionsApi.ts | 84 +++++ .../@abp/saas/src/api/useTenantsApi.ts | 154 +++++++++ .../src/components/editions/EditionModal.vue | 102 ++++++ .../src/components/editions/EditionTable.vue | 215 ++++++++++++ .../@abp/saas/src/components/index.ts | 2 + .../tenants/ConnectionStringModal.vue | 76 +++++ .../tenants/ConnectionStringTable.vue | 114 +++++++ .../tenants/ConnectionStringsModal.vue | 71 ++++ .../src/components/tenants/TenantModal.vue | 305 ++++++++++++++++++ .../src/components/tenants/TenantTable.vue | 258 +++++++++++++++ .../packages/@abp/saas/src/constants/index.ts | 1 + .../@abp/saas/src/constants/permissions.ts | 28 ++ apps/vben5/packages/@abp/saas/src/index.ts | 4 + .../packages/@abp/saas/src/types/editions.ts | 34 ++ .../packages/@abp/saas/src/types/index.ts | 2 + .../packages/@abp/saas/src/types/tenants.ts | 68 ++++ apps/vben5/packages/@abp/saas/tsconfig.json | 6 + 29 files changed, 1682 insertions(+), 33 deletions(-) create mode 100644 apps/vben5/apps/app-antd/src/views/saas/editions/index.vue create mode 100644 apps/vben5/apps/app-antd/src/views/saas/tenants/index.vue create mode 100644 apps/vben5/packages/@abp/saas/package.json create mode 100644 apps/vben5/packages/@abp/saas/src/api/index.ts create mode 100644 apps/vben5/packages/@abp/saas/src/api/useEditionsApi.ts create mode 100644 apps/vben5/packages/@abp/saas/src/api/useTenantsApi.ts create mode 100644 apps/vben5/packages/@abp/saas/src/components/editions/EditionModal.vue create mode 100644 apps/vben5/packages/@abp/saas/src/components/editions/EditionTable.vue create mode 100644 apps/vben5/packages/@abp/saas/src/components/index.ts create mode 100644 apps/vben5/packages/@abp/saas/src/components/tenants/ConnectionStringModal.vue create mode 100644 apps/vben5/packages/@abp/saas/src/components/tenants/ConnectionStringTable.vue create mode 100644 apps/vben5/packages/@abp/saas/src/components/tenants/ConnectionStringsModal.vue create mode 100644 apps/vben5/packages/@abp/saas/src/components/tenants/TenantModal.vue create mode 100644 apps/vben5/packages/@abp/saas/src/components/tenants/TenantTable.vue create mode 100644 apps/vben5/packages/@abp/saas/src/constants/index.ts create mode 100644 apps/vben5/packages/@abp/saas/src/constants/permissions.ts create mode 100644 apps/vben5/packages/@abp/saas/src/index.ts create mode 100644 apps/vben5/packages/@abp/saas/src/types/editions.ts create mode 100644 apps/vben5/packages/@abp/saas/src/types/index.ts create mode 100644 apps/vben5/packages/@abp/saas/src/types/tenants.ts create mode 100644 apps/vben5/packages/@abp/saas/tsconfig.json diff --git a/apps/vben5/apps/app-antd/package.json b/apps/vben5/apps/app-antd/package.json index e6a986ea1..be1116864 100644 --- a/apps/vben5/apps/app-antd/package.json +++ b/apps/vben5/apps/app-antd/package.json @@ -35,6 +35,7 @@ "@abp/permissions": "workspace:*", "@abp/platform": "workspace:*", "@abp/request": "workspace:*", + "@abp/saas": "workspace:*", "@abp/settings": "workspace:*", "@abp/ui": "workspace:*", "@vben/access": "workspace:*", 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 ad3c91b93..16d8c78f7 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 @@ -76,5 +76,10 @@ "email": "Email Messages", "sms": "Sms Messages" } + }, + "saas": { + "title": "Saas", + "editions": "Editions", + "tenants": "Tenants" } } 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 bcf96d391..241a6a2de 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 @@ -76,5 +76,10 @@ "email": "邮件消息", "sms": "短信消息" } + }, + "saas": { + "title": "Saas", + "editions": "版本管理", + "tenants": "租户管理" } } 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 a59ca4255..f737035c3 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 @@ -177,6 +177,34 @@ const routes: RouteRecordRaw[] = [ }, ], }, + { + meta: { + title: $t('abp.saas.title'), + icon: 'ant-design:cloud-server-outlined', + }, + name: 'Saas', + path: '/saas', + children: [ + { + meta: { + title: $t('abp.saas.editions'), + icon: 'icon-park-outline:multi-rectangle', + }, + name: 'SaasEditions', + path: '/saas/editions', + component: () => import('#/views/saas/editions/index.vue'), + }, + { + meta: { + title: $t('abp.saas.tenants'), + icon: 'arcticons:tenantcloud-pro', + }, + name: 'SaasTenants', + path: '/saas/tenants', + component: () => import('#/views/saas/tenants/index.vue'), + }, + ], + }, { meta: { title: $t('abp.openiddict.title'), diff --git a/apps/vben5/apps/app-antd/src/views/saas/editions/index.vue b/apps/vben5/apps/app-antd/src/views/saas/editions/index.vue new file mode 100644 index 000000000..2e186f892 --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/saas/editions/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/vben5/apps/app-antd/src/views/saas/tenants/index.vue b/apps/vben5/apps/app-antd/src/views/saas/tenants/index.vue new file mode 100644 index 000000000..0b1ed7445 --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/saas/tenants/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/vben5/packages/@abp/core/src/types/dto.ts b/apps/vben5/packages/@abp/core/src/types/dto.ts index 41d17932f..7adcb9e67 100644 --- a/apps/vben5/packages/@abp/core/src/types/dto.ts +++ b/apps/vben5/packages/@abp/core/src/types/dto.ts @@ -1,15 +1,15 @@ -import { - type Clock, - type CurrentCulture, - type CurrentTenant, - type CurrentUser, - type Dictionary, - type ExtraPropertyDictionary, - type IHasExtraProperties, - type LanguageInfo, - type MultiTenancyInfo, - type NameValue, - type TimeZone, +import type { + Clock, + CurrentCulture, + CurrentTenant, + CurrentUser, + Dictionary, + ExtraPropertyDictionary, + IHasExtraProperties, + LanguageInfo, + MultiTenancyInfo, + NameValue, + TimeZone, } from './global'; /** 包装器数据传输对象 */ interface WrapResult { @@ -47,6 +47,7 @@ interface RemoteServiceErrorInfo { } /** 扩展属性数据传输对象 */ interface ExtensibleObject { + [key: string]: any; /** 扩展属性 */ extraProperties: ExtraPropertyDictionary; } @@ -102,7 +103,7 @@ interface FullAuditedEntityWithUserDto deleter: TUserDto; } /** 实体扩展属性数据传输对象 */ -interface ExtensibleEntityDto extends ExtensibleObject, EntityDto {} +interface ExtensibleEntityDto extends EntityDto, ExtensibleObject {} /** 实体新增扩展属性数据传输对象 */ interface ExtensibleCreationAuditedEntityDto extends CreationAuditedEntityDto, @@ -121,12 +122,12 @@ interface ExtensibleAuditedEntityWithUserDto ExtensibleEntityDto {} /** 实体审计全属性扩展数据传输对象 */ interface ExtensibleFullAuditedEntityDto - extends FullAuditedEntityDto, - ExtensibleEntityDto {} + extends ExtensibleEntityDto, + FullAuditedEntityDto {} /** 实体审计用户全属性扩展数据传输对象 */ interface ExtensibleFullAuditedEntityWithUserDto - extends FullAuditedEntityWithUserDto, - ExtensibleEntityDto {} + extends ExtensibleEntityDto, + FullAuditedEntityWithUserDto {} /** 最大请求数据传输对象 */ interface LimitedResultRequestDto { /** 最大返回数据大小 */ @@ -134,8 +135,8 @@ interface LimitedResultRequestDto { } /** 最大请求扩展数据传输对象 */ interface ExtensibleLimitedResultRequestDto - extends LimitedResultRequestDto, - ExtensibleObject {} + extends ExtensibleObject, + LimitedResultRequestDto {} /** 排序请求数据传输对象 */ interface SortedResultRequest { /** 排序字段 @@ -160,8 +161,8 @@ interface PagedAndSortedResultRequestDto SortedResultRequest {} /** 分页排序请求扩展数据传输对象 */ interface ExtensiblePagedAndSortedResultRequestDto - extends PagedAndSortedResultRequestDto, - ExtensibleObject {} + extends ExtensibleObject, + PagedAndSortedResultRequestDto {} /** 列表数据传输对象 */ interface ListResultDto { /** 返回项目列表 */ @@ -169,8 +170,8 @@ interface ListResultDto { } /** 列表扩展数据传输对象 */ interface ExtensibleListResultDto - extends ListResultDto, - ExtensibleObject {} + extends ExtensibleObject, + ListResultDto {} /** 分页列表数据传输对象 */ interface PagedResultDto extends ListResultDto { /** 符合条件的最大数量 */ @@ -178,12 +179,12 @@ interface PagedResultDto extends ListResultDto { } /** 分页列表扩展数据传输对象 */ interface ExtensiblePagedResultDto - extends PagedResultDto, - ExtensibleObject {} + extends ExtensibleObject, + PagedResultDto {} /** 分页列表扩展数据传输对象 */ interface ExtensiblePagedResultRequestDto - extends PagedResultRequestDto, - ExtensibleObject {} + extends ExtensibleObject, + PagedResultRequestDto {} /** 应用程序本地化资源数据传输对象 */ interface ApplicationLocalizationResourceDto { /** 继承资源名称列表 */ diff --git a/apps/vben5/packages/@abp/identity/src/types/users.ts b/apps/vben5/packages/@abp/identity/src/types/users.ts index b0d821947..384666225 100644 --- a/apps/vben5/packages/@abp/identity/src/types/users.ts +++ b/apps/vben5/packages/@abp/identity/src/types/users.ts @@ -45,9 +45,9 @@ interface IdentityUserOrganizationUnitUpdateDto { /** 用户实体数据传输对象 */ interface IdentityUserDto extends FullAuditedEntityDto, - IUser, IHasConcurrencyStamp, - IHasExtraProperties { + IHasExtraProperties, + IUser { [key: string]: any; /** 邮箱已验证 */ emailConfirmed: boolean; @@ -95,8 +95,8 @@ interface UserLookupCountInput { } interface UserLookupSearchInput - extends UserLookupCountInput, - PagedAndSortedResultRequestDto {} + extends PagedAndSortedResultRequestDto, + UserLookupCountInput {} export type { ChangeMyPasswordInput, diff --git a/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue b/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue index b6e38d8c0..334fa4a40 100644 --- a/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue +++ b/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue @@ -1,6 +1,7 @@ + + + + diff --git a/apps/vben5/packages/@abp/saas/src/components/editions/EditionTable.vue b/apps/vben5/packages/@abp/saas/src/components/editions/EditionTable.vue new file mode 100644 index 000000000..c6930a901 --- /dev/null +++ b/apps/vben5/packages/@abp/saas/src/components/editions/EditionTable.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/apps/vben5/packages/@abp/saas/src/components/index.ts b/apps/vben5/packages/@abp/saas/src/components/index.ts new file mode 100644 index 000000000..88de3efdf --- /dev/null +++ b/apps/vben5/packages/@abp/saas/src/components/index.ts @@ -0,0 +1,2 @@ +export { default as EditionTable } from './editions/EditionTable.vue'; +export { default as TenantTable } from './tenants/TenantTable.vue'; diff --git a/apps/vben5/packages/@abp/saas/src/components/tenants/ConnectionStringModal.vue b/apps/vben5/packages/@abp/saas/src/components/tenants/ConnectionStringModal.vue new file mode 100644 index 000000000..ae17f1c05 --- /dev/null +++ b/apps/vben5/packages/@abp/saas/src/components/tenants/ConnectionStringModal.vue @@ -0,0 +1,76 @@ + + +