datai/datai-scenes/datai-scene-salesforce/docs/reference-code/datai-salesforce-tooling-module.md

691 lines
26 KiB
Markdown
Raw Normal View History

# datai-salesforce-tooling 模块详细文档
## 模块概述
`datai-salesforce-tooling` 是 Datai 项目中专门用于管理 Salesforce Tooling API 相关功能的模块。该模块提供了对 Salesforce Tooling API 的连接管理、元数据操作、SOQL 查询、Apex 日志、测试管理、代码覆盖率等功能的完整支持。
**模块路径**: `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling`
**创建日期**: 2026-02-04
**版本**: 1.0.0
**Java 版本**: 22
---
## 技术栈
### 核心依赖
| 依赖 | 版本 | 说明 |
|------|------|------|
| datai-file-common | 1.0.0 | 文件通用模块 |
| datai-salesforce-auth | - | Salesforce 认证模块 |
| javapoet | 1.13.0 | Java 代码生成库 |
| salesforce-tooling | 0.0.1 | Salesforce Tooling 工具包(本地 JAR |
### 技术框架
- **Spring Boot**: 应用框架
- **MyBatis**: ORM 框架
- **Swagger/OpenAPI**: API 文档
- **Spring Security**: 安全认证
- **Lombok**: 简化 Java 代码
- **JavaPoet**: 动态代码生成
---
## 模块架构
### 分层架构
```
datai-salesforce-tooling/
├── controller/ # 控制器层16个
├── service/ # 服务层
│ ├── I*Service.java # 服务接口16个
│ └── impl/ # 服务实现16个
├── mapper/ # 数据访问层15个
├── model/ # 数据模型层
│ ├── domain/ # 领域模型15个
│ ├── dto/ # 数据传输对象15个
│ └── vo/ # 视图对象17个
├── enums/ # 枚举类1个
├── factory/ # 工厂类1个
└── resources/
├── mapper/tooling/ # MyBatis XML 映射文件14个
└── lib/tooling.jar # Salesforce Tooling 工具包
```
---
## 功能模块
### 1. Tooling API 连接管理
**功能描述**: 管理 Salesforce Tooling API 的连接,包括连接创建、缓存清除、连接测试、调用选项设置、调试头部设置等。
**相关类**:
- Controller: [ToolingConnectionController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\ToolingConnectionController.java)
- Service: [IToolingConnectionService.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\service\IToolingConnectionService.java)
- Factory: [ToolingConnectionFactory.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\factory\ToolingConnectionFactory.java)
- Enum: [ToolingConnectionErrorCode.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\enums\ToolingConnectionErrorCode.java)
**API 端点**:
- `GET /salesforce/tooling/connection/get` - 获取 Tooling API 连接
- `DELETE /salesforce/tooling/connection/clear` - 清除连接缓存
- `GET /salesforce/tooling/connection/test` - 测试连接
- `POST /salesforce/tooling/connection/call-options` - 设置调用选项
- `POST /salesforce/tooling/connection/debugging-header` - 设置调试头部
**连接错误码**:
| 错误码 | 说明 |
|---------|------|
| TOOLING_CONN_001 | Session 无效或已过期 |
| TOOLING_CONN_002 | 连接创建失败 |
| TOOLING_CONN_003 | 网络超时 |
| TOOLING_CONN_004 | 权限不足 |
| TOOLING_CONN_005 | API 版本不支持 |
| TOOLING_CONN_006 | 用户未登录 |
| TOOLING_CONN_007 | 设置调用选项失败 |
| TOOLING_CONN_008 | 设置调试头部失败 |
**连接结果对象** ([ToolingConnectionResult.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\vo\ToolingConnectionResult.java)):
- `success`: 是否成功
- `connectionId`: 连接 ID
- `sessionId`: Session ID
- `instanceUrl`: 实例 URL
- `connectionTime`: 连接时间
- `errorCode`: 错误码
- `errorMessage`: 错误消息
- `valid`: 是否有效
- `testTime`: 测试时间
- `responseTime`: 响应时间(毫秒)
- `client`: 客户端名称
- `debugLevel`: 调试级别
---
### 2. Apex 代码覆盖率管理
**功能描述**: 管理 Tooling API 的 Apex 代码覆盖率数据,包括类或触发器的覆盖率信息。
**相关类**:
- Controller: [DataiToolingApexCodeCoverageController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingApexCodeCoverageController.java)
- Domain: [DataiToolingApexCodeCoverage.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingApexCodeCoverage.java)
**API 端点**:
- `GET /tooling/toolingapexcodecoverage/list` - 查询覆盖率列表
- `POST /tooling/toolingapexcodecoverage/export` - 导出覆盖率数据
- `GET /tooling/toolingapexcodecoverage/{id}` - 获取覆盖率详情
- `POST /tooling/toolingapexcodecoverage` - 新增覆盖率记录
- `PUT /tooling/toolingapexcodecoverage` - 修改覆盖率记录
- `DELETE /tooling/toolingapexcodecoverage/{ids}` - 删除覆盖率记录
**数据字段**:
- `id`: 主键ID
- `apexClassOrTriggerId`: 类或触发器ID
- `apexTestClassId`: 测试类ID
- `coverage`: 覆盖率百分比
- `numLinesCovered`: 覆盖行数
- `numLinesUncovered`: 未覆盖行数
- `resultTime`: 结果时间
- `sfUserId`: Salesforce用户ID
---
### 3. Apex 代码位置管理
**功能描述**: 管理 Apex 代码的位置信息。
**相关类**:
- Controller: [DataiToolingApexCodeLocationController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingApexCodeLocationController.java)
- Domain: [DataiToolingApexCodeLocation.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingApexCodeLocation.java)
**API 端点**:
- `GET /tooling/toolingapexcodelocation/list` - 查询代码位置列表
- `POST /tooling/toolingapexcodelocation/export` - 导出代码位置数据
- `GET /tooling/toolingapexcodelocation/{id}` - 获取代码位置详情
- `POST /tooling/toolingapexcodelocation` - 新增代码位置记录
- `PUT /tooling/toolingapexcodelocation` - 修改代码位置记录
- `DELETE /tooling/toolingapexcodelocation/{ids}` - 删除代码位置记录
---
### 4. Apex 日志管理
**功能描述**: 管理 Tooling API 的 Apex 执行日志。
**相关类**:
- Controller: [DataiToolingApexLogController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingApexLogController.java)
- Domain: [DataiToolingApexLog.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingApexLog.java)
**API 端点**:
- `GET /tooling/toolingapexlog/list` - 查询日志列表
- `POST /tooling/toolingapexlog/export` - 导出日志数据
- `GET /tooling/toolingapexlog/{id}` - 获取日志详情
- `POST /tooling/toolingapexlog` - 新增日志记录
- `PUT /tooling/toolingapexlog` - 修改日志记录
- `DELETE /tooling/toolingapexlog/{ids}` - 删除日志记录
**数据字段**:
- `id`: 主键ID
- `logId`: 日志ID
- `application`: 应用程序
- `durationMilliseconds`: 持续时间(毫秒)
- `location`: 位置
- `logLength`: 日志长度
- `operation`: 操作
- `startTime`: 开始时间
- `status`: 状态
- `sfUserId`: Salesforce用户ID
---
### 5. Apex 测试队列项管理
**功能描述**: 管理 Apex 测试队列项,包括测试类、测试方法、状态等信息。
**相关类**:
- Controller: [DataiToolingApexTestQueueItemController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingApexTestQueueItemController.java)
- Domain: [DataiToolingApexTestQueueItem.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingApexTestQueueItem.java)
**API 端点**:
- `GET /tooling/toolingapextestqueueitem/list` - 查询测试队列项列表
- `POST /tooling/toolingapextestqueueitem/export` - 导出测试队列项数据
- `GET /tooling/toolingapextestqueueitem/{id}` - 获取测试队列项详情
- `POST /tooling/toolingapextestqueueitem` - 新增测试队列项记录
- `PUT /tooling/toolingapextestqueueitem` - 修改测试队列项记录
- `DELETE /tooling/toolingapextestqueueitem/{ids}` - 删除测试队列项记录
**数据字段**:
- `id`: 主键ID
- `queueItemId`: 队列项ID
- `apexClassId`: Apex类ID
- `methodNames`: 方法名列表
- `parentJobId`: 父作业ID
- `status`: 状态
- `extendedStatus`: 扩展状态
- `createdDate`: 创建时间
- `lastModifiedDate`: 最后修改时间
---
### 6. Flow 测试覆盖率管理
**功能描述**: 管理 Flow 测试覆盖率数据。
**相关类**:
- Controller: [DataiToolingFlowTestCoverageController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingFlowTestCoverageController.java)
- Domain: [DataiToolingFlowTestCoverage.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingFlowTestCoverage.java)
**API 端点**:
- `GET /tooling/toolingflowtestcoverage/list` - 查询 Flow 测试覆盖率列表
- `POST /tooling/toolingflowtestcoverage/export` - 导出 Flow 测试覆盖率数据
- `GET /tooling/toolingflowtestcoverage/{id}` - 获取 Flow 测试覆盖率详情
- `POST /tooling/toolingflowtestcoverage` - 新增 Flow 测试覆盖率记录
- `PUT /tooling/toolingflowtestcoverage` - 修改 Flow 测试覆盖率记录
- `DELETE /tooling/toolingflowtestcoverage/{ids}` - 删除 Flow 测试覆盖率记录
---
### 7. 元数据对象管理
**功能描述**: 管理 Tooling API 的元数据对象包括元数据类型、ID、名称、版本等信息。
**相关类**:
- Controller: [DataiToolingMetadataObjectController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingMetadataObjectController.java)
- Domain: [DataiToolingMetadataObject.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingMetadataObject.java)
**API 端点**:
- `GET /tooling/toolingmetadataobject/list` - 查询元数据对象列表
- `POST /tooling/toolingmetadataobject/export` - 导出元数据对象数据
- `GET /tooling/toolingmetadataobject/{id}` - 获取元数据对象详情
- `POST /tooling/toolingmetadataobject` - 新增元数据对象记录
- `PUT /tooling/toolingmetadataobject` - 修改元数据对象记录
- `DELETE /tooling/toolingmetadataobject/{ids}` - 删除元数据对象记录
**数据字段**:
- `id`: 主键ID
- `metadataType`: 元数据类型
- `metadataId`: 元数据ID
- `metadataName`: 元数据名称
- `apiVersion`: API版本
- `status`: 状态
- `bodyCrc`: 代码CRC
- `attributes`: 对象属性JSON
- `createdDate`: 创建时间
- `lastModifiedDate`: 最后修改时间
- `sfUserId`: Salesforce用户ID
---
### 8. 元数据操作日志管理
**功能描述**: 记录 Tooling API 的元数据操作日志,包括创建、更新、删除、查询等操作。
**相关类**:
- Controller: [DataiToolingMetadataOperationLogController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingMetadataOperationLogController.java)
- Domain: [DataiToolingMetadataOperationLog.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingMetadataOperationLog.java)
**API 端点**:
- `GET /tooling/toolingmetadataoperationlog/list` - 查询元数据操作日志列表
- `POST /tooling/toolingmetadataoperationlog/export` - 导出元数据操作日志数据
- `GET /tooling/toolingmetadataoperationlog/{id}` - 获取元数据操作日志详情
- `POST /tooling/toolingmetadataoperationlog` - 新增元数据操作日志记录
- `PUT /tooling/toolingmetadataoperationlog` - 修改元数据操作日志记录
- `DELETE /tooling/toolingmetadataoperationlog/{ids}` - 删除元数据操作日志记录
**数据字段**:
- `id`: 主键ID
- `operationType`: 操作类型create/update/delete/query
- `metadataType`: 元数据类型
- `metadataId`: 元数据ID
- `metadataName`: 元数据名称
- `requestData`: 请求数据JSON 格式)
- `responseData`: 响应数据JSON 格式)
- `status`: 操作状态success/failed
- `errorCode`: 错误码
- `errorMessage`: 错误消息
- `operationTime`: 操作时间
- `sfUserId`: Salesforce用户ID
---
### 9. SOQL 查询日志管理
**功能描述**: 记录 SOQL 查询操作日志,包括查询字符串、结果数量、执行时间等信息。
**相关类**:
- Controller: [DataiToolingSoqlQueryLogController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingSoqlQueryLogController.java)
- Domain: [DataiToolingSoqlQueryLog.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingSoqlQueryLog.java)
**API 端点**:
- `GET /tooling/toolingsoqlquerylog/list` - 查询 SOQL 查询日志列表
- `POST /tooling/toolingsoqlquerylog/export` - 导出 SOQL 查询日志数据
- `GET /tooling/toolingsoqlquerylog/{id}` - 获取 SOQL 查询日志详情
- `POST /tooling/toolingsoqlquerylog` - 新增 SOQL 查询日志记录
- `PUT /tooling/toolingsoqlquerylog` - 修改 SOQL 查询日志记录
- `DELETE /tooling/toolingsoqlquerylog/{ids}` - 删除 SOQL 查询日志记录
**数据字段**:
- `id`: 主键ID
- `operationType`: 操作类型execute_query/query_more/query_all
- `queryString`: SOQL 查询字符串
- `queryLocator`: 查询定位器(用于 queryMore
- `objectType`: 查询对象类型
- `resultCount`: 结果数量(当前批次)
- `totalSize`: 总大小(所有批次)
- `isDone`: 是否完成
- `status`: 操作状态success/failed
- `errorCode`: 错误码TOOLING_SOQL_001 ~ TOOLING_SOQL_006
- `errorMessage`: 错误消息
- `executionTimeMs`: 执行时间(毫秒)
- `operationTime`: 操作时间
- `sfUserId`: Salesforce用户ID
---
### 10. SOQL 查询结果管理
**功能描述**: 管理 SOQL 查询结果数据。
**相关类**:
- Controller: [DataiToolingSoqlQueryResultController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingSoqlQueryResultController.java)
- Domain: [DataiToolingSoqlQueryResult.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingSoqlQueryResult.java)
**API 端点**:
- `GET /tooling/toolingsoqlqueryresult/list` - 查询 SOQL 查询结果列表
- `POST /tooling/toolingsoqlqueryresult/export` - 导出 SOQL 查询结果数据
- `GET /tooling/toolingsoqlqueryresult/{id}` - 获取 SOQL 查询结果详情
- `POST /tooling/toolingsoqlqueryresult` - 新增 SOQL 查询结果记录
- `PUT /tooling/toolingsoqlqueryresult` - 修改 SOQL 查询结果记录
- `DELETE /tooling/toolingsoqlqueryresult/{ids}` - 删除 SOQL 查询结果记录
---
### 11. 访问安全日志管理
**功能描述**: 记录 Tooling API 的访问安全日志。
**相关类**:
- Controller: [DataiToolingAccessSecurityLogController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingAccessSecurityLogController.java)
- Domain: [DataiToolingAccessSecurityLog.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingAccessSecurityLog.java)
**API 端点**:
- `GET /tooling/toolingaccesssecuritylog/list` - 查询访问安全日志列表
- `POST /tooling/toolingaccesssecuritylog/export` - 导出访问安全日志数据
- `GET /tooling/toolingaccesssecuritylog/{id}` - 获取访问安全日志详情
- `POST /tooling/toolingaccesssecuritylog` - 新增访问安全日志记录
- `PUT /tooling/toolingaccesssecuritylog` - 修改访问安全日志记录
- `DELETE /tooling/toolingaccesssecuritylog/{ids}` - 删除访问安全日志记录
---
### 12. 动作自动化日志管理
**功能描述**: 记录动作自动化操作的日志。
**相关类**:
- Controller: [DataiToolingActionAutomationLogController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingActionAutomationLogController.java)
- Domain: [DataiToolingActionAutomationLog.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingActionAutomationLog.java)
**API 端点**:
- `GET /tooling/toolingactionautomationlog/list` - 查询动作自动化日志列表
- `POST /tooling/toolingactionautomationlog/export` - 导出动作自动化日志数据
- `GET /tooling/toolingactionautomationlog/{id}` - 获取动作自动化日志详情
- `POST /tooling/toolingactionautomationlog` - 新增动作自动化日志记录
- `PUT /tooling/toolingactionautomationlog` - 修改动作自动化日志记录
- `DELETE /tooling/toolingactionautomationlog/{ids}` - 删除动作自动化日志记录
---
### 13. 高级功能日志管理
**功能描述**: 记录高级功能操作的日志。
**相关类**:
- Controller: [DataiToolingAdvancedFeaturesLogController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingAdvancedFeaturesLogController.java)
- Domain: [DataiToolingAdvancedFeaturesLog.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingAdvancedFeaturesLog.java)
**API 端点**:
- `GET /tooling/toolingadvancedfeatureslog/list` - 查询高级功能日志列表
- `POST /tooling/toolingadvancedfeatureslog/export` - 导出高级功能日志数据
- `GET /tooling/toolingadvancedfeatureslog/{id}` - 获取高级功能日志详情
- `POST /tooling/toolingadvancedfeatureslog` - 新增高级功能日志记录
- `PUT /tooling/toolingadvancedfeatureslog` - 修改高级功能日志记录
- `DELETE /tooling/toolingadvancedfeatureslog/{ids}` - 删除高级功能日志记录
---
### 14. AI 操作日志管理
**功能描述**: 记录 AI 相关操作的日志。
**相关类**:
- Controller: [DataiToolingAiOperationLogController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingAiOperationLogController.java)
- Domain: [DataiToolingAiOperationLog.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingAiOperationLog.java)
**API 端点**:
- `GET /tooling/toolingaioperationlog/list` - 查询 AI 操作日志列表
- `POST /tooling/toolingaioperationlog/export` - 导出 AI 操作日志数据
- `GET /tooling/toolingaioperationlog/{id}` - 获取 AI 操作日志详情
- `POST /tooling/toolingaioperationlog` - 新增 AI 操作日志记录
- `PUT /tooling/toolingaioperationlog` - 修改 AI 操作日志记录
- `DELETE /tooling/toolingaioperationlog/{ids}` - 删除 AI 操作日志记录
---
### 15. 开发工具操作日志管理
**功能描述**: 记录开发工具操作的日志。
**相关类**:
- Controller: [DataiToolingDevtoolsOperationLogController.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\controller\DataiToolingDevtoolsOperationLogController.java)
- Domain: [DataiToolingDevtoolsOperationLog.java](file:///d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling\src\main\java\com\datai\tooling\model\domain\DataiToolingDevtoolsOperationLog.java)
**API 端点**:
- `GET /tooling/toolingdevtoolsoperationlog/list` - 查询开发工具操作日志列表
- `POST /tooling/toolingdevtoolsoperationlog/export` - 导出开发工具操作日志数据
- `GET /tooling/toolingdevtoolsoperationlog/{id}` - 获取开发工具操作日志详情
- `POST /tooling/toolingdevtoolsoperationlog` - 新增开发工具操作日志记录
- `PUT /tooling/toolingdevtoolsoperationlog` - 修改开发工具操作日志记录
- `DELETE /tooling/toolingdevtoolsoperationlog/{ids}` - 删除开发工具操作日志记录
---
## 数据模型设计
### 统一基类
所有 Domain 类都继承自 `BaseEntity`,包含以下公共字段:
```java
- createBy: 创建人
- createTime: 创建时间
- updateBy: 更新人
- updateTime: 更新时间
- remark: 备注
```
### 模型转换
模块采用三层模型设计:
1. **Domain领域模型**: 对应数据库表结构,用于持久化
2. **DTO数据传输对象**: 用于接收前端请求参数
3. **VO视图对象**: 用于返回前端响应数据
**转换方法**:
- `Dto.toObj()`: DTO 转 Domain
- `Dto.fromObj()`: Domain 转 DTO
- `Vo.objToVo()`: Domain 转 VO
---
## 连接管理
### 连接工厂
**ToolingConnectionFactory** 继承自 `AbstractConnectionFactory`,提供 ToolingConnection 实例的创建和管理。
**API 版本**: 60.0
**连接创建流程**:
1. 从 SessionManager 获取当前登录结果
2. 验证登录状态和 Session ID
3. 创建 ConnectorConfig 配置
4. 设置 Service Endpoint
5. 创建 ToolingConnection 实例
6. 设置会话头
**连接配置**:
- `sessionId`: 会话 ID
- `serviceEndpoint`: 服务端点(`{instanceUrl}/services/Soap/T/60.0`
- `compression`: 启用压缩
- `traceMessage`: 禁用消息跟踪
---
## 安全控制
### 权限注解
所有 Controller 方法都使用 `@PreAuthorize` 注解进行权限控制:
```java
@PreAuthorize("@ss.hasPermi('tooling:模块:操作')")
```
**权限格式**: `tooling:{模块名}:{操作}`
**操作类型**:
- `list`: 查询列表
- `query`: 查询详情
- `add`: 新增
- `edit`: 修改
- `remove`: 删除
- `export`: 导出
- `get`: 获取
- `clear`: 清除
- `test`: 测试
- `callOptions`: 设置调用选项
- `debuggingHeader`: 设置调试头部
### 日志记录
使用 `@Log` 注解记录业务操作日志:
```java
@Log(title = "模块名称", businessType = BusinessType.INSERT/UPDATE/DELETE/EXPORT/OTHER)
```
---
## API 文档
### Swagger/OpenAPI
所有 API 接口都使用 Swagger 3.0 注解进行文档化:
```java
@Tag(name = "模块名称", description = "模块描述")
@Operation(summary = "操作说明", description = "详细描述")
```
访问路径: `/swagger-ui.html``/doc.html`
---
## 数据库映射
### MyBatis 配置
所有 Mapper XML 文件位于 `src/main/resources/mapper/tooling/` 目录下。
**命名规范**:
- Mapper 接口: `DataiToolingXxxMapper.java`
- XML 映射文件: `DataiToolingXxxMapper.xml`
**表命名规范**: `datai_tooling_xxx`
### 结果映射
使用 `<resultMap>` 定义数据库字段到 Java 对象的映射:
```xml
<resultMap type="DataiToolingXxx" id="DataiToolingXxxResult">
<result property="javaField" column="db_column" />
</resultMap>
```
### 动态 SQL
使用 MyBatis 动态 SQL 标签:
- `<where>`: 动态 WHERE 条件
- `<if>`: 条件判断
- `<trim>`: 去除多余逗号
- `<foreach>`: 批量操作
---
## 代码规范
### Controller 层
1. 继承 `BaseController`
2. 使用 `@RestController` 注解
3. 统一返回 `AjaxResult``TableDataInfo`
4. 使用 Stream API 进行 DTO/VO 转换
5. 使用 `@Slf4j` 进行日志记录
### Service 层
1. 定义接口 `IXxxService`
2. 实现类 `XxxServiceImpl`
3. 使用 `@Service` 注解
4. 自动注入 Mapper
### Mapper 层
1. 定义接口 `XxxMapper`
2. 使用 MyBatis 注解或 XML 映射
3. 支持增删改查操作
### 模型层
1. Domain 使用 `@Schema` 注解
2. DTO 使用 `@Data` 注解Lombok
3. VO 使用 `@Data` 注解Lombok
4. 使用 `BeanUtils.copyProperties()` 进行属性拷贝
### 工厂层
1. 继承 `AbstractConnectionFactory`
2. 使用 `@Component` 注解
3. 实现 `createConnection` 方法
4. 使用 `@Slf4j` 进行日志记录
---
## 依赖关系
### 外部依赖
```
datai-salesforce-tooling
├── datai-file-common (文件通用模块)
├── datai-salesforce-auth (Salesforce 认证模块)
├── javapoet (Java 代码生成库)
└── salesforce-tooling (Salesforce Tooling 工具包)
```
### 内部依赖
```
Controller → Service → Mapper → Database
↓ ↓
DTO Domain
↓ ↓
VO VO
```
---
## 扩展点
### 1. 自定义连接配置
`ToolingConnectionFactory` 中扩展连接配置逻辑。
### 2. 自定义错误处理
扩展 `ToolingConnectionErrorCode` 枚举,添加新的错误码。
### 3. 自定义元数据操作
扩展元数据操作日志,支持更多元数据类型。
### 4. 自定义 SOQL 查询
扩展 SOQL 查询日志,支持更多查询类型。
---
## 注意事项
1. **权限控制**: 所有 API 接口都需要相应的权限才能访问
2. **数据校验**: 建议在 DTO 层添加数据校验注解
3. **事务管理**: Service 层方法可根据需要添加 `@Transactional` 注解
4. **异常处理**: 建议统一使用全局异常处理器
5. **日志记录**: 重要操作需要记录日志
6. **分页查询**: 列表查询接口支持分页参数
7. **连接管理**: Tooling API 连接需要定期刷新
8. **API 版本**: 当前使用 API 版本 60.0,升级时需要同步更新
---
## 更新日志
### 2026-02-04
- 初始版本创建
- 实现 15 个功能模块的 CRUD 接口
- 实现 Tooling API 连接管理功能
- 完成数据模型设计
- 配置 MyBatis 映射
- 集成 Swagger API 文档
- 添加连接工厂和错误码枚举
---
## 联系方式
**模块负责人**: datai
**创建日期**: 2026-02-04
**文档版本**: 1.0.0