6.9 KiB
6.9 KiB
变更日志
元数据
- 需求编号:001-04
- 变更时间:2026-01-30
- 变更人:AI Assistant
- 版本号:v1.0.0
- 状态:已完成
变更概述
实现 Salesforce Partner API 的查询功能,包括 SOQL 查询(Query)、查询所有记录(QueryAll)、分页查询(QueryMore)和 SOSL 搜索(Search)四个核心功能。提供完整的 REST API 接口,支持查询结果分页、参数验证、异常处理和权限控制。
变更内容
新增功能
1. SOQL 查询(Query)
- 执行标准 SOQL 查询语句
- 支持自定义批次大小(1-2000,默认 500)
- 支持关系查询(如 Account.Name)
- 返回查询结果、分页信息和记录数量
- 最多返回 50000 条记录
2. 查询所有记录(QueryAll)
- 执行 SOQL 查询,包括已删除的记录(Recycle Bin 中的记录)
- 支持自定义批次大小
- 适用于数据恢复和审计场景
3. 分页查询(QueryMore)
- 使用 QueryLocator 获取查询结果的下一页
- 支持 Query 和 QueryAll 结果的分页
- 自动处理分页边界条件
4. SOSL 搜索(Search)
- 执行 SOSL 搜索语句
- 支持跨对象搜索
- 返回按对象类型分组的搜索结果
- 支持全文搜索和字段搜索
新增 DTO 类
-
QueryDto.java - SOQL 查询请求参数
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/QueryDto.java - 字段:soql(查询语句)、batchSize(批次大小)
- 验证:@NotBlank、@Min(1)、@Max(2000)
- 路径:
-
QueryAllDto.java - QueryAll 请求参数
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/QueryAllDto.java - 字段:soql(查询语句)、batchSize(批次大小)
- 验证:@NotBlank、@Min(1)、@Max(2000)
- 路径:
-
QueryMoreDto.java - QueryMore 请求参数
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/QueryMoreDto.java - 字段:queryLocator(查询定位器)
- 验证:@NotBlank
- 路径:
-
SearchDto.java - SOSL 搜索请求参数
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/SearchDto.java - 字段:sosl(搜索语句)
- 验证:@NotBlank
- 路径:
新增 VO 类
-
QueryResultVo.java - 查询结果
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/QueryResultVo.java - 字段:records(记录列表)、queryLocator(查询定位器)、done(是否完成)、size(记录数量)、success(是否成功)、errors(错误信息)
- 路径:
-
SearchResultVo.java - 搜索结果
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SearchResultVo.java - 字段:searchRecords(搜索结果列表)、success(是否成功)、errors(错误信息)
- 路径:
-
SearchRecordVo.java - 搜索记录
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SearchRecordVo.java - 字段:type(记录类型)、record(记录数据)
- 路径:
新增 Service 接口和实现
-
IPartnerQueryService.java - 查询服务接口
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerQueryService.java - 方法:query(QueryDto)、queryAll(QueryAllDto)、queryMore(QueryMoreDto)、search(SearchDto)
- 路径:
-
PartnerQueryServiceImpl.java - 查询服务实现
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerQueryServiceImpl.java - 功能:
- 通过 PartnerConnectionFactory 获取连接
- 设置查询选项(批次大小)
- 执行查询并处理结果
- 异常处理和日志记录
- SObject 到 Map 的转换
- 路径:
新增 Controller
PartnerQueryController.java - 查询控制器
- 路径:
datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerQueryController.java - 接口:
- POST
/partner/query- 执行 SOQL 查询 - POST
/partner/queryAll- 查询所有记录(包括已删除的) - POST
/partner/queryMore- 获取查询结果的下一页 - POST
/partner/search- 执行 SOSL 搜索
- POST
- 权限控制:@PreAuthorize("@ss.hasLogin()")
- Swagger 文档:@Operation、@Tag
新增单元测试
PartnerQueryServiceImplTest.java - 查询服务单元测试
- 路径:
datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerQueryServiceImplTest.java - 测试用例:
- testQuerySuccess - 查询成功场景
- testQueryEmptyResult - 查询空结果场景
- testQueryConnectionException - 连接异常场景
- testQueryAllSuccess - QueryAll 成功场景
- testQueryMoreSuccess - QueryMore 成功场景
- testSearchSuccess - 搜索成功场景
- testSearchEmptyResult - 搜索空结果场景
- testSearchConnectionException - 搜索连接异常场景
新增文档
- 设计文档:2026-01-30-004-查询功能-设计.md
- 决策记录:2026-01-30-004-ADR-查询功能技术选型.md
- 提示词:2026-01-30-004-prompt-查询功能.md
影响范围
模块级别
- 模块:
datai-salesforce-partner - 新增文件:11 个
- 4 个 DTO 类
- 3 个 VO 类
- 1 个 Service 接口
- 1 个 Service 实现
- 1 个 Controller
- 1 个单元测试类
功能级别
- 功能:Salesforce Partner API 查询功能
- 子功能:
- SOQL 查询(Query)
- 查询所有记录(QueryAll)
- 分页查询(QueryMore)
- SOSL 搜索(Search)
接口级别
- 新增接口:4 个 REST API 接口
- POST
/partner/query - POST
/partner/queryAll - POST
/partner/queryMore - POST
/partner/search
- POST
依赖关系
- 依赖模块:
datai-salesforce-auth- PartnerConnectionFactory
- SessionManager
- 依赖模块:
datai-salesforce-common- SalesforceAuthException
- SalesforceOperationException
- ErrorVo
技术特性
查询选项
- 支持通过
setQueryOptions(int)设置查询批处理大小 - 默认批次大小:500
- 最大批次大小:2000
结果处理
- SObject 数组转换为 List<Map<String, Object>>
- 支持关系字段访问(如 Account.Name)
- 自动处理空结果和异常场景
分页机制
- 使用 QueryLocator 进行分页
- QueryMore 获取下一页结果
- 自动检测是否完成(done 标志)
搜索功能
- 支持 SOSL 全文搜索
- 按对象类型分组返回结果
- 支持多对象搜索