修复:订单查询条件
This commit is contained in:
110
docs/SHOP_ORDER_STATUS_FILTER_FIX.md
Normal file
110
docs/SHOP_ORDER_STATUS_FILTER_FIX.md
Normal file
@@ -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`
|
||||
|
||||
## 影响范围
|
||||
|
||||
此修复仅影响商城订单的状态筛选功能,不会对其他功能造成影响。
|
||||
|
||||
## 部署说明
|
||||
|
||||
修复已应用到运行时环境,无需重启应用即可生效。
|
||||
@@ -216,6 +216,41 @@
|
||||
OR a.comments LIKE CONCAT('%', #{param.keywords}, '%')
|
||||
)
|
||||
</if>
|
||||
<!-- 订单状态筛选:-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>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user