diff --git a/docs/SHOP_ORDER_STATUS_FILTER_FIX.md b/docs/SHOP_ORDER_STATUS_FILTER_FIX.md new file mode 100644 index 0000000..6cf1d2b --- /dev/null +++ b/docs/SHOP_ORDER_STATUS_FILTER_FIX.md @@ -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 + + + + + AND a.pay_status = 0 + + + + AND a.pay_status = 1 AND a.delivery_status = 10 + + + + AND a.pay_status = 1 AND a.order_status = 0 + + + + AND a.delivery_status = 20 AND a.order_status != 1 + + + + AND a.order_status = 1 + + + + AND a.order_status = 1 + + + + AND a.order_status = 6 + + + + AND a.deleted = 1 + + +``` + +## 状态映射说明 + +根据数据库字段定义,状态筛选的映射关系如下: + +| 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` + +## 影响范围 + +此修复仅影响商城订单的状态筛选功能,不会对其他功能造成影响。 + +## 部署说明 + +修复已应用到运行时环境,无需重启应用即可生效。 diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml index 316089c..1c87e30 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml @@ -216,6 +216,41 @@ OR a.comments LIKE CONCAT('%', #{param.keywords}, '%') ) + + + + + AND a.pay_status = 0 + + + + AND a.pay_status = 1 AND a.delivery_status = 10 + + + + AND a.pay_status = 1 AND a.order_status = 0 + + + + AND a.delivery_status = 20 AND a.order_status != 1 + + + + AND a.order_status = 1 + + + + AND a.order_status = 1 + + + + AND a.order_status = 6 + + + + AND a.deleted = 1 + +