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