183 lines
4.3 KiB
Markdown
183 lines
4.3 KiB
Markdown
|
|
# API 文档 - 批量删除记录
|
|||
|
|
|
|||
|
|
## 元数据
|
|||
|
|
- 需求编号:001
|
|||
|
|
- 子需求编号:001-01
|
|||
|
|
- 接口编号:003
|
|||
|
|
- 创建时间:2026-02-02
|
|||
|
|
- 创建人:AI Assistant
|
|||
|
|
- 状态:已完成
|
|||
|
|
|
|||
|
|
## 接口概述
|
|||
|
|
批量删除 Salesforce 记录,支持最多 1000 条记录,每批最多 200 条,自动分批处理。
|
|||
|
|
|
|||
|
|
## 基本信息
|
|||
|
|
|
|||
|
|
- **功能描述**:批量删除 Salesforce 记录
|
|||
|
|
- **请求方式**:POST
|
|||
|
|
- **请求路径**:`/partner/batch/delete`
|
|||
|
|
- **权限要求**:`@PreAuthorize("@ss.hasLogin()")`
|
|||
|
|
|
|||
|
|
## 请求参数
|
|||
|
|
|
|||
|
|
### 请求体(JSON)
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|
|||
|
|
|--------|------|------|------|--------|
|
|||
|
|
| objectType | String | 是 | 对象类型 | Account |
|
|||
|
|
| ids | Array[String] | 是 | 记录 ID 列表 | ["001xx...", "001xx..."] |
|
|||
|
|
| allOrNone | Boolean | 否 | 是否全部成功或全部失败,默认 false | false |
|
|||
|
|
| sleepTime | Long | 否 | 批次间休眠时间(毫秒),默认 100 | 100 |
|
|||
|
|
|
|||
|
|
### 请求示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"objectType": "Account",
|
|||
|
|
"ids": [
|
|||
|
|
"001xx0000001Gw2EAA",
|
|||
|
|
"001xx0000001Gw3EAA",
|
|||
|
|
"001xx0000001Gw4EAA"
|
|||
|
|
],
|
|||
|
|
"allOrNone": false,
|
|||
|
|
"sleepTime": 100
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 响应参数
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 说明 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| code | Integer | 状态码(200 成功,其他失败) |
|
|||
|
|
| msg | String | 提示信息 |
|
|||
|
|
| data | Object | 响应数据 |
|
|||
|
|
| data.success | Boolean | 是否全部成功 |
|
|||
|
|
| data.successCount | Integer | 成功数量 |
|
|||
|
|
| data.failureCount | Integer | 失败数量 |
|
|||
|
|
| data.totalCount | Integer | 总数量 |
|
|||
|
|
| data.results | Array | 结果列表 |
|
|||
|
|
| data.results[].success | Boolean | 是否成功 |
|
|||
|
|
| data.results[].id | String | 记录 ID |
|
|||
|
|
| data.results[].errors | Array | 错误列表 |
|
|||
|
|
| data.results[].index | Integer | 索引 |
|
|||
|
|
| data.errorMessage | String | 错误消息 |
|
|||
|
|
|
|||
|
|
### 成功响应示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"msg": "批量删除成功",
|
|||
|
|
"data": {
|
|||
|
|
"success": true,
|
|||
|
|
"successCount": 3,
|
|||
|
|
"failureCount": 0,
|
|||
|
|
"totalCount": 3,
|
|||
|
|
"results": [
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"id": "001xx0000001Gw2EAA",
|
|||
|
|
"errors": null,
|
|||
|
|
"index": 0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"id": "001xx0000001Gw3EAA",
|
|||
|
|
"errors": null,
|
|||
|
|
"index": 1
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"id": "001xx0000001Gw4EAA",
|
|||
|
|
"errors": null,
|
|||
|
|
"index": 2
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"errorMessage": null
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 部分失败响应示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"msg": "批量删除部分失败",
|
|||
|
|
"data": {
|
|||
|
|
"success": false,
|
|||
|
|
"successCount": 2,
|
|||
|
|
"failureCount": 1,
|
|||
|
|
"totalCount": 3,
|
|||
|
|
"results": [
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"id": "001xx0000001Gw2EAA",
|
|||
|
|
"errors": null,
|
|||
|
|
"index": 0
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"id": "001xx0000001Gw3EAA",
|
|||
|
|
"errors": null,
|
|||
|
|
"index": 1
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"success": false,
|
|||
|
|
"id": "001xx0000001Gw4EAA",
|
|||
|
|
"errors": [
|
|||
|
|
{
|
|||
|
|
"statusCode": "ENTITY_IS_DELETED",
|
|||
|
|
"message": "The entity is already deleted",
|
|||
|
|
"fields": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"index": 2
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"errorMessage": null
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 失败响应示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 500,
|
|||
|
|
"msg": "批量删除记录失败",
|
|||
|
|
"data": {
|
|||
|
|
"success": false,
|
|||
|
|
"successCount": 0,
|
|||
|
|
"failureCount": 0,
|
|||
|
|
"totalCount": 0,
|
|||
|
|
"results": null,
|
|||
|
|
"errorMessage": "Invalid object type: InvalidObject"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 错误码
|
|||
|
|
|
|||
|
|
| 错误码 | 说明 | 处理建议 |
|
|||
|
|
|--------|------|----------|
|
|||
|
|
| 200 | 操作成功 | - |
|
|||
|
|
| 400 | 请求参数错误 | 检查请求参数格式和必填项 |
|
|||
|
|
| 401 | 未登录或登录已过期 | 请重新登录 |
|
|||
|
|
| 500 | 服务器内部错误 | 请联系管理员或稍后重试 |
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. 单次最多删除 1000 条记录
|
|||
|
|
2. 每批最多 200 条记录,超过会自动分批
|
|||
|
|
3. 删除操作是永久性的,无法恢复
|
|||
|
|
4. allOrNone 为 true 时,任何一条记录失败都会导致整个操作失败
|
|||
|
|
5. sleepTime 用于控制批次间的间隔,避免 API 限流
|
|||
|
|
6. 删除操作需要记录的删除权限
|
|||
|
|
7. 某些记录可能因为关联关系或其他限制无法删除
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
- [需求文档](../../requirements/2026-01-28-001-PartnerAPI源org实现.md)
|
|||
|
|
- [设计文档](../../design/2026-01-29-001-01-认证和会话管理-设计.md)
|
|||
|
|
- [决策记录](../../decisions/2026-01-29-001-01-ADR-认证和会话管理技术选型.md)
|