[P0] vr_goods_config v3.0 落地实现 #13
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
背景
vr_goods_config JSON 格式已更新为 v3.0(见 docs/VR_GOODS_CONFIG_SPEC.md),需落地实现。
v3.0 最终结构
version: 3.0
template_id: 4(发布/编辑时读取最新 vr_seat_templates 的依据)
selected_rooms: ["room_id_xxx"](用户选择:启用哪些演播)
selected_sections: { "room_id_xxx": ["A", "B"] }(用户选择:每个房间选哪些分区)
sessions: [{ "start": "15:00", "end": "16:59" }](用户管理:场次列表)
template_snapshot: { venue: {...}, rooms: [...] }(发布时从 vr_seat_templates 读取并存储的快照)
关键设计说明
template_snapshot 的前端职责 vs 后端职责
实现进度
✅ Step 1:AdminGoodsSaveHandle — 保存时填充 template_snapshot
已实现(提交 bbea35d83):
❌ Step 2:BatchGenerate — 写入 extends
insertGetId 中加入 extends.seat_key = roomId_rowLabel_colNum
❌ Step 3:GetGoodsViewData — 重写
❌ Step 4:ticket_detail.html JS — seatKey 格式
seatKey = seat.roomId + '' + seat.rowLabel + '' + seat.colNum
关联文档
docs/VR_GOODS_CONFIG_SPEC.md(v3.0 完整规格,已更新)
docs/PHASE2_PLAN.md v3.0
Issue #13 进度更新 — 2026-04-20 10:40
本次修复 ✅
问题:
template_snapshot.rooms为空,但selected_rooms = ["room_1"]有值。根因:两重
empty(template_snapshot)对{"venue":{...},"rooms":[]}返回 false → DB 兜底被跳过修复(
AdminGoodsSaveHandle.php):empty(template_snapshot) || empty(template_snapshot[rooms])提交:
3f06f36e5✅ 已推送仍需处理
\think\xacade字符损坏Issue #13 二次修复 — 2026-04-20 12:05
新发现问题
模板 ID=5 的
template_snapshot.rooms仍为空,原因是:outputBase64根本不发送template_snapshot(JSON 结构里没有这个字段)empty(template_snapshot)对{venue:{...},rooms:[]}返回false,DB 兜底被跳过本次修复(合并远程冲突后的最终版本)
AdminGoodsSaveHandle.php —
save_thing_end时机:templateId > 0 && (selected_rooms 有值 || template_snapshot 为空 || template_snapshot.rooms 为空)$params[data]值拷贝问题)"room_0"和 DB 里存"0"互相匹配(PHP 7.xstrpos)AdminGoodsSave.php — 前端 config 加载时:
Set(validTemplateIds)过滤掉软删除模板的配置,消除幽灵配置提交:
da001797a✅ 已推送待测试