6.6 KiB
6.6 KiB
提示词:Metadata 连接管理
引用真源
需求描述
根据需求文档,实现 Salesforce Metadata API 连接管理功能,包括:
- 连接工厂:创建和管理 MetadataConnection 实例
- 会话头管理:设置 SessionHeader
- 调用选项:设置 CallOptions
- 连接缓存:使用 AbstractConnectionFactory 提供的缓存机制
- 连接状态:提供连接状态查询与测试
- 连接刷新与关闭:刷新与清理连接缓存
核心要求:
- 固定使用 source org 类型
- 继承 AbstractConnectionFactory
- 集成 SessionManager 获取会话信息
- 提供 RESTful API 接口
- 不生成 SQL 脚本
设计方案
根据设计文档,采用以下技术方案:
- 模块:
datai-salesforce-metadata - 连接工厂:
MetadataConnectionFactory继承AbstractConnectionFactory<MetadataConnection> - 服务层:
IMetadataConnectionService接口 +MetadataConnectionServiceImpl实现 - 控制器:
MetadataConnectionController提供 REST API - 数据模型:
DataiMetadataConnection、SetCallOptionsDto、ConnectionStatusVo - 持久层:
DataiMetadataConnectionMapper - 配置:
MetadataConnectionConfig - 异常处理:使用
SalesforceAuthException和SalesforceOperationException
包结构
com.datai.metadata
├── controller
│ └── MetadataConnectionController.java
├── service
│ ├── IMetadataConnectionService.java
│ └── impl
│ └── MetadataConnectionServiceImpl.java
├── factory
│ └── MetadataConnectionFactory.java
├── mapper
│ └── DataiMetadataConnectionMapper.java
├── model
│ ├── domain
│ │ └── DataiMetadataConnection.java
│ ├── dto
│ │ └── SetCallOptionsDto.java
│ └── vo
│ └── ConnectionStatusVo.java
└── config
└── MetadataConnectionConfig.java
输出格式要求
必须包含的文件
-
连接工厂:
MetadataConnectionFactory.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/factory/MetadataConnectionFactory.java - 必须继承
AbstractConnectionFactory<MetadataConnection> - 必须实现
createConnectionInternal()方法
- 路径:
-
服务接口:
IMetadataConnectionService.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/service/IMetadataConnectionService.java - 定义所有连接管理方法
- 路径:
-
服务实现:
MetadataConnectionServiceImpl.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/service/impl/MetadataConnectionServiceImpl.java - 实现连接获取、测试、刷新、关闭
- 固定使用 source org 类型
- 路径:
-
控制器:
MetadataConnectionController.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/controller/MetadataConnectionController.java - 提供 4 个 REST API 接口
- 使用
@Tag注解定义 Swagger 文档 - 使用
@PreAuthorize注解进行权限控制
- 路径:
-
Mapper:
DataiMetadataConnectionMapper.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/mapper/DataiMetadataConnectionMapper.java - 使用 MyBatis Plus 规范
- 路径:
-
Domain:
DataiMetadataConnection.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/model/domain/DataiMetadataConnection.java - 与设计文档字段保持一致
- 路径:
-
DTO:
SetCallOptionsDto.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/model/dto/SetCallOptionsDto.java - 使用
@Schema注解定义 Swagger 文档
- 路径:
-
VO:
ConnectionStatusVo.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/model/vo/ConnectionStatusVo.java - 使用
@Schema注解定义 Swagger 文档
- 路径:
-
配置类:
MetadataConnectionConfig.java- 路径:
datai-salesforce-metadata/src/main/java/com/datai/metadata/config/MetadataConnectionConfig.java
- 路径:
REST API 接口列表
-
获取连接状态
- 方法:GET
- 路径:
/api/metadata/connection/status - 权限:
metadata:connection:status - 响应:
ConnectionStatusVo
-
测试连接
- 方法:POST
- 路径:
/api/metadata/connection/test - 权限:
metadata:connection:test
-
刷新连接
- 方法:POST
- 路径:
/api/metadata/connection/refresh - 权限:
metadata:connection:refresh
-
关闭连接
- 方法:POST
- 路径:
/api/metadata/connection/close - 权限:
metadata:connection:close
代码规范要求
- 类命名:首字母大写,驼峰命名
- 方法命名:首字母小写,驼峰命名
- 变量命名:首字母小写,驼峰命名
- 常量命名:全大写,下划线分隔
- 日志规范:使用 Lombok 的
@Slf4j注解 - 异常处理:
- 捕获异常后记录日志
- 抛出
SalesforceAuthException或SalesforceOperationException - 在 Controller 层转换为
ServiceException或AjaxResult
- 代码格式:使用 4 个空格缩进,行宽不超过 120 字符
依赖要求
-
必须导入的类:
com.datai.common.exception.SalesforceAuthExceptioncom.datai.common.exception.SalesforceOperationExceptioncom.datai.common.exception.ServiceExceptioncom.datai.common.core.domain.AjaxResultcom.datai.auth.manager.SessionManagercom.datai.auth.factory.AbstractConnectionFactorycom.sforce.soap.metadata.Connectorcom.sforce.soap.metadata.MetadataConnectioncom.sforce.soap.metadata.SessionHeader_elementcom.sforce.soap.metadata.CallOptions_element
-
Spring 注解:
@RestController@RequestMapping@Autowired@Tag@Operation@PreAuthorize@Valid@RequestBody@Schema
-
Lombok 注解:
@Slf4j@Data@Builder(可选)
测试要求
- 单元测试覆盖率:不低于 80%
- 测试用例场景:
- 获取连接状态成功
- 测试连接成功与失败
- Session 过期时异常处理
- 刷新连接成功
- 关闭连接成功
- 测试框架:使用 JUnit 5 和 Mockito
- 测试用例命名规范:
test+方法名+场景 - 测试数据:使用 Mockito 模拟 SessionManager 和 MetadataConnection