Skip to content

问题现象

在平台后台或门店后台查看订单列表、订单详情或打印小票时,发现部分历史订单的商品标题、规格属性或图片缺失,或者商品信息显示为其他无关商品。


根本原因

  1. 订单商品快照表数据不一致:EBAOZU 在用户下单时会将当时的商品属性、单价、封面图等写入订单商品快照表(eb_store_order_cart_info)。若手动在数据库删减了该表数据或直接重置了 eb_store_order 但遗留了旧快照,会导致数据关联错位。
  2. 多环境 Redis 缓存 Key 碰撞:测试环境与正式环境使用同一个 Redis 实例且未配置独立缓存前缀(CACHE.PREFIX),导致读取到了其他站点的临时购物车或商品快照缓存。
  3. 数据库自增 ID 错位:在数据库中直接手动 TRUNCATE 或清理订单表却未同步清理 cart_info 关联表。

解决与预防规范

隔离 Redis 缓存前缀

检查项目根目录 .env 文件,确保每套环境拥有独一无二的缓存前缀:

ini
[CACHE]
DRIVER = redis
PREFIX = ebaozu_v4_prod_
TAG_PREFIX = tag_ebaozu_v4_

修改后重启 Swoole 守护进程并清理缓存:

bash
php think clear:cache
supervisorctl restart ebaozu_v4

正确测试与清理订单数据规范

若在开发测试阶段需要清空测试订单,必须同时清理订单主表与全部关联子表,切勿单张表清理:

  • eb_store_order(订单主表)
  • eb_store_order_cart_info(订单商品快照表)
  • eb_store_order_status(订单操作记录表)
  • eb_store_order_invoice(订单发票表)

承信租多门店租赁商城系统官方文档