428 lines
12 KiB
Markdown
428 lines
12 KiB
Markdown
# 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)
|