# CRM线索转经销商功能开发计划

## 功能概述

将线索转化为正式经销商，创建经销商档案、迁移跟进记录、创建初始商机。

---

## 数据表设计

### crm_dealer（经销商表）

```sql
CREATE TABLE IF NOT EXISTS crm_dealer (
    dealer_id BIGINT NOT NULL COMMENT '经销商ID（主键）',
    tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
    customer_code VARCHAR(100) DEFAULT NULL COMMENT 'ERP客户编码（关联）',
    dealer_name VARCHAR(200) NOT NULL COMMENT '经销商名称',
    dealer_code VARCHAR(100) NOT NULL COMMENT '经销商编码',
    contact_name VARCHAR(100) DEFAULT NULL COMMENT '联系人',
    mobile VARCHAR(50) DEFAULT NULL COMMENT '手机',
    province VARCHAR(50) DEFAULT NULL COMMENT '省',
    city VARCHAR(50) DEFAULT NULL COMMENT '市',
    level VARCHAR(50) DEFAULT 'C' COMMENT '经销商等级（字典：crm_dealer_level）',
    lifecycle VARCHAR(50) DEFAULT 'active' COMMENT '生命周期（字典：crm_lifecycle）',
    signed_at DATETIME DEFAULT NULL COMMENT '签约时间',
    store_count INT DEFAULT 0 COMMENT '门店数',
    team_size INT DEFAULT 0 COMMENT '团队规模',
    total_order_amount DECIMAL(18,2) DEFAULT 0 COMMENT '累计订单金额',
    total_payment_amount DECIMAL(18,2) DEFAULT 0 COMMENT '累计回款金额',
    activity_score DECIMAL(5,2) DEFAULT 0 COMMENT '活跃评分',
    risk_score DECIMAL(5,2) DEFAULT 0 COMMENT '风险评分',
    owner_user_id BIGINT DEFAULT NULL COMMENT '负责人（关联 sys_user）',
    source_lead_id BIGINT DEFAULT NULL COMMENT '来源线索ID',
    create_dept BIGINT DEFAULT NULL COMMENT '创建部门',
    create_by BIGINT DEFAULT NULL COMMENT '创建人',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    update_by BIGINT DEFAULT NULL COMMENT '更新人',
    update_time DATETIME DEFAULT NULL COMMENT '更新时间',
    del_flag INT DEFAULT 0 COMMENT '删除标志',
    PRIMARY KEY (dealer_id),
    KEY idx_tenant_id (tenant_id),
    KEY idx_customer_code (customer_code),
    KEY idx_dealer_code (dealer_code),
    KEY idx_owner_user_id (owner_user_id),
    KEY idx_source_lead_id (source_lead_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='CRM经销商表';
```

---

## 后端接口设计

### 1. 线索转经销商

**API**: `POST /lead/convert`

**请求参数**:
```json
{
  "leadId": 1001,
  "dealerName": "XX贸易有限公司",
  "dealerCode": "DL20260001",
  "customerCode": "C001"  // 可选，ERP客户编码
}
```

**业务逻辑**:
1. 查询线索信息
2. 创建 `crm_dealer` 记录
3. 迁移跟进记录：`crm_lead_follow` → `crm_dealer_follow`
4. 创建初始商机：`crm_opportunity`
5. 更新线索状态为"已转化"
6. 返回经销商ID

---

## 前端UI设计

### 转经销商Dialog

```vue
<el-dialog v-model="showConvertDialog" title="线索转经销商" width="600px">
  <el-form :model="convertForm" label-width="120px">
    <el-form-item label="经销商名称" required>
      <el-input v-model="convertForm.dealerName" placeholder="默认为线索公司名称" />
    </el-form-item>
    <el-form-item label="经销商编码" required>
      <el-input v-model="convertForm.dealerCode" placeholder="请输入经销商编码" />
    </el-form-item>
    <el-form-item label="ERP客户编码">
      <el-input v-model="convertForm.customerCode" placeholder="可选，关联ERP客户" />
    </el-form-item>
    <el-form-item label="签约时间">
      <el-date-picker v-model="convertForm.signedAt" type="date" value-format="YYYY-MM-DD" />
    </el-form-item>
    <el-form-item label="经销商等级">
      <el-select v-model="convertForm.level">
        <el-option label="A级经销商" value="A" />
        <el-option label="B级经销商" value="B" />
        <el-option label="C级经销商" value="C" />
      </el-select>
    </el-form-item>
  </el-form>
  <template #footer>
    <el-button @click="showConvertDialog = false">取消</el-button>
    <el-button type="success" @click="submitConvert">确认转化</el-button>
  </template>
</el-dialog>
```

---

## 开发任务清单

### 后端任务

1. ✅ 创建数据表：`crm_dealer_init.sql`
2. ✅ Entity：`CrmDealer.java`
3. ✅ Bo：`CrmDealerBo.java`
4. ✅ Vo：`CrmDealerVo.java`
5. ✅ Mapper：`CrmDealerMapper.java`
6. ✅ Service：`ICrmDealerService.java` + `Impl`
7. ✅ Controller：转化接口 `POST /lead/convert`

### 前端任务

1. ✅ API定义：`convertLeadToDealer()` 函数
2. ✅ 转经销商Dialog UI
3. ✅ 转化成功后列表刷新

---

## 开发顺序

建议按以下顺序开发：

**Day 1-2**: 后端开发
- 数据表、Entity、Service、Controller

**Day 3**: 前端开发
- Dialog UI、API调用、转化逻辑

**Day 4**: 测试验证
- 线索转化流程测试
- 经销商数据验证

---

请按照此计划开始开发。