datai/datai-scenes/datai-scene-salesforce/docs/changelog/2026-02-02-006-changelog.md

8.2 KiB
Raw Blame History

变更日志 - 高级功能

元数据

  • 需求编号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 - 线索转换请求 DTO
  • datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/EmptyRecycleBinDto.java - 清空回收站请求 DTO
  • datai-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 - 线索转换结果 VO
  • datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/EmptyRecycleBinResultVo.java - 清空回收站结果 VO
  • datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ProcessResultVo.java - 流程提交结果 VO
  • datai-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 - 高级功能服务实现

Controller1 个)

  • 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 中的 LeadConvertEmptyRecycleBinResultProcessSubmitRequestCalendar 等类
  • 分层架构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 APIv65.0
  • Java22
  • Spring Boot3.x

兼容性说明

  • 与现有 Partner API 模块完全兼容
  • 与认证模块兼容(复用 GetUserInfo 实现)
  • 与查询功能、描述功能等模块兼容

相关文档