# 商品创建到下单全流程梳理文档

## 📋 目录

- [业务流程图](#业务流程图)
- [1. 商品管理模块](#1-商品管理模块)
- [2. 拼团活动模块](#2-拼团活动模块)
- [3. 订单管理模块](#3-订单管理模块)
- [4. 订单操作模块](#4-订单操作模块)
- [5. 发货处理流程](#5-发货处理流程)
- [6. 功能实现状态总结](#6-功能实现状态总结)

---

## 业务流程图

### 整体业务流程

```mermaid
graph TD
    A[开始] --> B[商品管理模块]

    %% 商品管理
    B --> B1[创建商品分类✅]
    B --> B2[创建商品✅]
    B2 --> B21[第一步: 商品信息✅]
    B21 --> B22[第二步: 商品属性✅]
    B22 --> B23[第三步: 提交商品✅]

    %% 拼团活动
    B23 --> C[拼团活动模块]
    C --> C1[拼团活动列表✅]
    C --> C2[创建拼团活动✅]
    C2 --> C3[设置活动商品全流程✅]
    C3 --> C31[获取活动商品✅]
    C3 --> C32[添加商品到活动✅]
    C3 --> C33[移除商品✅]

    %% 订单管理
    C32 --> D[订单管理模块]
    D --> D1[订单列表查询✅]
    D --> D2[订单详情查询✅]
    D2 --> D3[订单轨迹✅]
    D2 --> D4[基本信息✅]
    D2 --> D5[商品信息✅]
    D2 --> D6[收货信息✅]
    D2 --> D7[拼团信息✅]

    %% 订单操作
    D --> E[订单操作模块]
    E --> E1[取消订单⚠️<br/>仅未付款]
    E --> E2[全部退款⚠️<br/>状态未确定]
    E --> E3[导出订单⚠️<br/>字段待确认]
    E --> E4[导出发货单⚠️<br/>字段待确认]
    E --> E5[单个订单发货✅]

    %% 批量发货需求
    E --> F[批量发货需求❌]
    F --> F1[导入发货单❌<br/>功能未确定]
    F --> F2[批量发货❌<br/>功能未确定]
    F --> F3[下载失败发货单❌<br/>功能未确定]

    %% 样式
    classDef implemented fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
    classDef notImplemented fill:#ffebee,stroke:#b71c1c,stroke-width:2px
    classDef uncertain fill:#fff3e0,stroke:#e65100,stroke-width:2px

    class B1,B2,B21,B22,B23,C1,C2,C3,C31,C32,C33,D1,D2,D3,D4,D5,D6,D7,E5 implemented
    class F,F1,F2,F3 notImplemented
    class E1,E2,E3,E4 uncertain
```

### 接口详细信息表

| 模块 | 功能 | 接口 | 方法 | 关键参数 | 状态 |
| --- | --- | --- | --- | --- | --- |
| 商品管理 | 创建商品分类 | `mall/category` | POST | `{name, parentId, sort, status}` | ✅ |
| 商品管理 | 创建商品 | `mall/product` | POST | `{cateId, storeName, price, stock}` | ✅ |
| 拼团活动 | 活动列表 | `mall/flash/activity/list` | POST | `{page, size, status}` | ✅ |
| 拼团活动 | 创建活动 | `mall/flash/activity` | POST | `{name, startTime, endTime, content}` | ✅ |
| 拼团活动 | 获取活动商品 | `mall/combination/getActivityProductIds` | GET | `{activityId}` | ✅ |
| 拼团活动 | 添加商品 | `mall/combination/addActivityProduct` | POST | `{activityId, productId, groupPrice}` | ✅ |
| 拼团活动 | 移除商品 | `mall/combination/removeActivityProduct` | POST | `{activityId, productId}` | ✅ |
| 订单管理 | 订单列表 | `mall/order/list` | POST | `{page, size, status, orderId}` | ✅ |
| 订单管理 | 订单详情 | `mall/order/detail` | GET | `{id}` | ✅ |
| 订单管理 | 拼团信息 | `mall/pink/orderPink` | GET | `{id}` | ✅ |
| 订单操作 | 取消订单 | `mall/order/cancel` | POST | `{id}` | ✅ (仅未付款) |
| 订单操作 | 全部退款 | `mall/order/refund` | POST | `{id}` | ✅ (状态未确定) |
| 订单操作 | 导出订单 | `mall/order/export` | GET | `{status, startTime, endTime}` | ✅ (字段待确认) |
| 订单操作 | 导出发货单 | `mall/order/export` | GET | `{status: 5, format: "delivery"}` | ✅ (字段待确认) |
| 订单操作 | 导入发货单 | `shop/admin/order/order/dispatch` | POST | `FormData: {action, express, file}` | ❌ (未确定) |
| 订单操作 | 批量发货 | `mall/order/batchDelivery` | POST | `{order_ids, action}` | ❌ (未确定) |
| 订单操作 | 单个发货 | `mall/order/batchDelivery` | POST | `{order_id, order_item_ids, action, express}` | ✅ |

### 流程说明

- **绿色节点** ✅：已实现功能
- **红色节点** ❌：未实现功能，需要开发
- **API节点**：包含具体的接口信息和参数

---

## 1. 商品管理模块

### 1.1 创建商品分类

- **功能状态**: ✅ 已实现
- **接口**: `mall/category`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "name": "分类名称",
    "parentId": "父分类ID",
    "sort": "排序",
    "status": "状态"
  }
  ```

### 1.2 创建商品 - 三步流程

#### 第一步：商品信息

- **功能状态**: ✅ 已实现
- **包含字段**:
  ```json
  {
    "cateId": "商品分类ID",
    "storeName": "商品名称",
    "keyword": "副标题",
    "image": "商品主图"
  }
  ```

#### 第二步：商品属性

- **功能状态**: ✅ 已实现
- **包含字段**:
  ```json
  {
    "price": "商品价格",
    "otPrice": "原价",
    "stock": "库存",
    "spec": "规格信息",
    "attr": "属性信息"
  }
  ```

#### 第三步：提交商品

- **功能状态**: ✅ 已实现
- **接口**: `mall/product`
- **请求方法**: `POST`
- **请求参数**: 完整商品数据（包含前两步所有字段）

#### 商品创建示例数据

```json
{
  "id": "",
  "cateId": "6",
  "storeName": "测试商品",
  "keyword": "测试标题",
  "itemBrand": "测试品牌",
  "storeInfo": "测试介绍",
  "itemNumber": "",
  "price": "",
  "otPrice": "",
  "stock": "",
  "stockThreshold": "",
  "isShow": 0,
  "itemSupplier": "测试供应商",
  "sort": 0,
  "cost": "",
  "vipPrice": "",
  "image": "http://124.220.229.80:9098/img/2025/08/18/201003a5e06841bdbb5b40444e12c29d.png",
  "sliderImage": "http://124.220.229.80:9098/img/2025/08/18/25c2af8679a54f29b0d96de4ffca6b30.png",
  "flatPattern": "http://124.220.229.80:9098/img/2025/08/18/8a23f3e53bc34069b7d20a80d29f26d8.png",
  "specType": 1,
  "skus": [
    {
      "id": 0,
      "temp_id": 1,
      "name": "颜色",
      "batchId": "",
      "pid": 0,
      "children": [
        {
          "id": 0,
          "temp_id": 1,
          "name": "红色",
          "pid": 0,
          "imageList": [
            "http://124.220.229.80:9098/img/2025/08/18/6b7a540642694495b247bf96384ff078.png"
          ]
        },
        {
          "id": 0,
          "temp_id": 2,
          "name": "蓝色",
          "pid": 0,
          "imageList": [
            "http://124.220.229.80:9098/img/2025/08/18/c006f84a33bc47d09cb6c5fa713c937f.png"
          ]
        }
      ]
    },
    {
      "id": 0,
      "temp_id": 4,
      "name": "尺寸",
      "batchId": "",
      "pid": 0,
      "children": [
        {
          "id": 0,
          "temp_id": 3,
          "name": "S",
          "pid": 0,
          "imageList": []
        },
        {
          "id": 0,
          "temp_id": 4,
          "name": "M",
          "pid": 0,
          "imageList": []
        }
      ]
    }
  ],
  "sku_prices": [
    {
      "id": 0,
      "temp_id": 1,
      "goods_sku_ids": "",
      "goods_id": 0,
      "weigh": 0,
      "image": "",
      "imageList": [],
      "stock": "50",
      "stockThreshold": 0,
      "price": "10",
      "otPrice": "20",
      "skuCode": "",
      "goods_sku_text": ["红色", "S"],
      "goods_sku_temp_ids": [1, 3]
    }
  ],
  "attrValue": [
    {
      "id": 0,
      "image": "",
      "price": "10",
      "otPrice": "20",
      "stock": "50",
      "skuCode": "",
      "stockThreshold": 0,
      "attrValue": "{\"颜色\":\"红色\",\"尺寸\":\"S\"}",
      "颜色": "红色",
      "尺寸": "S",
      "productId": 0
    }
  ],
  "attr": [
    {
      "id": 0,
      "attrName": "颜色",
      "attrValues": "红色,蓝色",
      "attrImgValues": [
        {
          "name": "红色",
          "img": "http://124.220.229.80:9098/img/2025/08/18/6b7a540642694495b247bf96384ff078.png"
        },
        {
          "name": "蓝色",
          "img": "http://124.220.229.80:9098/img/2025/08/18/c006f84a33bc47d09cb6c5fa713c937f.png"
        }
      ]
    },
    {
      "id": 0,
      "attrName": "尺寸",
      "attrValues": "S,M",
      "attrImgValues": [
        {
          "name": "S",
          "img": ""
        },
        {
          "name": "M",
          "img": ""
        }
      ]
    }
  ]
}
```

---

## 2. 拼团活动模块

### 2.1 拼团活动列表

- **功能状态**: ✅ 已实现
- **接口**: `mall/flash/activity/list`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "page": "页码",
    "size": "每页数量",
    "status": "活动状态（0:待开始, 1:进行中, 2:已结束）"
  }
  ```
- **功能说明**: 支持按状态筛选（全部、待开始、进行中、已结束）

### 2.2 创建拼团活动

- **功能状态**: ✅ 已实现
- **接口**: `mall/flash/activity`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "name": "活动名称",
    "startTime": "开始时间",
    "endTime": "结束时间",
    "content": {
      "groupNumber": "成团默认人数",
      "countdownTime": "开团倒计时结束时间"
    }
  }
  ```

### 2.3 设置活动商品全流程

#### 第一步：进入活动详情

- **功能状态**: ✅ 已实现
- **操作**: 从拼团活动列表点击"设置商品"按钮

#### 第二步：选择商品

- **功能状态**: ✅ 已实现
- **接口**: `mall/combination/getActivityProductIds`
- **请求方法**: `GET`
- **请求参数**: `{activityId: "活动ID"}`
- **功能说明**: 获取已设置的商品列表

#### 第三步：添加商品到活动

- **功能状态**: ✅ 已实现
- **接口**: `mall/combination/addActivityProduct`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "activityId": "活动ID",
    "productId": "商品ID",
    "groupPrice": "拼团价格",
    "groupNumber": "成团人数"
  }
  ```

#### 第四步：移除商品

- **功能状态**: ✅ 已实现
- **接口**: `mall/combination/removeActivityProduct`
- **请求方法**: `POST`
- **请求参数**: `{activityId: "活动ID", productId: "商品ID"}`

---

## 3. 订单管理模块

### 3.1 订单列表查询

- **功能状态**: ✅ 已实现
- **接口**: `mall/order/list`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "page": "页码",
    "size": "每页数量",
    "status": "订单状态",
    "orderId": "订单ID",
    "userPhone": "用户手机号",
    "startTime": "开始时间",
    "endTime": "结束时间"
  }
  ```

### 3.2 订单详情查询

- **功能状态**: ✅ 已实现
- **接口**: `mall/order/detail`
- **请求方法**: `GET`
- **请求参数**:
  ```json
  {
    "id": "订单ID"
  }
  ```

### 3.3 订单详情包含信息

#### 订单轨迹信息

- **功能状态**: ✅ 已实现
- **数据结构**:
  ```json
  {
    "orderStatusVO": [
      {
        "status": "状态码",
        "statusText": "状态文本",
        "createTime": "创建时间"
      }
    ]
  }
  ```

#### 基本信息

- **功能状态**: ✅ 已实现
- **数据结构**:
  ```json
  {
    "orderId": "订单编号",
    "status": "订单状态",
    "pinkStatus": "拼团状态",
    "totalPrice": "全部金额",
    "payTime": "支付时间",
    "createTime": "创建时间"
  }
  ```

#### 商品信息

- **功能状态**: ✅ 已实现
- **数据结构**:
  ```json
  {
    "productName": "商品名称",
    "productImage": "商品图片",
    "price": "商品价格",
    "num": "购买数量",
    "totalPrice": "总价"
  }
  ```

#### 收货信息

- **功能状态**: ✅ 已实现
- **数据结构**:
  ```json
  {
    "realName": "收货人姓名",
    "userPhone": "收货人电话",
    "userAddress": "收货地址",
    "mark": "备注"
  }
  ```

#### 拼团信息

- **功能状态**: ✅ 已实现
- **接口**: `mall/pink/orderPink`
- **请求方法**: `GET`
- **请求参数**:
  ```json
  {
    "id": "订单ID"
  }
  ```

---

## 4. 订单操作模块

### 4.1 取消订单

- **功能状态**: ✅ 已实现
- **接口**: `mall/order/cancel`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "id": "订单ID(逗号分隔)"
  }
  ```
- **状态限制**: ⚠️ 只有用户未付款的订单可以取消

### 4.2 全部退款

- **功能状态**: ✅ 已实现
- **接口**: `mall/order/refund`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "id": "订单ID(逗号分隔)"
  }
  ```
- **状态限制**: ❓ 退款按钮执行状态未确定

### 4.3 导出订单

- **功能状态**: ✅ 已实现
- **接口**: `mall/order/export`
- **请求方法**: `GET`
- **请求参数**:
  ```json
  {
    "status": "订单状态",
    "startTime": "开始时间",
    "endTime": "结束时间"
  }
  ```
- **注意事项**: ❓ 后端Excel表格字段是否符合产品要求未确定，目前只是能导出Excel表格

### 4.4 导出发货单

- **功能状态**: ✅ 已实现
- **接口**: `mall/order/export`
- **请求方法**: `GET`
- **请求参数**:
  ```json
  {
    "status": 5,
    "format": "delivery"
  }
  ```
- **注意事项**: ❓ 后端Excel表格字段是否符合产品要求未确定，目前只是能导出Excel表格

### 4.5 导入发货单

- **功能状态**: ❌ **未实现**
- **接口**: `shop/admin/order/order/dispatch`
- **请求方法**: `POST`
- **Content-Type**: `multipart/form-data`
- **请求参数**:
  ```json
  {
    "action": "multiple",
    "express": {
      "name": "快递公司名称",
      "code": "快递公司代码"
    },
    "file": "Excel文件"
  }
  ```

### 4.6 批量发货

- **功能状态**: ❌ **未确认接入**
- **接口**: `mall/order/batchDelivery`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "order_ids": ["订单ID数组"],
    "action": "multiple"
  }
  ```

---

## 5. 发货处理流程

### 5.1 单个订单发货

- **功能状态**: ✅ 已实现
- **接口**: `mall/order/batchDelivery`
- **请求方法**: `POST`
- **请求参数**:
  ```json
  {
    "order_id": "订单ID",
    "order_item_ids": ["订单项ID数组"],
    "action": "confirm",
    "express": {
      "name": "快递公司名称",
      "code": "快递公司代码",
      "no": "快递单号"
    }
  }
  ```
- **功能说明**: 简单的单个订单发货功能，更新订单状态为已发货

### 5.2 批量发货相关功能

#### 导入发货单

- **功能状态**: ❌ **未确定**
- **接口**: `shop/admin/order/order/dispatch`
- **说明**: 功能未确定实现状态

#### 批量发货

- **功能状态**: ❌ **未确定**
- **接口**: `mall/order/batchDelivery`
- **说明**: 功能未确定实现状态

#### 下载失败发货单

- **功能状态**: ❌ **未确定**
- **说明**: 功能未确定实现状态

---

## 6. 功能实现状态总结

### ✅ 已实现功能（90%）

#### 商品管理

- [x] 商品分类创建
- [x] 商品创建（三步流程）
- [x] 商品列表查询
- [x] 批量上下架

#### 拼团活动

- [x] 拼团活动创建
- [x] 活动商品设置
- [x] 活动列表查询

#### 订单管理

- [x] 订单列表查询
- [x] 订单详情查询
- [x] 订单轨迹信息
- [x] 基本信息展示
- [x] 商品信息展示
- [x] 收货信息展示
- [x] 拼团信息查询

#### 订单操作

- [x] 取消订单
- [x] 全部退款
- [x] 导出订单
- [x] 导出发货单

#### 发货流程

- [x] 循环处理订单
- [x] 单个订单发货
- [x] 发货结果统计
- [x] 成功/失败状态更新

### ❌ 未实现功能（10%）

#### 关键缺失功能

1. **导入发货单功能**
   - 接口：`shop/admin/order/order/dispatch`
   - 状态：未完整实现

2. **批量发货接口对接**
   - 接口：`mall/order/batchDelivery`
   - 状态：未确认接入

3. **失败Excel导出**
   - 功能：发货失败后生成Excel文件并返回下载链接
   - 状态：未实现

4. **失败原因标注**
   - 功能：在Excel中标注具体失败原因
   - 状态：未实现

### 🎯 关键需求确认

#### 山哥的核心要求

> 导入发货单时，有失败的订单会返回失败的Excel表格链接，并且标注失败原因

#### 后端需要提供

1. 失败Excel文件的生成机制
2. 下载链接返回机制
3. 失败原因的详细标注功能

#### 前端需要实现

1. 完善导入发货单功能
2. 处理失败Excel下载链接
3. 显示失败原因给用户

---

## 📊 开发优先级建议

### 高优先级（必须实现）

1. **导入发货单功能** - 核心业务功能
2. **失败Excel导出** - 山哥明确要求
3. **批量发货接口对接** - 确保功能完整性

### 中优先级（建议实现）

1. **失败原因标注优化** - 提升用户体验
2. **发货流程异常处理** - 增强系统稳定性

---

_本文档基于当前代码分析生成，实际实现状态以最新代码为准。_
