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

691 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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