4.3 KiB
4.3 KiB
提示词:删除操作
引用真源
需求描述
根据需求文档和设计文档,实现 Salesforce 元数据删除功能。该功能支持按类型和名称删除元数据,支持批量操作,并将删除结果持久化到数据库。
核心功能包括:
- 删除元数据:调用 Salesforce Metadata API 的同步接口
deleteMetadata。 - 批量删除:支持一次性删除多个元数据组件,Service 层需处理分批逻辑(Salesforce 限制单次调用数量,通常为 10)。
- 历史记录:将每次删除操作的结果(成功/失败、错误信息、时间、操作人)保存到数据库表
datai_metadata_delete。 - 异常处理:捕获 API 调用异常,转换为项目标准异常 (
SalesforceAuthException,SalesforceOperationException),并记录失败状态。 - REST API:提供标准 REST 接口供前端调用。
设计方案
根据设计文档,采用以下技术方案:
-
架构分层:
- Controller:
MetadataDeleteController(REST API) - Service:
MetadataDeleteService(业务逻辑、分批处理、API 调用、结果保存) - Repository:
MetadataDeleteMapper(MyBatis Plus 数据库操作) - Entity:
MetadataDeleteEntity(对应datai_metadata_delete表)
- Controller:
-
关键依赖:
MetadataConnectionFactory: 获取MetadataConnection。MetadataConnection: 调用deleteMetadata(type, fullNames)。DeleteResult: 处理 Salesforce 返回的删除结果对象。
-
数据模型:
- 表名:
datai_metadata_delete - 实体类:
MetadataDeleteEntity - DTO:
DeleteRequest(用于批量删除接口入参)
- 表名:
-
分批策略:
- 在 Service 层实现循环分批调用,每批次处理 10 个(或根据配置)。
- 聚合所有批次的结果返回给 Controller。
输出格式要求
-
必须包含以下文件:
- Controller:
MetadataDeleteController.java(路径:datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/controller/metadata/MetadataDeleteController.java) - Service:
MetadataDeleteService.java(路径:datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/service/metadata/MetadataDeleteService.java) - Mapper:
MetadataDeleteMapper.java(路径:datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/mapper/MetadataDeleteMapper.java) - Entity:
MetadataDeleteEntity.java(路径:datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/domain/MetadataDeleteEntity.java) - DTO:
DeleteRequest.java(路径:datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/dto/DeleteRequest.java)
- Controller:
-
必须包含单元测试:
MetadataDeleteServiceTest.java(路径:datai-scene-salesforce/src/test/java/com/datai/scene/salesforce/service/metadata/MetadataDeleteServiceTest.java)
-
代码内容要求:
- 使用
@RestController,@RequestMapping,@Autowired等 Spring 注解。 - 使用
@TableName,@TableId等 MyBatis Plus 注解。 - 使用 Lombok 的
@Data注解。 - 遵循项目统一的
ApiResponse响应格式。 - 记录详细的日志 (
slf4j)。
- 使用
代码规范要求
- 命名规范:
- 类名:
MetadataDelete... - 方法名:
deleteMetadata,batchDeleteMetadata,getDeleteHistory - 变量名:驼峰命名
- 类名:
- 注释规范:
- 类和接口必须有 Javadoc 注释,说明用途。
- 复杂逻辑(如分批循环)必须有行内注释。
- 异常处理:
- 捕获
ConnectionException并区分InvalidSessionId等特定错误。 - 数据库操作异常不应中断 API 返回(尽可能记录错误并返回部分成功)。
- 捕获
测试要求
- Mock 测试:
- 使用 Mockito 模拟
MetadataConnectionFactory和MetadataConnection。 - 模拟
deleteMetadata返回成功和失败的DeleteResult。 - 验证
deleteRepository.save()是否被调用。
- 使用 Mockito 模拟
- 覆盖场景:
- 单个删除成功。
- 批量删除(超过 10 个触发分批)。
- 删除失败(API 返回 Error)。
- API 连接异常。