From 013916230e897131a1b6cbd87a08ca2d88234ae2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 5 Aug 2025 21:34:55 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E8=AE=A2=E5=8D=95?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/SHOP_ORDER_STATUS_FILTER_FIX.md | 110 ++++++++++++++++++
.../shop/mapper/xml/ShopOrderMapper.xml | 35 ++++++
2 files changed, 145 insertions(+)
create mode 100644 docs/SHOP_ORDER_STATUS_FILTER_FIX.md
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
+
+