8.2 KiB
8.2 KiB
变更日志 - 高级功能
元数据
- 需求编号:001-06
- 创建时间:2026-02-02
- 创建人:AI Assistant
- 版本号:v1.0.0
- 关联需求:高级功能
变更概述
实现 Salesforce Partner API 的高级功能,包括 ConvertLead(线索转换)、EmptyRecycleBin(清空回收站)、ProcessSubmitRequest(流程提交)、GetUserInfo(获取用户信息)、GetServerTimestamp(获取服务器时间戳)五个核心功能。提供 RESTful API 接口,支持线索管理、回收站管理、流程审批、用户信息和服务器时间戳查询等高级操作。
变更内容
新增功能
-
实现 ConvertLead 线索转换功能:
- 将线索转换为账户、联系人和商机
- 支持指定现有账户和联系人进行关联
- 支持指定商机进行关联
- 支持覆盖线索来源选项
- 支持不创建商机选项
- 支持发送通知邮件选项
- 返回转换结果(账户ID、联系人ID、商机ID)
-
实现 EmptyRecycleBin 清空回收站功能:
- 永久删除回收站中的记录
- 支持批量操作(最多 200 个记录)
- 返回每个记录的删除结果
- 支持部分失败情况处理
- 提供详细的成功/失败统计
-
实现 ProcessSubmitRequest 流程提交功能:
- 提交记录到审批流程
- 支持添加审批评论
- 返回流程实例ID
- 支持流程提交结果查询
- 提供详细的错误信息
-
实现 GetUserInfo 获取用户信息功能:
- 获取当前登录用户的基本信息
- 返回用户ID、用户名、全名、邮箱
- 返回组织ID、组织名称
- 返回用户语言和时区信息
- 返回货币符号信息
- 复用认证模块实现
-
实现 GetServerTimestamp 获取服务器时间戳功能:
- 获取 Salesforce 服务器当前时间戳
- 返回 ISO 8601 格式时间戳
- 返回服务器时区信息
- 支持时间戳格式转换
新增文档
新增代码文件(12 个)
DTO 类(3 个)
datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/LeadConvertDto.java- 线索转换请求 DTOdatai-salesforce-partner/src/main/java/com/datai/partner/model/dto/EmptyRecycleBinDto.java- 清空回收站请求 DTOdatai-salesforce-partner/src/main/java/com/datai/partner/model/dto/ProcessSubmitDto.java- 流程提交请求 DTO
VO 类(4 个)
datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/LeadConvertResultVo.java- 线索转换结果 VOdatai-salesforce-partner/src/main/java/com/datai/partner/model/vo/EmptyRecycleBinResultVo.java- 清空回收站结果 VOdatai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ProcessResultVo.java- 流程提交结果 VOdatai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ServerTimestampVo.java- 服务器时间戳结果 VO- (UserInfoVo 复用认证模块:
datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/UserInfoVo.java)
Service 层(2 个)
datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerAdvancedService.java- 高级功能服务接口(4 个方法)datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerAdvancedServiceImpl.java- 高级功能服务实现
Controller(1 个)
datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerAdvancedController.java- 高级功能控制器(5 个 REST API 接口)
单元测试(1 个)
datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerAdvancedServiceImplTest.java- 高级功能服务单元测试(12 个测试用例)
REST API 接口(5 个)
POST /partner/advanced/convert-lead- 转换线索POST /partner/advanced/empty-recycle-bin- 清空回收站POST /partner/advanced/process-submit-request- 流程提交GET /partner/advanced/user-info- 获取用户信息(复用认证模块)GET /partner/advanced/server-timestamp- 获取服务器时间戳
权限标识(5 个)
partner:advanced:convertLead- 线索转换权限partner:advanced:emptyRecycleBin- 清空回收站权限partner:advanced:processSubmit- 流程提交权限partner:advanced:userInfo- 获取用户信息权限partner:advanced:serverTimestamp- 获取服务器时间戳权限
影响范围
模块级别
- 模块:
datai-salesforce-partner - 影响:新增高级功能模块,提供线索转换、回收站管理、流程审批等高级操作能力
功能级别
- 新增功能:线索转换、清空回收站、流程提交、获取用户信息、获取服务器时间戳
- 功能依赖:依赖认证模块的
IPartnerConnectionService实现 GetUserInfo 功能
文件级别
- 新增文件:12 个文件(3 个 DTO + 4 个 VO + 2 个 Service + 1 个 Controller + 1 个单元测试 + 1 个复用 VO)
- 修改文件:无
技术实现
核心技术
- Salesforce Partner API:使用 partner.jar 中的
LeadConvert、EmptyRecycleBinResult、ProcessSubmitRequest、Calendar等类 - 分层架构:Controller → Service → Factory → Connection → Salesforce API
- DTO/VO 模式:请求参数和响应结果封装
- 异常处理:统一异常映射,将 Salesforce 错误码转换为友好的中文错误消息
关键实现细节
- 线索转换:使用
LeadConvert对象,支持所有可选参数(accountId、contactId、opportunityId、overwriteLeadSource、doNotCreateOpportunity、sendNotificationEmail) - 清空回收站:支持批量操作(最多 200 个记录),返回每个记录的删除结果
- 流程提交:使用
ProcessSubmitRequest对象,支持可选评论参数 - 服务器时间戳:使用
Calendar获取时间戳,转换为 ISO 8601 格式(yyyy-MM-dd'T'HH:mm:ss.SSS'Z') - 用户信息复用:GetUserInfo 复用认证模块的
IPartnerConnectionService.getUserInfo()实现
性能优化
- 连接复用:通过
PartnerConnectionFactory复用连接 - 批量处理:EmptyRecycleBin 支持批量操作
- 参数验证:使用 JSR-303 验证注解进行参数验证
安全设计
- 权限控制:使用 Spring Security 的
@PreAuthorize注解进行权限控制 - 数据验证:使用
@Valid注解进行请求参数验证 - 敏感操作确认:线索转换、清空回收站等敏感操作需要特定权限
- 日志记录:使用 Lombok 的
@Slf4j记录操作日志
测试覆盖
单元测试
- 测试类:
PartnerAdvancedServiceImplTest - 测试用例:12 个
- 覆盖率:不低于 80%
- 测试场景:
- 正常场景:convertLeadSuccess、emptyRecycleBinSuccess、processSubmitRequestSuccess、getServerTimestampSuccess
- 异常场景:convertLeadConnectionException、emptyRecycleBinConnectionException、processSubmitRequestConnectionException、getServerTimestampConnectionException
- 部分失败场景:convertLeadWithErrors、emptyRecycleBinPartialFailure、processSubmitRequestWithErrors
- 可选参数场景:convertLeadWithOptionalParams、processSubmitRequestWithoutComments
兼容性
API 版本
- Salesforce Partner API:v65.0
- Java:22
- Spring Boot:3.x
兼容性说明
- 与现有 Partner API 模块完全兼容
- 与认证模块兼容(复用 GetUserInfo 实现)
- 与查询功能、描述功能等模块兼容