vr-shopxo-plugin/docs/MIGRATION_5DIM_SPEC.sql

121 lines
5.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Phase 3 P0 5 Spec Migration SQL Script
#
#
# 1.
# 2. Step 1 seat_map JSON rooms
# 3. Step 2 GoodsSpecType5 $vr-
# 4. Step 3 GoodsSpecValue SPEC_DIMS
#
# goods_id=112 ID=1
-- ============================================================
-- Step 1更新 seat_map JSON座位模板
-- ============================================================
-- 查看当前 seat_map
-- SELECT id, name, seat_map FROM vrt_vr_seat_templates WHERE id=1;
-- 将旧结构 flat sections/map/seats → 移入 rooms[0]
-- 注意:实际执行时需要根据当前数据进行转换
-- 示例转换(请根据实际数据调整):
-- UPDATE vrt_vr_seat_templates
-- SET seat_map = JSON_SET(
-- JSON_SET(
-- JSON_SET(
-- JSON_OBJECT(
-- 'venue', JSON_EXTRACT(seat_map, '$.venue'),
-- 'rooms', JSON_ARRAY(
-- JSON_OBJECT(
-- 'id', 'room_001',
-- 'name', '主厅',
-- 'sections', JSON_EXTRACT(seat_map, '$.sections'),
-- 'map', JSON_EXTRACT(seat_map, '$.map'),
-- 'seats', JSON_EXTRACT(seat_map, '$.seats')
-- )
-- )
-- ),
-- '$.sections', JSON_EXTRACT(seat_map, '$.sections'),
-- '$.map', JSON_EXTRACT(seat_map, '$.map'),
-- '$.seats', JSON_EXTRACT(seat_map, '$.seats')
-- ),
-- '$.rooms[0].sections', JSON_EXTRACT(seat_map, '$.sections'),
-- '$.rooms[0].map', JSON_EXTRACT(seat_map, '$.map'),
-- '$.rooms[0].seats', JSON_EXTRACT(seat_map, '$.seats')
-- ),
-- '$.rooms[0].id', 'room_001',
-- '$.rooms[0].name', '主厅'
-- )
-- WHERE id = 1;
-- ============================================================
-- Step 2重建 GoodsSpecType5维
-- ============================================================
-- 删除旧的 4 维记录
DELETE FROM vrt_goods_spec_type WHERE goods_id=112;
-- 插入新的 5 维记录(按 SPEC_DIMS 顺序)
INSERT INTO vrt_goods_spec_type (goods_id, name, value, add_time) VALUES
(112, '$vr-场次', '[{"name":"待选场次","images":""}]', UNIX_TIMESTAMP()),
(112, '$vr-场馆', '[{"name":"国家体育馆","images":""}]', UNIX_TIMESTAMP()),
(112, '$vr-演播室', '[{"name":"主厅","images":""}]', UNIX_TIMESTAMP()),
(112, '$vr-分区', '[{"name":"A区","images":""},{"name":"B区","images":""},{"name":"C区","images":""}]', UNIX_TIMESTAMP()),
(112, '$vr-座位号', '[{"name":"待选座位","images":""}]', UNIX_TIMESTAMP());
-- ============================================================
-- Step 3清空并重建 GoodsSpecValue
--
-- 当前 GoodsSpecValue 为 0 的根因:
-- BatchGenerate() 没有写入 name 字段关联 SPEC_DIMS
--
-- 修复后BatchGenerate() 会:
-- 1. 按 SPEC_DIMS 顺序写入 5 条 GoodsSpecValue
-- 2. 每条记录包含 name 字段关联维度
-- 3. buildSeatSpecMap() 通过 name 字段直接读取维度
-- ============================================================
-- 先清空旧的 GoodsSpecValue关联 goods_id=112
DELETE FROM vrt_goods_spec_value WHERE goods_id=112;
-- 如果需要手动重建(仅用于修复历史数据):
-- 注意:需要先确保 GoodsSpecBase 存在且有 seat_key
-- 示例:手动生成 GoodsSpecValue修复历史数据
-- 假设 GoodsSpecBase.id=1, seat_key='room_001_A_1'
--
-- INSERT INTO vrt_goods_spec_value (goods_id, goods_spec_base_id, name, value, md5_key, add_time) VALUES
-- (112, 1, '$vr-场次', '08:00-23:59', MD5('08:00-23:59'), UNIX_TIMESTAMP()),
-- (112, 1, '$vr-场馆', '国家体育馆', MD5('国家体育馆'), UNIX_TIMESTAMP()),
-- (112, 1, '$vr-演播室', '主厅', MD5('主厅'), UNIX_TIMESTAMP()),
-- (112, 1, '$vr-分区', '国家体育馆-主厅-A', MD5('国家体育馆-主厅-A'), UNIX_TIMESTAMP()),
-- (112, 1, '$vr-座位号', '国家体育馆-主厅-A-A1', MD5('国家体育馆-主厅-A-A1'), UNIX_TIMESTAMP());
-- ============================================================
-- 验证查询
-- ============================================================
-- 验证 GoodsSpecType应该有 5 条)
-- SELECT * FROM vrt_goods_spec_type WHERE goods_id=112 ORDER BY id;
-- 验证 GoodsSpecValue修复后应该 > 0
-- SELECT COUNT(*) FROM vrt_goods_spec_value WHERE goods_id=112;
-- 验证 seat_map JSON 结构(应该有 rooms[]
-- SELECT id, name, JSON_EXTRACT(seat_map, '$.rooms') FROM vrt_vr_seat_templates WHERE id=1;
-- ============================================================
-- 推荐:重新执行 BatchGenerate
-- ============================================================
-- 由于 BatchGenerate() 现在正确写入 GoodsSpecValue
-- 推荐执行以下 PHP 代码重建所有 SKU
--
-- \app\plugins\vr_ticket\service\SeatSkuService::BatchGenerate(
-- $goodsId = 112,
-- $seatTemplateId = 1,
-- $selectedRooms = [],
-- $selectedSections = [],
-- $sessions = [['start' => '08:00', 'end' => '23:59']]
-- );