diff --git a/shopxo/app/plugins/vr_ticket/hook/AdminGoodsSaveHandle.php b/shopxo/app/plugins/vr_ticket/hook/AdminGoodsSaveHandle.php index 3c6c44e..d96477b 100644 --- a/shopxo/app/plugins/vr_ticket/hook/AdminGoodsSaveHandle.php +++ b/shopxo/app/plugins/vr_ticket/hook/AdminGoodsSaveHandle.php @@ -57,9 +57,14 @@ class AdminGoodsSaveHandle $goodsId = $params['goods_id'] ?? 0; if ($goodsId > 0 && ($data['item_type'] ?? '') === 'ticket') { - $rawConfig = $data['vr_goods_config'] ?? ''; + // 直接从数据库读 vr_goods_config(避免 $params['data'] 值拷贝的引用链问题) + $goodsRow = Db::name('Goods')->field('vr_goods_config')->find($goodsId); + $rawConfig = $goodsRow['vr_goods_config'] ?? ''; if (!empty($rawConfig)) { $configs = json_decode($rawConfig, true); + if (json_last_error() !== JSON_ERROR_NONE) { + $configs = null; + } if (is_array($configs) && !empty($configs)) { // 0) 填充 template_snapshot(前端没传、或 rooms 为空时兜底从 vr_seat_templates 读)