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

428 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API 文档 - 高级功能
## 元数据
- 需求编号001-06
- 创建时间2026-02-02
- 创建人AI Assistant
- 版本号v1.0.0
- 关联需求:[高级功能](../requirements/sub/2026-01-28-001-06-高级功能.md)
## API 概述
高级功能 API 提供了对 Salesforce 高级操作的支持,包括线索转换、清空回收站、流程提交、获取用户信息、获取服务器时间戳等。这些 API 可以帮助开发人员实现复杂的业务场景,如销售流程管理、数据清理、审批流程等。
## 接口列表
### 1. 转换线索
#### 接口说明
将线索转换为账户、联系人和商机。支持指定现有账户和联系人进行关联,支持覆盖线索来源选项,支持不创建商机选项,支持发送通知邮件选项。
- **接口名称**ConvertLead
- **请求方式**POST
- **请求路径**`/partner/advanced/convert-lead`
- **权限要求**`@PreAuthorize("@ss.hasPermi('partner:advanced:convertLead')")`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| leadId | String | 是 | 线索 ID格式为 18 位 Salesforce ID |
| convertedStatus | String | 是 | 转换状态,如 "Qualified" |
| accountId | String | 否 | 账户 ID指定要关联的现有账户 |
| contactId | String | 否 | 联系人 ID指定要关联的现有联系人 |
| opportunityId | String | 否 | 商机 ID指定要关联的现有商机 |
| overwriteLeadSource | Boolean | 否 | 是否覆盖线索来源,默认为 false |
| doNotCreateOpportunity | Boolean | 否 | 是否不创建商机,默认为 false |
| sendNotificationEmail | Boolean | 否 | 是否发送通知邮件,默认为 false |
#### 请求示例
```json
{
"leadId": "00Qxx0000001Gw2EAE",
"convertedStatus": "Qualified",
"accountId": "001xx0000001Gw2EAA",
"contactId": "003xx0000001Gw2EAA",
"opportunityId": "006xx0000001Gw2EAA",
"overwriteLeadSource": true,
"doNotCreateOpportunity": false,
"sendNotificationEmail": true
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 响应数据 |
| data.accountId | String | 转换后的账户 ID |
| data.contactId | String | 转换后的联系人 ID |
| data.opportunityId | String | 转换后的商机 ID |
| data.leadId | String | 原线索 ID |
| data.success | Boolean | 是否成功 |
| data.errors | Array | 错误信息列表 |
| data.errors[].message | String | 错误消息 |
| data.errors[].statusCode | String | 错误状态码 |
#### 成功示例
```json
{
"code": 200,
"msg": "线索转换成功",
"data": {
"accountId": "001xx0000001Gw2EAA",
"contactId": "003xx0000001Gw2EAA",
"opportunityId": "006xx0000001Gw2EAA",
"leadId": "00Qxx0000001Gw2EAE",
"success": true,
"errors": []
}
}
```
#### 失败示例
```json
{
"code": 200,
"msg": "线索转换失败",
"data": {
"accountId": null,
"contactId": null,
"opportunityId": null,
"leadId": "00Qxx0000001Gw2EAE",
"success": false,
"errors": [
{
"message": "Invalid lead status",
"statusCode": "INVALID_LEAD_STATUS"
}
]
}
}
```
---
### 2. 清空回收站
#### 接口说明
永久删除回收站中的记录。支持批量操作,最多 200 个记录。返回每个记录的删除结果,支持部分失败情况。
- **接口名称**EmptyRecycleBin
- **请求方式**POST
- **请求路径**`/partner/advanced/empty-recycle-bin`
- **权限要求**`@PreAuthorize("@ss.hasPermi('partner:advanced:emptyRecycleBin')")`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| ids | Array<String> | 是 | 记录 ID 列表,最多 200 个,每个 ID 格式为 18 位 Salesforce ID |
#### 请求示例
```json
{
"ids": [
"001xx0000001Gw2EAA",
"001xx0000001Gw3EAA",
"001xx0000001Gw4EAA"
]
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 响应数据 |
| data.results | Array | 结果列表 |
| data.results[].id | String | 记录 ID |
| data.results[].success | Boolean | 是否成功 |
| data.results[].errors | Array | 错误信息列表 |
| data.results[].errors[].message | String | 错误消息 |
| data.results[].errors[].statusCode | String | 错误状态码 |
| data.success | Boolean | 是否全部成功(部分失败时为 false |
| data.errors | Array | 整体错误信息列表 |
#### 成功示例
```json
{
"code": 200,
"msg": "清空回收站成功",
"data": {
"results": [
{
"id": "001xx0000001Gw2EAA",
"success": true,
"errors": []
},
{
"id": "001xx0000001Gw3EAA",
"success": true,
"errors": []
},
{
"id": "001xx0000001Gw4EAA",
"success": true,
"errors": []
}
],
"success": true,
"errors": []
}
}
```
#### 部分失败示例
```json
{
"code": 200,
"msg": "清空回收站部分失败",
"data": {
"results": [
{
"id": "001xx0000001Gw2EAA",
"success": true,
"errors": []
},
{
"id": "001xx0000001Gw3EAA",
"success": false,
"errors": [
{
"message": "Record not found in recycle bin",
"statusCode": "ENTITY_IS_NOT_IN_RECYCLE_BIN"
}
]
}
],
"success": false,
"errors": []
}
}
```
---
### 3. 流程提交
#### 接口说明
提交记录到审批流程,触发审批流程或其他自动化流程。支持添加审批评论。
- **接口名称**ProcessSubmitRequest
- **请求方式**POST
- **请求路径**`/partner/advanced/process-submit-request`
- **权限要求**`@PreAuthorize("@ss.hasPermi('partner:advanced:processSubmit')")`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| objectId | String | 是 | 对象 ID格式为 18 位 Salesforce ID |
| comments | String | 否 | 审批评论,可选 |
#### 请求示例
```json
{
"objectId": "001xx0000001Gw2EAA",
"comments": "请审批此记录"
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 响应数据 |
| data.processInstanceId | String | 流程实例 ID |
| data.success | Boolean | 是否成功 |
| data.errors | Array | 错误信息列表 |
| data.errors[].message | String | 错误消息 |
| data.errors[].statusCode | String | 错误状态码 |
#### 成功示例
```json
{
"code": 200,
"msg": "流程提交成功",
"data": {
"processInstanceId": "04gxx0000001Gw2EAA",
"success": true,
"errors": []
}
}
```
#### 失败示例
```json
{
"code": 200,
"msg": "流程提交失败",
"data": {
"processInstanceId": null,
"success": false,
"errors": [
{
"message": "Process not found",
"statusCode": "INVALID_OPERATION"
}
]
}
}
```
---
### 4. 获取用户信息
#### 接口说明
获取当前登录用户的详细信息。**注意:此接口复用认证和会话管理子需求的实现。**
- **接口名称**GetUserInfo
- **请求方式**GET
- **请求路径**`/partner/advanced/user-info`
- **权限要求**`@PreAuthorize("@ss.hasPermi('partner:advanced:userInfo')")`
#### 请求参数
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 响应数据 |
| data.userId | String | 用户 ID |
| data.userName | String | 用户名 |
| data.userFullName | String | 用户全名 |
| data.userEmail | String | 用户邮箱 |
| data.organizationId | String | 组织 ID |
| data.organizationName | String | 组织名称 |
| data.userLanguage | String | 用户语言 |
| data.userTimeZone | String | 用户时区 |
| data.currencySymbol | String | 货币符号 |
| data.success | Boolean | 是否成功 |
| data.errors | Array | 错误信息列表 |
#### 成功示例
```json
{
"code": 200,
"msg": "获取用户信息成功",
"data": {
"userId": "005xx0000001Gw2EAA",
"userName": "john.doe@example.com",
"userFullName": "John Doe",
"userEmail": "john.doe@example.com",
"organizationId": "00Dxx0000001Gw2EAA",
"organizationName": "Your Organization",
"userLanguage": "en_US",
"userTimeZone": "America/Los_Angeles",
"currencySymbol": "$",
"success": true,
"errors": []
}
}
```
---
### 5. 获取服务器时间戳
#### 接口说明
获取 Salesforce 服务器的当前时间戳,返回 ISO 8601 格式的时间戳和时区信息。
- **接口名称**GetServerTimestamp
- **请求方式**GET
- **请求路径**`/partner/advanced/server-timestamp`
- **权限要求**`@PreAuthorize("@ss.hasPermi('partner:advanced:serverTimestamp')")`
#### 请求参数
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 响应数据 |
| data.timestamp | String | 服务器时间戳ISO 8601 格式yyyy-MM-dd'T'HH:mm:ss.SSS'Z' |
| data.timeZone | String | 服务器时区 |
| data.success | Boolean | 是否成功 |
| data.errors | Array | 错误信息列表 |
#### 成功示例
```json
{
"code": 200,
"msg": "获取服务器时间戳成功",
"data": {
"timestamp": "2026-02-02T10:30:00.000Z",
"timeZone": "America/Los_Angeles",
"success": true,
"errors": []
}
}
```
## 错误码
| 错误码 | 错误消息 | 说明 |
|--------|----------|------|
| CANNOT_UPDATE_CONVERTED_LEAD | 无法更新已转换的线索 | 线索已被转换,无法再次转换 |
| INVALID_LEAD_ID | 无效的线索 ID | 线索 ID 格式不正确或线索不存在 |
| INVALID_ACCOUNT_ID | 无效的账户 ID | 账户 ID 格式不正确或账户不存在 |
| INVALID_CONTACT_ID | 无效的联系人 ID | 联系人 ID 格式不正确或联系人不存在 |
| INVALID_OPPORTUNITY_ID | 无效的商机 ID | 商机 ID 格式不正确或商机不存在 |
| INVALID_CONVERTED_STATUS | 无效的转换状态 | 转换状态不存在或无效 |
| INVALID_ID | 无效的记录 ID | 记录 ID 格式不正确或记录不存在 |
| ENTITY_IS_DELETED | 记录已删除 | 记录已被删除 |
| ENTITY_IS_NOT_IN_RECYCLE_BIN | 记录不在回收站中 | 记录不在回收站中,无法清空 |
| INVALID_OPERATION | 无效操作 | 该操作不支持或无效 |
| INSUFFICIENT_ACCESS | 权限不足 | 当前用户没有执行该操作的权限 |
| OPERATION_FAILED | 操作失败 | 操作执行失败 |
| PROCESS_SUBMISSION_FAILED | 流程提交失败 | 流程提交失败 |
| INVALID_OBJECT_ID | 无效的对象 ID | 对象 ID 格式不正确或对象不存在 |
## 注意事项
1. **线索转换**
- 线索转换后,原线索将被标记为已转换,无法再次转换
- 如果未指定 accountId、contactId、opportunityId系统将自动创建新记录
- overwriteLeadSource 为 true 时,将覆盖线索的来源字段
- doNotCreateOpportunity 为 true 时,将不创建商机
2. **清空回收站**
- 只能删除已在回收站中的记录
- 删除后记录将永久删除,无法恢复
- 最多支持 200 个记录同时删除
- 支持部分失败情况,返回每个记录的删除结果
3. **流程提交**
- 用于触发审批流程或其他自动化流程
- 返回流程实例 ID可用于查询流程状态
- 评论参数可选
4. **获取用户信息**
- 复用认证和会话管理子需求的实现
- 返回当前登录用户的详细信息
5. **获取服务器时间戳**
- 返回 ISO 8601 格式的时间戳
- 时区为 Salesforce 组织的时区
- 用于同步本地时间与服务器时间
## 相关文档
- [需求文档](../requirements/sub/2026-01-28-001-06-高级功能.md)
- [设计文档](../design/2026-02-02-006-高级功能-设计.md)
- [决策记录](../decisions/2026-02-02-006-ADR-高级功能技术选型.md)
- [变更日志](../changelog/2026-02-02-006-changelog.md)
- [复盘文档](../retros/2026-02-02-006-retro.md)