# 商品创建到下单全流程梳理文档
## 📋 目录
- [业务流程图](#业务流程图)
- [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[取消订单⚠️
仅未付款]
E --> E2[全部退款⚠️
状态未确定]
E --> E3[导出订单⚠️
字段待确认]
E --> E4[导出发货单⚠️
字段待确认]
E --> E5[单个订单发货✅]
%% 批量发货需求
E --> F[批量发货需求❌]
F --> F1[导入发货单❌
功能未确定]
F --> F2[批量发货❌
功能未确定]
F --> F3[下载失败发货单❌
功能未确定]
%% 样式
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. **发货流程异常处理** - 增强系统稳定性
---
_本文档基于当前代码分析生成,实际实现状态以最新代码为准。_