6.8 KiB
6.8 KiB
提示词:访问和安全功能
引用真源
需求描述
根据需求文档,实现 Salesforce Tooling API 的访问和安全功能,包括:
- 查询访问方法(AccessMethod)
- 查询访问资源类型(AccessResourceType)
- 查询 API 访问级别(APIAccessLevel)
- 查询 API 类型(APIType)
- 查询激活平台连接器类型(ActivationPlatformConnectorType)
- 查询激活平台创建类型(ActivationPlatformCreationType)
- 获取操作日志(支持按操作类型、元数据类型、时间范围等条件查询)
设计方案
根据设计文档,采用以下技术方案:
- 连接管理:复用子需求 004-01 实现的 ToolingConnectionFactory,通过工厂模式获取 ToolingConnection
- 数据库日志记录:所有访问和安全操作都记录到数据库,支持操作审计和故障排查
- 异步日志记录:使用异步方式记录日志,避免影响主操作性能
- 异常处理机制:将 Salesforce 异常转换为自定义异常,提供友好的错误信息
- SOQL 查询构建:使用 SoqlBuilder 构建 SOQL 查询,提高代码可读性和可维护性
- RESTful API 设计:提供标准的 REST API 接口
- 错误码枚举:使用 ToolingAccessSecurityErrorCode 枚举定义错误码
输出格式要求
- 必须包含以下文件:
- Controller:
ToolingAccessSecurityController.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/controller/ToolingAccessSecurityController.java) - Service 接口:
IToolingAccessSecurityService.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/service/IToolingAccessSecurityService.java) - Service 实现:
ToolingAccessSecurityServiceImpl.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/service/impl/ToolingAccessSecurityServiceImpl.java) - Mapper:
ToolingAccessSecurityLogMapper.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/mapper/ToolingAccessSecurityLogMapper.java) - Entity:
ToolingAccessSecurityLog.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/ToolingAccessSecurityLog.java) - DTO:
AccessSecurityLogQueryRequest.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AccessSecurityLogQueryRequest.java) - VO:
AccessMethodVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/AccessMethodVO.java) - VO:
AccessResourceTypeVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/AccessResourceTypeVO.java) - VO:
APIAccessLevelVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/APIAccessLevelVO.java) - VO:
APITypeVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/APITypeVO.java) - VO:
ActivationPlatformConnectorTypeVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/ActivationPlatformConnectorTypeVO.java) - VO:
ActivationPlatformCreationTypeVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/ActivationPlatformCreationTypeVO.java) - VO:
ToolingAccessSecurityLogVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/ToolingAccessSecurityLogVO.java) - 错误码枚举:
ToolingAccessSecurityErrorCode.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/enums/ToolingAccessSecurityErrorCode.java)
- Controller:
- 必须包含单元测试:
ToolingAccessSecurityServiceTest.java(路径:datai-salesforce-tooling/src/test/java/com/datai/salesforce/tooling/service/ToolingAccessSecurityServiceTest.java)
- 必须符合 Spring Boot 最佳实践
- 必须遵循若依框架规范
- 必须使用 MyBatis Plus 进行数据库操作
代码规范要求
- 类命名:首字母大写,驼峰命名,如
ToolingAccessSecurityController - 方法命名:首字母小写,驼峰命名,如
getAccessMethods - 变量命名:首字母小写,驼峰命名,如
accessMethods - 注释规范:
- 类注释:使用
/** */,包含类功能描述、作者、创建时间 - 方法注释:使用
/** */,包含方法功能、参数、返回值、异常描述 - 字段注释:使用
/** */,包含字段功能描述
- 类注释:使用
- 代码格式:使用 4 个空格缩进,行宽不超过 120 字符
- 导入规范:使用 import 静态导入,避免通配符导入
- 异常处理:必须捕获 Salesforce 异常并转换为自定义异常(SalesforceAuthException)
- 日志记录:必须使用 @Slf4j 注解和 log 对象记录日志
- 异步处理:必须使用 @Async 注解和 CompletableFuture 进行异步日志记录
- 依赖注入:必须使用 @Autowired 注解进行依赖注入
测试要求
- 单元测试覆盖率不低于 80%
- 测试用例包含以下场景:
- 查询访问方法成功
- 查询访问资源类型成功
- 查询 API 访问级别成功
- 查询 API 类型成功
- 查询激活平台连接器类型成功
- 查询激活平台创建类型成功
- 获取操作日志成功
- Session 过期异常处理
- Salesforce API 调用失败异常处理
- 使用 JUnit 5 和 Mockito 进行测试
- 测试用例命名规范:
test+方法名+场景,如testGetAccessMethodsSuccess - 测试数据使用 Mockito 模拟
注意事项
- 必须使用 ToolingConnectionFactory.getConnection("source") 获取连接
- 必须固定使用 source ORG 类型的连接缓存
- 必须使用 SoqlBuilder 构建 SOQL 查询
- 必须异步记录操作日志,不影响主操作性能
- 必须将 Salesforce 异常转换为 SalesforceAuthException
- 必须使用 ToolingAccessSecurityErrorCode 枚举定义错误码
- 必须遵循 RESTful API 设计规范
- 必须支持分页查询操作日志
- 必须使用若依的 @Log 注解记录操作日志
- 必须使用若依的 GlobalExceptionHandler 处理异常
- 必须使用若依的 AjaxResult 和 TableDataInfo 返回响应
- 必须使用若依的 PageInfo 进行分页
- 必须使用 MyBatis Plus 的 @TableName、@TableId、@TableField 注解
- 必须使用 Lombok 的 @Data、@Slf4j、@Service、@RestController、@RequestMapping、@GetMapping、@Autowired 注解
- 必须使用 Jakarta Validation 的 @Valid、@NotNull、@NotBlank、@Size、@Min、@Max 注解进行参数验证