# API 文档 - 转换线索 ## 元数据 - 需求编号:001 - 子需求编号:001-01 - 接口编号:001 - 创建时间:2026-02-02 - 创建人:AI Assistant - 状态:已完成 ## 接口概述 将 Salesforce 线索(Lead)转换为账户(Account)、联系人(Contact)和商机(Opportunity)。 ## 基本信息 - **功能描述**:转换线索为账户、联系人和商机 - **请求方式**:POST - **请求路径**:`/partner/advanced/convert-lead` - **权限要求**:`@PreAuthorize("@ss.hasPermi('partner:advanced:convertLead')")` ## 请求参数 ### 请求体(JSON) | 参数名 | 类型 | 必填 | 说明 | 示例值 | |--------|------|------|------|--------| | leadId | String | 是 | 线索 ID | 00Qxx0000001Gw2EAE | | convertedStatus | String | 是 | 转换状态 | Qualified | | accountId | String | 否 | 账户 ID(可选),如果不指定则自动创建新账户 | 001xx0000001Gw2EAA | | contactId | String | 否 | 联系人 ID(可选),如果不指定则自动创建新联系人 | 003xx0000001Gw2EAA | | opportunityId | String | 否 | 商机 ID(可选),如果不指定则自动创建新商机 | 006xx0000001Gw2EAA | | overwriteLeadSource | Boolean | 否 | 是否覆盖线索来源,默认 false | false | | doNotCreateOpportunity | Boolean | 否 | 是否不创建商机,默认 false | false | | sendNotificationEmail | Boolean | 否 | 是否发送通知邮件,默认 false | false | ### 请求示例 ```json { "leadId": "00Qxx0000001Gw2EAE", "convertedStatus": "Qualified", "accountId": "001xx0000001Gw2EAA", "contactId": "003xx0000001Gw2EAA", "opportunityId": "006xx0000001Gw2EAA", "overwriteLeadSource": false, "doNotCreateOpportunity": false, "sendNotificationEmail": false } ``` ## 响应参数 | 参数名 | 类型 | 说明 | |--------|------|------| | 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 | 错误信息列表 | ### 成功响应示例 ```json { "code": 200, "msg": "操作成功", "data": { "accountId": "001xx0000001Gw2EAA", "contactId": "003xx0000001Gw2EAA", "opportunityId": "006xx0000001Gw2EAA", "leadId": "00Qxx0000001Gw2EAE", "success": true, "errors": null } } ``` ### 失败响应示例 ```json { "code": 500, "msg": "线索转换失败", "data": { "accountId": null, "contactId": null, "opportunityId": null, "leadId": "00Qxx0000001Gw2EAE", "success": false, "errors": [ { "statusCode": "INVALID_ID_FIELD", "message": "Invalid ID field", "fields": ["leadId"] } ] } } ``` ## 错误码 | 错误码 | 说明 | 处理建议 | |--------|------|----------| | 200 | 操作成功 | - | | 400 | 请求参数错误 | 检查请求参数格式和必填项 | | 401 | 未登录或登录已过期 | 请重新登录 | | 403 | 无权限访问 | 请检查用户权限 | | 500 | 服务器内部错误 | 请联系管理员或稍后重试 | ## 注意事项 1. 线索转换后,原线索会被标记为已转换,不能再进行转换 2. 如果不指定 accountId、contactId 或 opportunityId,系统会自动创建新记录 3. convertedStatus 必须是 Salesforce 中配置的有效转换状态 4. 一次只能转换一个线索 5. 转换操作是原子性的,要么全部成功,要么全部失败 ## 相关文档 - [需求文档](../../requirements/2026-01-28-001-PartnerAPI源org实现.md) - [设计文档](../../design/2026-01-29-001-01-认证和会话管理-设计.md) - [决策记录](../../decisions/2026-01-29-001-01-ADR-认证和会话管理技术选型.md)