2.0 KiB
2.0 KiB
🔥 紧急修复 - 状态检查问题 - 2026-01-23
问题分析
订单状态明明是4,但后端检查时总是失败。可能的原因:
- Integer比较问题 - 使用
!=比较Integer对象可能有问题 - 数据库字段类型 - status字段可能是其他类型
- 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: 重新测试
- 刷新前端(微信开发者工具点击"编译")
- 进入订单263详情
- 点击"去评价"
- 提交评价
步骤5: 查看后端日志
重点查看这行日志:
订单状态检查 - 订单ID: 263, 状态值: ?, 状态类型: ?
这会告诉我们:
- status的实际值是什么
- status的Java类型是什么(Integer、String、Long等)
如果还是失败
请提供后端日志中的这行信息:
订单状态检查 - 订单ID: 263, 状态值: ?, 状态类型: ?
这样我们就能知道真正的问题所在。
完成时间
2026-01-23 11:20