11 KiB
11 KiB
提示词:高级功能
引用真源
需求描述
根据需求文档,实现 Salesforce Tooling API 的高级功能,包括以下核心功能点:
-
聚合和计算:
- 查询累积结果操作符(AccumulateResultOperator)
- 查询累积结果条件输入类型(AccumulateResultCondInputType)
- 查询聚合表达式结果列元数据(AggregateExpressionResultColumnMetadata)
- 查询聚合查询结果列元数据(AggregateQueryResultColumnMetadata)
-
预测和预测:
- 查询高级账户预测显示组类型(AdvAcctFrcstDisplayGroupType)
- 查询高级账户预测度量类型(AdvAcctFcstMeasureType)
- 查询高级账户预测公式类型(AdvAcctFcstFormulaType)
- 查询高级账户预测计算方法(AdvAcctFcstComputationMethod)
-
激活和应用:
- 查询激活流类型(ActivationFlowType)
- 查询激活功能类型(ActivationFeatureType)
- 查询激活应用类型(ActivationAppType)
- 查询 ACP 状态(ACPStatus)
每个功能都需要:
- 记录操作日志到数据库
- 使用异步方式记录日志
- 处理各种异常情况
- 返回统一的响应格式
设计方案
根据设计文档,采用以下技术方案:
- 连接管理:复用子需求 004-01 实现的 ToolingConnectionFactory,通过工厂模式获取 ToolingConnection
- 数据库日志记录:所有高级功能操作都记录到数据库,支持操作审计和故障排查
- 异步日志记录:使用 CompletableFuture 异步记录操作日志,不影响主流程性能
- 统一异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
- SOQL 查询支持:使用 SoqlBuilder 构建 SOQL 查询语句,简化查询逻辑
- RESTful API 设计:遵循 RESTful API 设计规范,接口清晰易懂
输出格式要求
-
必须包含以下文件:
- Controller:
ToolingAdvancedFeaturesController.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/controller/ToolingAdvancedFeaturesController.java) - Service:
ToolingAdvancedFeaturesService.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/service/ToolingAdvancedFeaturesService.java) - Service Impl:
ToolingAdvancedFeaturesServiceImpl.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/service/impl/ToolingAdvancedFeaturesServiceImpl.java) - Mapper:
ToolingAdvancedFeaturesLogMapper.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/mapper/ToolingAdvancedFeaturesLogMapper.java) - Entity:
ToolingAdvancedFeaturesLog.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/ToolingAdvancedFeaturesLog.java) - VO:
ToolingAdvancedFeaturesLogVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/ToolingAdvancedFeaturesLogVO.java) - DTO:
AccumulateResultOperatorDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AccumulateResultOperatorDTO.java) - DTO:
AccumulateResultCondInputTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AccumulateResultCondInputTypeDTO.java) - DTO:
AggregateExpressionResultColumnMetadataDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AggregateExpressionResultColumnMetadataDTO.java) - DTO:
AggregateQueryResultColumnMetadataDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AggregateQueryResultColumnMetadataDTO.java) - DTO:
AdvAcctFrcstDisplayGroupTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AdvAcctFrcstDisplayGroupTypeDTO.java) - DTO:
AdvAcctFcstMeasureTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AdvAcctFcstMeasureTypeDTO.java) - DTO:
AdvAcctFcstFormulaTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AdvAcctFcstFormulaTypeDTO.java) - DTO:
AdvAcctFcstComputationMethodDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AdvAcctFcstComputationMethodDTO.java) - DTO:
ActivationFlowTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/ActivationFlowTypeDTO.java) - DTO:
ActivationFeatureTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/ActivationFeatureTypeDTO.java) - DTO:
ActivationAppTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/ActivationAppTypeDTO.java) - DTO:
ACPStatusDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/ACPStatusDTO.java) - 响应类:
AjaxResult.java(若依框架已有)
- Controller:
-
必须包含单元测试:
ToolingAdvancedFeaturesServiceTest.java(路径:datai-salesforce-tooling/src/test/java/com/datai/salesforce/tooling/service/ToolingAdvancedFeaturesServiceTest.java)
-
必须符合 Spring Boot 最佳实践
-
必须遵循若依框架规范
-
必须使用 MyBatis Plus 进行数据库操作
代码规范要求
- 类命名:首字母大写,驼峰命名,如
ToolingAdvancedFeaturesController - 方法命名:首字母小写,驼峰命名,如
getAccumulateResultOperators - 变量命名:首字母小写,驼峰命名,如
operators - 注释规范:
- 类注释:使用
/** */,包含类功能描述、作者、创建时间 - 方法注释:使用
/** */,包含方法功能、参数、返回值、异常描述 - 字段注释:使用
/** */,包含字段功能描述
- 类注释:使用
- 代码格式:使用 4 个空格缩进,行宽不超过 120 字符
- 导入规范:使用 import 静态导入,避免通配符导入
测试要求
- 单元测试覆盖率不低于 80%
- 测试用例包含以下场景:
- 查询累积结果操作符成功
- 查询累积结果条件输入类型成功
- 查询聚合表达式结果列元数据成功
- 查询聚合查询结果列元数据成功
- 查询高级账户预测显示组类型成功
- 查询高级账户预测度量类型成功
- 查询高级账户预测公式类型成功
- 查询高级账户预测计算方法成功
- 查询激活流类型成功
- 查询激活功能类型成功
- 查询激活应用类型成功
- 查询 ACP 状态成功
- 连接获取失败
- 查询失败
- 异步日志记录失败
- 使用 JUnit 5 和 Mockito 进行测试
- 测试用例命名规范:
test+方法名+场景,如testGetAccumulateResultOperatorsSuccess - 测试数据使用 Mockito 模拟
注意事项
- 必须使用 ToolingConnectionFactory.getConnection("source") 获取连接
- 必须使用 SessionManager 获取当前用户会话信息
- 必须使用 CompletableFuture 异步记录操作日志
- 必须使用 datai-salesforce-common 模块的异常体系(SalesforceAuthException、SalesforceLoginException、SalesforceQueryException 等)
- 必须使用 SoqlBuilder 构建 SOQL 查询语句
- 必须使用若依的
@DataScope注解进行数据权限控制 - 必须使用若依的
@Log注解记录操作日志 - 必须使用若依的
GlobalExceptionHandler处理异常 - 必须处理 Salesforce API 的空值情况
- 必须使用 MyBatis Plus 的
@TableName、@TableId、@TableField注解 - 必须使用 Lombok 的
@Data、@Slf4j注解 - 必须使用 Jakarta Validation 的
@NotNull、@NotBlank等注解进行参数校验 - 必须使用若依的
AjaxResult类返回统一的响应格式 - 必须使用若依的
PageUtils类处理分页查询 - 必须使用若依的
@PreAuthorize注解进行权限控制
接口列表
- GET
/salesforce/tooling/advanced-features/accumulate-result-operators- 查询累积结果操作符 - GET
/salesforce/tooling/advanced-features/accumulate-result-cond-input-types- 查询累积结果条件输入类型 - GET
/salesforce/tooling/advanced-features/aggregate-expression-result-column-metadatas- 查询聚合表达式结果列元数据 - GET
/salesforce/tooling/advanced-features/aggregate-query-result-column-metadatas- 查询聚合查询结果列元数据 - GET
/salesforce/tooling/advanced-features/adv-acct-frcst-display-group-types- 查询高级账户预测显示组类型 - GET
/salesforce/tooling/advanced-features/adv-acct-fcst-measure-types- 查询高级账户预测度量类型 - GET
/salesforce/tooling/advanced-features/adv-acct-fcst-formula-types- 查询高级账户预测公式类型 - GET
/salesforce/tooling/advanced-features/adv-acct-fcst-computation-methods- 查询高级账户预测计算方法 - GET
/salesforce/tooling/advanced-features/activation-flow-types- 查询激活流类型 - GET
/salesforce/tooling/advanced-features/activation-feature-types- 查询激活功能类型 - GET
/salesforce/tooling/advanced-features/activation-app-types- 查询激活应用类型 - GET
/salesforce/tooling/advanced-features/acp-statuses- 查询 ACP 状态 - GET
/salesforce/tooling/advanced-features/logs- 查询操作日志(支持分页) - GET
/salesforce/tooling/advanced-features/logs/{id}- 查询操作日志详情
响应格式
所有接口必须返回统一的响应格式:
{
"code": 200,
"msg": "操作成功",
"data": {
// 具体数据
}
}
错误响应格式:
{
"code": 500,
"msg": "错误信息",
"data": null
}
依赖模块
datai-salesforce-auth模块的 SessionManagerdatai-salesforce-auth模块的 ISalesforceConnectionFactory 接口datai-salesforce-auth模块的 AbstractConnectionFactory 抽象类datai-salesforce-common模块的异常类(SalesforceAuthException、SalesforceLoginException、SalesforceQueryException 等)datai-salesforce-common模块的常量类(SalesforceConstants)datai-salesforce-common模块的 SoqlBuilder 类tooling.jar中的 ToolingConnection 类tooling.jar中的 AccumulateResultOperator 类tooling.jar中的 AccumulateResultCondInputType 类tooling.jar中的 AggregateExpressionResultColumnMetadata 类tooling.jar中的 AggregateQueryResultColumnMetadata 类tooling.jar中的 AdvAcctFrcstDisplayGroupType 类tooling.jar中的 AdvAcctFcstMeasureType 类tooling.jar中的 AdvAcctFcstFormulaType 类tooling.jar中的 AdvAcctFcstComputationMethod 类tooling.jar中的 ActivationFlowType 类tooling.jar中的 ActivationFeatureType 类tooling.jar中的 ActivationAppType 类tooling.jar中的 ACPStatus 类