peixue-dev/Archive/peidu-temp-files/docs/🔥紧急修复-状态检查问题-2026-01-23.md

2.0 KiB
Raw Blame History

🔥 紧急修复 - 状态检查问题 - 2026-01-23

问题分析

订单状态明明是4但后端检查时总是失败。可能的原因

  1. Integer比较问题 - 使用 != 比较Integer对象可能有问题
  2. 数据库字段类型 - status字段可能是其他类型
  3. MyBatis映射问题 - 映射时类型转换有问题

已修改的代码

修改了 ReviewServiceImpl.java 的状态检查逻辑:

// 修改前
if (order.getStatus() != 4) {
    throw new RuntimeException("订单未完成,无法评价");
}

// 修改后
log.info("订单状态检查 - 订单ID: {}, 状态值: {}, 状态类型: {}", 
    order.getId(), order.getStatus(), 
    order.getStatus() != null ? order.getStatus().getClass().getName() : "null");

if (order.getStatus() == null) {
    throw new RuntimeException("订单状态为空");
}

// 使用 equals 而不是 != 来比较
if (!Integer.valueOf(4).equals(order.getStatus())) {
    throw new RuntimeException("订单未完成,无法评价。当前状态:" + order.getStatus());
}

下一步操作

步骤1: 等待编译完成

Maven正在编译中...

步骤2: 重启后端服务

  • 在IDEA中停止后端
  • 重新启动后端

步骤3: 执行SQL确保数据正确

USE peixue;

UPDATE `order` 
SET status = 4, reviewed = 0 
WHERE id = 263;

SELECT id, order_no, status, reviewed FROM `order` WHERE id = 263;

步骤4: 重新测试

  1. 刷新前端(微信开发者工具点击"编译"
  2. 进入订单263详情
  3. 点击"去评价"
  4. 提交评价

步骤5: 查看后端日志

重点查看这行日志:

订单状态检查 - 订单ID: 263, 状态值: ?, 状态类型: ?

这会告诉我们:

  • status的实际值是什么
  • status的Java类型是什么Integer、String、Long等

如果还是失败

请提供后端日志中的这行信息:

订单状态检查 - 订单ID: 263, 状态值: ?, 状态类型: ?

这样我们就能知道真正的问题所在。

完成时间

2026-01-23 11:20