From b964b54fc6c3fecf4730913d0555bf10b418c321 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=8C=97=E5=B1=8B?= <649947447@qq.com>
Date: Wed, 25 Feb 2026 09:56:35 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E5=9F=BA=E7=A1=80=E6=A1=86?=
=?UTF-8?q?=E6=9E=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitattributes | 2 +
.gitignore | 33 ++
.mvn/wrapper/maven-wrapper.properties | 3 +
api-service/pom.xml | 85 +++++
.../com/apiservice/annotation/PassToken.java | 22 ++
.../apiservice/annotation/SearchParam.java | 31 ++
.../com/apiservice/config/BatchConfig.java | 85 +++++
.../com/apiservice/config/ExecutorConfig.java | 21 ++
.../config/FastJson2JsonRedisSerializer.java | 57 ++++
.../apiservice/config/MybatisPlusConfig.java | 83 +++++
.../com/apiservice/config/RedisConfig.java | 41 +++
.../com/apiservice/config/SecurityConfig.java | 36 +++
.../com/apiservice/config/SysConfig.java | 113 +++++++
.../apiservice/constants/LoginConstants.java | 34 ++
.../oailab/com/apiservice/enums/BaseEnum.java | 22 ++
.../enums/account/AccountRoleEnum.java | 58 ++++
.../enums/account/AccountStatusEnum.java | 60 ++++
.../apiservice/enums/common/EnumOutput.java | 31 ++
.../enums/extensions/StorageTypeEnum.java | 57 ++++
.../enums/license/LicenseDeploymentType.java | 8 +
.../apiservice/enums/mail/MailTypeEnum.java | 56 ++++
.../enums/provider/ProviderQuotaTypeEnum.java | 60 ++++
.../enums/provider/ProviderTypeEnum.java | 69 ++++
.../apiservice/enums/sys/ErrorCodeEnum.java | 122 ++++++++
.../enums/sys/SearchConditionEnum.java | 59 ++++
.../enums/sys/TenantStatusEnum.java | 60 ++++
.../enums/sys/WorkspaceRoleEnum.java | 70 +++++
.../enums/tools/VariableKeyEnum.java | 60 ++++
.../enums/web/CustomizeTokenStrategyEnum.java | 62 ++++
.../apiservice/enums/web/FromSourceEnum.java | 58 ++++
.../apiservice/enums/web/SiteStatusEnum.java | 58 ++++
.../enums/workspace/AppModeEnum.java | 70 +++++
.../enums/workspace/AppsStatusEnum.java | 60 ++++
.../enums/workspace/ChatRoleEnum.java | 61 ++++
.../enums/workspace/CommonStatusEnum.java | 70 +++++
.../enums/workspace/CurrencyEnums.java | 59 ++++
.../CustomConfigurationStatusEnum.java | 60 ++++
.../enums/workspace/OriginModelTypeEnum.java | 64 ++++
.../enums/workspace/RetriveTypeEnum.java | 59 ++++
.../enums/workspace/SitesTypeEnum.java | 54 ++++
.../enums/workspace/TagsTypeEnum.java | 59 ++++
.../enums/workspace/TransferMethodEnum.java | 58 ++++
.../exception/AccessDeniedException.java | 8 +
.../apiservice/exception/BizException.java | 47 +++
.../apiservice/mybatis/entity/BaseEntity.java | 61 ++++
.../mybatis/entity/OrderEntity.java | 23 ++
.../mybatis/entity/sys/SystemParam.java | 35 +++
.../apiservice/mybatis/entity/sys/Tenant.java | 33 ++
.../mybatis/entity/sys/TenantAccount.java | 56 ++++
.../mybatis/entity/sys/TenantWorkspace.java | 42 +++
.../entity/sys/TenantWorkspaceJoin.java | 38 +++
.../mybatis/entity/workspace/EndUsers.java | 59 ++++
.../workspace/ProviderModelSettings.java | 58 ++++
.../entity/workspace/ProviderModels.java | 55 ++++
.../mybatis/entity/workspace/Providers.java | 76 +++++
.../mybatis/entity/workspace/Sites.java | 116 +++++++
.../mybatis/entity/workspace/TagBindings.java | 41 +++
.../mybatis/entity/workspace/Tags.java | 47 +++
.../entity/workspace/TenantDefaultModels.java | 48 +++
.../TenantPreferredModelProviders.java | 40 +++
.../mybatis/entity/workspace/UploadFiles.java | 109 +++++++
.../mybatis/mapper/sys/SystemParamMapper.java | 15 +
.../mapper/sys/TenantAccountMapper.java | 15 +
.../mybatis/mapper/sys/TenantMapper.java | 15 +
.../mapper/sys/TenantWorkspaceJoinMapper.java | 15 +
.../mapper/sys/TenantWorkspaceMapper.java | 15 +
.../mapper/workspace/EndUsersMapper.java | 16 +
.../ProviderModelSettingsMapper.java | 15 +
.../workspace/ProviderModelsMapper.java | 15 +
.../mapper/workspace/ProvidersMapper.java | 15 +
.../mybatis/mapper/workspace/SitesMapper.java | 15 +
.../mapper/workspace/TagBindingsMapper.java | 15 +
.../mybatis/mapper/workspace/TagsMapper.java | 15 +
.../workspace/TenantDefaultModelsMapper.java | 15 +
.../TenantPreferredModelProvidersMapper.java | 15 +
.../mapper/workspace/UploadFilesMapper.java | 15 +
.../impl/sys/SystemParamServiceImpl.java | 51 +++
.../impl/sys/TenantAccountServiceImpl.java | 186 +++++++++++
.../service/impl/sys/TenantServiceImpl.java | 24 ++
.../sys/TenantWorkspaceJoinServiceImpl.java | 60 ++++
.../impl/sys/TenantWorkspaceServiceImpl.java | 101 ++++++
.../impl/workspace/EndUsersServiceImpl.java | 28 ++
.../impl/workspace/SitesServiceImpl.java | 78 +++++
.../workspace/TagBindingsServiceImpl.java | 20 ++
.../impl/workspace/TagsServiceImpl.java | 19 ++
.../TenantDefaultModelsServiceImpl.java | 85 +++++
...antPreferredModelProvidersServiceImpl.java | 31 ++
.../UploadFilesServiceServiceImpl.java | 36 +++
.../service/sys/SystemParamService.java | 21 ++
.../service/sys/TenantAccountService.java | 42 +++
.../mybatis/service/sys/TenantService.java | 15 +
.../sys/TenantWorkspaceJoinService.java | 20 ++
.../service/sys/TenantWorkspaceService.java | 25 ++
.../service/workspace/EndUsersService.java | 16 +
.../service/workspace/SitesService.java | 28 ++
.../service/workspace/TagBindingsService.java | 16 +
.../service/workspace/TagsService.java | 15 +
.../workspace/TenantDefaultModelsService.java | 21 ++
.../TenantPreferredModelProvidersService.java | 18 ++
.../service/workspace/UploadFilesService.java | 19 ++
.../request/common/sys/SystemParamInfo.java | 29 ++
.../request/input/api/SignOnApiInput.java | 27 ++
.../request/input/sys/CommonDataInput.java | 27 ++
.../request/input/sys/LoginInput.java | 26 ++
.../request/input/sys/ModifyPwInput.java | 34 ++
.../request/input/sys/PageDataInput.java | 43 +++
.../request/input/sys/RecoverPwInput.java | 24 ++
.../request/input/sys/RegisterInput.java | 30 ++
.../request/input/sys/ResetPwInput.java | 22 ++
.../request/input/sys/SendMailCodeInput.java | 24 ++
.../input/sys/SystemParamsUpdateInput.java | 23 ++
.../input/sys/TenantAccountUpdateInput.java | 26 ++
.../request/input/sys/VaildInput.java | 23 ++
.../workspace/CurrentWorkspaceInput.java | 21 ++
.../workspace/TenantAccountAddInput.java | 21 ++
.../workspace/TenantDefaultModelsInput.java | 30 ++
.../TenantDefaultModelsSettingInput.java | 23 ++
.../workspace/TenantWorkspaceCreateInput.java | 18 ++
.../workspace/TenantWorkspaceUpdateInput.java | 22 ++
.../input/workspace/UpdateSiteInput.java | 34 ++
.../workspace/UploadFilesCreateInput.java | 22 ++
.../workspace/UploadFilesUpdateInput.java | 23 ++
.../WorkspaceInviteStartDataInput.java | 30 ++
.../workspace/WorkspaceJoinInviteInput.java | 18 ++
.../apiservice/request/output/ApiOutput.java | 98 ++++++
.../request/output/api/SignOnApiOutput.java | 19 ++
.../api/SinglePointGetUserInfoApiOutput.java | 29 ++
.../request/output/sys/LoginOutput.java | 44 +++
.../request/output/sys/TenantInfoOutput.java | 33 ++
.../output/web/passport/PassportOutput.java | 20 ++
.../workspace/WorkspaceInviteDataOutput.java | 23 ++
.../output/workspace/WorkspaceJoinOutput.java | 29 ++
.../service/PassportBusinessService.java | 52 +++
api-start/config/application-local.yml | 105 +++++++
api-start/config/application.yml | 38 +++
api-start/config/logback-spring.xml | 106 +++++++
api-start/pom.xml | 72 +++++
.../com/apistart/ApiStartApplication.java | 26 ++
.../com/apistart/config/CorsConfig.java | 27 ++
.../com/apistart/config/WebMvcConf.java | 63 ++++
.../apistart/controller/BaseController.java | 127 ++++++++
.../interceptor/SysTokenInterceptor.java | 110 +++++++
.../interceptor/WebTokenInterceptor.java | 111 +++++++
mvnw | 295 ++++++++++++++++++
mvnw.cmd | 189 +++++++++++
pom.xml | 200 ++++++++++++
146 files changed, 6919 insertions(+)
create mode 100644 .gitattributes
create mode 100644 .gitignore
create mode 100644 .mvn/wrapper/maven-wrapper.properties
create mode 100644 api-service/pom.xml
create mode 100644 api-service/src/main/java/oailab/com/apiservice/annotation/PassToken.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/annotation/SearchParam.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/config/BatchConfig.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/config/ExecutorConfig.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/config/FastJson2JsonRedisSerializer.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/config/MybatisPlusConfig.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/config/RedisConfig.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/config/SecurityConfig.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/config/SysConfig.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/constants/LoginConstants.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/BaseEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/account/AccountRoleEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/account/AccountStatusEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/common/EnumOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/extensions/StorageTypeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/license/LicenseDeploymentType.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/mail/MailTypeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/provider/ProviderQuotaTypeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/provider/ProviderTypeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/sys/ErrorCodeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/sys/SearchConditionEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/sys/TenantStatusEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/sys/WorkspaceRoleEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/tools/VariableKeyEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/web/CustomizeTokenStrategyEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/web/FromSourceEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/web/SiteStatusEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/AppModeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/AppsStatusEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/ChatRoleEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/CommonStatusEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/CurrencyEnums.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/CustomConfigurationStatusEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/OriginModelTypeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/RetriveTypeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/SitesTypeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/TagsTypeEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/enums/workspace/TransferMethodEnum.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/exception/AccessDeniedException.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/exception/BizException.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/BaseEntity.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/OrderEntity.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/sys/SystemParam.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/sys/Tenant.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/sys/TenantAccount.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/sys/TenantWorkspace.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/sys/TenantWorkspaceJoin.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/EndUsers.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/ProviderModelSettings.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/ProviderModels.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/Providers.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/Sites.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/TagBindings.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/Tags.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/TenantDefaultModels.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/TenantPreferredModelProviders.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/entity/workspace/UploadFiles.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/sys/SystemParamMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/sys/TenantAccountMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/sys/TenantMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/sys/TenantWorkspaceJoinMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/sys/TenantWorkspaceMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/EndUsersMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/ProviderModelSettingsMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/ProviderModelsMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/ProvidersMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/SitesMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/TagBindingsMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/TagsMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/TenantDefaultModelsMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/TenantPreferredModelProvidersMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/mapper/workspace/UploadFilesMapper.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/sys/SystemParamServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/sys/TenantAccountServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/sys/TenantServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/sys/TenantWorkspaceJoinServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/sys/TenantWorkspaceServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/workspace/EndUsersServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/workspace/SitesServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/workspace/TagBindingsServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/workspace/TagsServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/workspace/TenantDefaultModelsServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/workspace/TenantPreferredModelProvidersServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/impl/workspace/UploadFilesServiceServiceImpl.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/sys/SystemParamService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/sys/TenantAccountService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/sys/TenantService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/sys/TenantWorkspaceJoinService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/sys/TenantWorkspaceService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/workspace/EndUsersService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/workspace/SitesService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/workspace/TagBindingsService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/workspace/TagsService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/workspace/TenantDefaultModelsService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/workspace/TenantPreferredModelProvidersService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/mybatis/service/workspace/UploadFilesService.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/common/sys/SystemParamInfo.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/api/SignOnApiInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/CommonDataInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/LoginInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/ModifyPwInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/PageDataInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/RecoverPwInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/RegisterInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/ResetPwInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/SendMailCodeInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/SystemParamsUpdateInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/TenantAccountUpdateInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/sys/VaildInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/CurrentWorkspaceInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/TenantAccountAddInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/TenantDefaultModelsInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/TenantDefaultModelsSettingInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/TenantWorkspaceCreateInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/TenantWorkspaceUpdateInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/UpdateSiteInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/UploadFilesCreateInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/UploadFilesUpdateInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/WorkspaceInviteStartDataInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/input/workspace/WorkspaceJoinInviteInput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/output/ApiOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/output/api/SignOnApiOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/output/api/SinglePointGetUserInfoApiOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/output/sys/LoginOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/output/sys/TenantInfoOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/output/web/passport/PassportOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/output/workspace/WorkspaceInviteDataOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/request/output/workspace/WorkspaceJoinOutput.java
create mode 100644 api-service/src/main/java/oailab/com/apiservice/service/PassportBusinessService.java
create mode 100644 api-start/config/application-local.yml
create mode 100644 api-start/config/application.yml
create mode 100644 api-start/config/logback-spring.xml
create mode 100644 api-start/pom.xml
create mode 100644 api-start/src/main/java/oailab/com/apistart/ApiStartApplication.java
create mode 100644 api-start/src/main/java/oailab/com/apistart/config/CorsConfig.java
create mode 100644 api-start/src/main/java/oailab/com/apistart/config/WebMvcConf.java
create mode 100644 api-start/src/main/java/oailab/com/apistart/controller/BaseController.java
create mode 100644 api-start/src/main/java/oailab/com/apistart/interceptor/SysTokenInterceptor.java
create mode 100644 api-start/src/main/java/oailab/com/apistart/interceptor/WebTokenInterceptor.java
create mode 100644 mvnw
create mode 100644 mvnw.cmd
create mode 100644 pom.xml
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..3b41682
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+/mvnw text eol=lf
+*.cmd text eol=crlf
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..667aaef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..8dea6c2
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,3 @@
+wrapperVersion=3.3.4
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
diff --git a/api-service/pom.xml b/api-service/pom.xml
new file mode 100644
index 0000000..1e5f3a6
--- /dev/null
+++ b/api-service/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ oailab.com
+ ai-base
+ ${revision}
+ ../pom.xml
+
+
+ api-service
+ ${revision}
+ api-service
+ api-service
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 21
+ UTF-8
+ UTF-8
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+
+ org.springframework.boot
+ spring-boot-starter-batch
+
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 21
+ 21
+ UTF-8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/api-service/src/main/java/oailab/com/apiservice/annotation/PassToken.java b/api-service/src/main/java/oailab/com/apiservice/annotation/PassToken.java
new file mode 100644
index 0000000..a010514
--- /dev/null
+++ b/api-service/src/main/java/oailab/com/apiservice/annotation/PassToken.java
@@ -0,0 +1,22 @@
+package oailab.com.apiservice.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * skip login validation annotation
+ *
+ * @author Benny Deng
+ * @see Benny Deng
+ * @since 6/17/24 PM11:19
+ * @version 1.0
+ **/
+@Target({ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PassToken {
+
+ boolean required() default true;
+
+}
diff --git a/api-service/src/main/java/oailab/com/apiservice/annotation/SearchParam.java b/api-service/src/main/java/oailab/com/apiservice/annotation/SearchParam.java
new file mode 100644
index 0000000..a152628
--- /dev/null
+++ b/api-service/src/main/java/oailab/com/apiservice/annotation/SearchParam.java
@@ -0,0 +1,31 @@
+package oailab.com.apiservice.annotation;
+
+
+import oailab.com.apiservice.enums.sys.SearchConditionEnum;
+
+import java.lang.annotation.*;
+
+/**
+ * search parameter annotation
+ *
+ * @author Benny Deng
+ * @see Benny Deng
+ * @since 6/17/24 PM11:19
+ * @version 1.0
+ **/
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface SearchParam {
+
+ /**
+ * 字段名称
+ */
+ String[] name();
+
+ /**
+ * 执行条件
+ */
+ SearchConditionEnum[] condition();
+
+}
diff --git a/api-service/src/main/java/oailab/com/apiservice/config/BatchConfig.java b/api-service/src/main/java/oailab/com/apiservice/config/BatchConfig.java
new file mode 100644
index 0000000..0614f6c
--- /dev/null
+++ b/api-service/src/main/java/oailab/com/apiservice/config/BatchConfig.java
@@ -0,0 +1,85 @@
+package oailab.com.apiservice.config;
+
+
+import jakarta.validation.constraints.NotNull;
+import org.springframework.batch.core.configuration.support.DefaultBatchConfiguration;
+import org.springframework.batch.core.repository.JobRepository;
+import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
+import org.springframework.batch.support.DatabaseType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.PlatformTransactionManager;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+
+/**
+ * Spring Batch configuration for KingbaseES support
+ *
+ * @author Benny Deng
+ * @since 11/12/25
+ * @version 1.0
+ */
+@Configuration
+public class BatchConfig extends DefaultBatchConfiguration {
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Autowired
+ private PlatformTransactionManager transactionManager;
+
+ /**
+ * Override job repository creation to support KingbaseES
+ */
+ @Bean
+ @Override
+ public JobRepository jobRepository() {
+ JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
+ factory.setDataSource(dataSource);
+ factory.setTransactionManager(transactionManager);
+ factory.setDatabaseType(getDatabaseType());
+ factory.setIsolationLevelForCreate("ISOLATION_DEFAULT");
+ factory.setTablePrefix("BATCH_");
+ factory.setMaxVarCharLength(1000);
+ try {
+ factory.afterPropertiesSet();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ try {
+ return factory.getObject();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Get database type with KingbaseES support
+ */
+ @NotNull
+ public String getDatabaseType() {
+ try (Connection connection = dataSource.getConnection()) {
+ DatabaseMetaData metaData = connection.getMetaData();
+ String databaseProductName = metaData.getDatabaseProductName();
+
+ if (databaseProductName.toLowerCase().contains("mysql")) {
+ return DatabaseType.MYSQL.getProductName();
+ } else if (databaseProductName.toLowerCase().contains("kingbase")) {
+ // Use MySQL dialect for KingbaseES since they are compatible
+ return DatabaseType.MYSQL.getProductName();
+ } else if (databaseProductName.toLowerCase().contains("postgresql")) {
+ return DatabaseType.POSTGRES.getProductName();
+ } else {
+ // Default to MySQL
+ return DatabaseType.MYSQL.getProductName();
+ }
+ } catch (SQLException e) {
+ // Default to MySQL on error
+ return DatabaseType.MYSQL.getProductName();
+ }
+ }
+}
diff --git a/api-service/src/main/java/oailab/com/apiservice/config/ExecutorConfig.java b/api-service/src/main/java/oailab/com/apiservice/config/ExecutorConfig.java
new file mode 100644
index 0000000..0044fe3
--- /dev/null
+++ b/api-service/src/main/java/oailab/com/apiservice/config/ExecutorConfig.java
@@ -0,0 +1,21 @@
+package oailab.com.apiservice.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * @author Benny Deng
+ * @version 1.0
+ * @see Benny Deng
+ * @since 10/22/24
+ **/
+@Configuration
+public class ExecutorConfig {
+ @Bean
+ public ExecutorService executorService() {
+ return Executors.newFixedThreadPool(10);
+ }
+}
diff --git a/api-service/src/main/java/oailab/com/apiservice/config/FastJson2JsonRedisSerializer.java b/api-service/src/main/java/oailab/com/apiservice/config/FastJson2JsonRedisSerializer.java
new file mode 100644
index 0000000..07eb07b
--- /dev/null
+++ b/api-service/src/main/java/oailab/com/apiservice/config/FastJson2JsonRedisSerializer.java
@@ -0,0 +1,57 @@
+package oailab.com.apiservice.config;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONWriter;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Redis serialization by fastjson
+ *
+ * @author Benny Deng
+ * @version 1.0
+ * @see Benny Deng
+ * @since 6/17/24 PM11:19
+ **/
+public class FastJson2JsonRedisSerializer implements RedisSerializer {
+
+ public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
+
+ private final Class clazz;
+
+ public FastJson2JsonRedisSerializer(Class clazz) {
+ super();
+ this.clazz = clazz;
+ }
+
+ /**
+ * 序列化
+ */
+ @Override
+ public byte[] serialize(T t) throws SerializationException {
+ if (null == t) {
+ return new byte[0];
+ }
+
+ return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET);
+ }
+
+ /**
+ * 反序列化
+ */
+ @Override
+ public T deserialize(byte[] bytes) throws SerializationException {
+ if (null == bytes || bytes.length == 0) {
+ return null;
+ }
+ String str = new String(bytes, DEFAULT_CHARSET);
+ try {
+ return JSON.parseObject(str, clazz);
+ } catch (Exception e) {
+ return (T) str;
+ }
+ }
+}
diff --git a/api-service/src/main/java/oailab/com/apiservice/config/MybatisPlusConfig.java b/api-service/src/main/java/oailab/com/apiservice/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..545ea2a
--- /dev/null
+++ b/api-service/src/main/java/oailab/com/apiservice/config/MybatisPlusConfig.java
@@ -0,0 +1,83 @@
+package oailab.com.apiservice.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.apache.ibatis.mapping.DatabaseIdProvider;
+import org.apache.ibatis.mapping.VendorDatabaseIdProvider;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.util.Properties;
+
+/**
+ * MyBatis Plus configuration
+ *
+ * @author Benny Deng
+ * @see Benny Deng
+ * @since 6/17/24 PM11:19
+ * @version 1.0
+ **/
+@Configuration
+@EnableTransactionManagement
+@MapperScan(basePackages = "oailab.com.apiservice.mybatis.mapper")
+public class MybatisPlusConfig {
+
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(DataSource dataSource) {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ // 乐观锁插件
+ interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
+ // 分页插件,根据数据库类型自动适配
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(getDbType(dataSource)));
+ // 防全表更新与删除插件
+ interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
+ return interceptor;
+ }
+
+ /**
+ * 根据数据源判断数据库类型
+ * @param dataSource 数据源
+ * @return 数据库类型
+ */
+ private DbType getDbType(DataSource dataSource) {
+ try (Connection connection = dataSource.getConnection()) {
+ DatabaseMetaData metaData = connection.getMetaData();
+ String databaseProductName = metaData.getDatabaseProductName();
+
+ if (databaseProductName.toLowerCase().contains("mysql")) {
+ return DbType.MYSQL;
+ } else if (databaseProductName.toLowerCase().contains("kingbase")) {
+ return DbType.KINGBASE_ES;
+ } else {
+ // 默认使用MySQL方言
+ return DbType.MYSQL;
+ }
+ } catch (SQLException e) {
+ // 默认使用MySQL方言
+ return DbType.MYSQL;
+ }
+ }
+
+ /**
+ * 配置databaseIdProvider以支持多数据库
+ * @return DatabaseIdProvider
+ */
+ @Bean
+ public DatabaseIdProvider databaseIdProvider() {
+ VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
+ Properties properties = new Properties();
+ properties.setProperty("MySQL", "mysql");
+ properties.setProperty("KingbaseES", "kingbase");
+ databaseIdProvider.setProperties(properties);
+ return databaseIdProvider;
+ }
+}
diff --git a/api-service/src/main/java/oailab/com/apiservice/config/RedisConfig.java b/api-service/src/main/java/oailab/com/apiservice/config/RedisConfig.java
new file mode 100644
index 0000000..a72e5a7
--- /dev/null
+++ b/api-service/src/main/java/oailab/com/apiservice/config/RedisConfig.java
@@ -0,0 +1,41 @@
+package oailab.com.apiservice.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * Redis configuration
+ *
+ * @author Benny Deng
+ * @version 1.0
+ * @see Benny Deng
+ * @since 6/17/24 PM11:19
+ **/
+@Configuration
+public class RedisConfig {
+
+ @Bean
+ public RedisTemplate