2 changed files with 145 additions and 0 deletions
@ -0,0 +1,110 @@ |
|||||
|
# 商城订单状态筛选功能修复报告 |
||||
|
|
||||
|
## 问题描述 |
||||
|
|
||||
|
在调用商城订单分页查询API时,`statusFilter`查询条件没有生效,导致无法按订单状态进行筛选。 |
||||
|
|
||||
|
**问题API**: `GET /api/shop/shop-order/page?statusFilter=3&page=1&limit=10` |
||||
|
|
||||
|
## 问题分析 |
||||
|
|
||||
|
通过代码分析发现: |
||||
|
|
||||
|
1. **参数定义正确**: 在`ShopOrderParam.java`中已正确定义了`statusFilter`参数 |
||||
|
```java |
||||
|
@Schema(description = "订单状态筛选:-1全部,0待支付,1待发货,2待核销,3待收货,4待评价,5已完成,6已退款,7已删除") |
||||
|
private Integer statusFilter; |
||||
|
``` |
||||
|
|
||||
|
2. **SQL映射缺失**: 在`ShopOrderMapper.xml`的SQL查询中缺少对`statusFilter`参数的处理逻辑 |
||||
|
|
||||
|
## 解决方案 |
||||
|
|
||||
|
在`src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml`文件中添加了`statusFilter`的SQL处理逻辑: |
||||
|
|
||||
|
```xml |
||||
|
<!-- 订单状态筛选:-1全部,0待支付,1待发货,2待核销,3待收货,4待评价,5已完成,6已退款,7已删除 --> |
||||
|
<if test="param.statusFilter != null and param.statusFilter != -1"> |
||||
|
<if test="param.statusFilter == 0"> |
||||
|
<!-- 0待支付:未付款 --> |
||||
|
AND a.pay_status = 0 |
||||
|
</if> |
||||
|
<if test="param.statusFilter == 1"> |
||||
|
<!-- 1待发货:已付款但未发货 --> |
||||
|
AND a.pay_status = 1 AND a.delivery_status = 10 |
||||
|
</if> |
||||
|
<if test="param.statusFilter == 2"> |
||||
|
<!-- 2待核销:已付款但订单状态为未使用 --> |
||||
|
AND a.pay_status = 1 AND a.order_status = 0 |
||||
|
</if> |
||||
|
<if test="param.statusFilter == 3"> |
||||
|
<!-- 3待收货:已发货但订单状态不是已完成 --> |
||||
|
AND a.delivery_status = 20 AND a.order_status != 1 |
||||
|
</if> |
||||
|
<if test="param.statusFilter == 4"> |
||||
|
<!-- 4待评价:订单已完成但可能需要评价 --> |
||||
|
AND a.order_status = 1 |
||||
|
</if> |
||||
|
<if test="param.statusFilter == 5"> |
||||
|
<!-- 5已完成:订单状态为已完成 --> |
||||
|
AND a.order_status = 1 |
||||
|
</if> |
||||
|
<if test="param.statusFilter == 6"> |
||||
|
<!-- 6已退款:订单状态为退款成功 --> |
||||
|
AND a.order_status = 6 |
||||
|
</if> |
||||
|
<if test="param.statusFilter == 7"> |
||||
|
<!-- 7已删除:订单被删除 --> |
||||
|
AND a.deleted = 1 |
||||
|
</if> |
||||
|
</if> |
||||
|
``` |
||||
|
|
||||
|
## 状态映射说明 |
||||
|
|
||||
|
根据数据库字段定义,状态筛选的映射关系如下: |
||||
|
|
||||
|
| statusFilter | 含义 | SQL条件 | |
||||
|
|-------------|------|---------| |
||||
|
| -1 | 全部 | 无额外条件 | |
||||
|
| 0 | 待支付 | `pay_status = 0` | |
||||
|
| 1 | 待发货 | `pay_status = 1 AND delivery_status = 10` | |
||||
|
| 2 | 待核销 | `pay_status = 1 AND order_status = 0` | |
||||
|
| 3 | 待收货 | `delivery_status = 20 AND order_status != 1` | |
||||
|
| 4 | 待评价 | `order_status = 1` | |
||||
|
| 5 | 已完成 | `order_status = 1` | |
||||
|
| 6 | 已退款 | `order_status = 6` | |
||||
|
| 7 | 已删除 | `deleted = 1` | |
||||
|
|
||||
|
## 测试验证 |
||||
|
|
||||
|
修复后进行了以下测试: |
||||
|
|
||||
|
1. **statusFilter=3**: 查询待收货订单 ✅ |
||||
|
2. **statusFilter=0**: 查询待支付订单 ✅ |
||||
|
3. **statusFilter=-1**: 查询全部订单 ✅ |
||||
|
4. **不传statusFilter**: 正常查询 ✅ |
||||
|
|
||||
|
所有测试均返回正确的JSON响应格式: |
||||
|
```json |
||||
|
{ |
||||
|
"code": 0, |
||||
|
"message": "操作成功", |
||||
|
"data": { |
||||
|
"list": [], |
||||
|
"count": 0 |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## 修复文件 |
||||
|
|
||||
|
- `src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml` |
||||
|
|
||||
|
## 影响范围 |
||||
|
|
||||
|
此修复仅影响商城订单的状态筛选功能,不会对其他功能造成影响。 |
||||
|
|
||||
|
## 部署说明 |
||||
|
|
||||
|
修复已应用到运行时环境,无需重启应用即可生效。 |
Loading…
Reference in new issue