收口V4 OWNER RATE目录数据

This commit is contained in:
andy
2026-07-21 19:11:57 +07:00
parent f3b6adda17
commit 6e97778633
19 changed files with 520 additions and 188 deletions

View File

@@ -0,0 +1,105 @@
-- M002 V4 OWNER RATE 目录收口:替换系统固定 Room Type / Rate Code 种子不清理账号、权限、SourceMessage 或 V4 业务数据。
DELETE FROM workflow_reservation_catalog_code
WHERE catalog_type IN ('ROOM_TYPE', 'RATE_CODE')
AND source_system = 'FIXED_SEED_IMPORT'
AND (
hotel_id IN ('HOTEL-TEST', 'HOTEL-DEV')
OR hotel_id IN (
SELECT hotel_id
FROM platform_hotel
WHERE hotel_status = 'ACTIVE'
)
);
INSERT INTO workflow_reservation_catalog_code (
id, hotel_id, catalog_type, code, display_name, status, source_system, external_id, sort_order,
catalog_version, last_synced_at, metadata_json, version, created_at, updated_at, logic_deleted_at,
logic_deleted_reason
)
SELECT
2500000000000000 + ROW_NUMBER() OVER (ORDER BY owner_rate_hotels.hotel_id, seed.sort_order),
owner_rate_hotels.hotel_id,
seed.catalog_type,
seed.code,
seed.display_name,
'ACTIVE',
'FIXED_SEED_IMPORT',
NULL,
seed.sort_order,
'owner-rate-20260721-v1',
NULL,
seed.metadata_json,
0,
'2026-07-21 00:00:00.000000',
'2026-07-21 00:00:00.000000',
NULL,
NULL
FROM (
SELECT hotel_id
FROM (
SELECT 'HOTEL-TEST' AS hotel_id
UNION ALL SELECT 'HOTEL-DEV'
UNION ALL
SELECT hotel_id
FROM platform_hotel
WHERE hotel_status = 'ACTIVE'
) raw_hotels
WHERE hotel_id IS NOT NULL
AND hotel_id <> ''
GROUP BY hotel_id
) owner_rate_hotels
JOIN (
SELECT 10 AS sort_order, 'ROOM_TYPE' AS catalog_type, 'RM2' AS code, 'RM2' AS display_name, '{"adult_capacity":2}' AS metadata_json
UNION ALL SELECT 20, 'ROOM_TYPE', 'RM3', 'RM3', '{"adult_capacity":2}'
UNION ALL SELECT 30, 'ROOM_TYPE', 'RM4', 'RM4', '{"adult_capacity":4}'
UNION ALL SELECT 40, 'ROOM_TYPE', 'SU1', 'SU1', '{"adult_capacity":2}'
UNION ALL SELECT 50, 'ROOM_TYPE', 'SU2', 'SU2', '{"adult_capacity":2}'
UNION ALL SELECT 60, 'ROOM_TYPE', 'SU3', 'SU3', '{"adult_capacity":4}'
UNION ALL SELECT 70, 'RATE_CODE', 'GRPA2-850UP', 'GRPA2-850UP', '{"pricing_available":false}'
UNION ALL SELECT 80, 'RATE_CODE', 'GRPA2-1275', 'GRPA2-1275', '{"pricing_available":false}'
UNION ALL SELECT 90, 'RATE_CODE', 'GRPA2-1400', 'GRPA2-1400', '{"pricing_available":false}'
UNION ALL SELECT 100, 'RATE_CODE', 'GRPA2-1800', 'GRPA2-1800', '{"pricing_available":false}'
UNION ALL SELECT 110, 'RATE_CODE', 'GRPA2-2400', 'GRPA2-2400', '{"pricing_available":false}'
UNION ALL SELECT 120, 'RATE_CODE', 'GRPA1-900', 'GRPA1-900', '{"pricing_available":false}'
UNION ALL SELECT 130, 'RATE_CODE', 'GRPA1-1400', 'GRPA1-1400', '{"pricing_available":false}'
UNION ALL SELECT 140, 'RATE_CODE', 'GRPA1-1300', 'GRPA1-1300', '{"pricing_available":false}'
UNION ALL SELECT 150, 'RATE_CODE', 'GRPA1-1150', 'GRPA1-1150', '{"pricing_available":false}'
UNION ALL SELECT 160, 'RATE_CODE', 'GRPA1-1725', 'GRPA1-1725', '{"pricing_available":false}'
UNION ALL SELECT 170, 'RATE_CODE', 'GRPA1-2300', 'GRPA1-2300', '{"pricing_available":false}'
UNION ALL SELECT 180, 'RATE_CODE', 'GRPA3-1200*B''FAST BUALUANG', 'GRPA3-1200*B''FAST BUALUANG', '{"pricing_available":false}'
UNION ALL SELECT 190, 'RATE_CODE', 'GRPA3-2000*B''FAST BUALUANG', 'GRPA3-2000*B''FAST BUALUANG', '{"pricing_available":false}'
UNION ALL SELECT 200, 'RATE_CODE', 'GRPA3-1400*B''FAST BUALUANG', 'GRPA3-1400*B''FAST BUALUANG', '{"pricing_available":false}'
UNION ALL SELECT 210, 'RATE_CODE', 'GRPA3-1800*B''FAST BUALUANG', 'GRPA3-1800*B''FAST BUALUANG', '{"pricing_available":false}'
UNION ALL SELECT 220, 'RATE_CODE', 'GRPA3-2400*B''FAST BUALUANG', 'GRPA3-2400*B''FAST BUALUANG', '{"pricing_available":false}'
UNION ALL SELECT 230, 'RATE_CODE', 'GRPA4-1200*B''FAST LEELA', 'GRPA4-1200*B''FAST LEELA', '{"pricing_available":false}'
UNION ALL SELECT 240, 'RATE_CODE', 'GRPA4-2000*B''FAST LEELA', 'GRPA4-2000*B''FAST LEELA', '{"pricing_available":false}'
UNION ALL SELECT 250, 'RATE_CODE', 'GRPA4-1400*B''FAST LEELA', 'GRPA4-1400*B''FAST LEELA', '{"pricing_available":false}'
UNION ALL SELECT 260, 'RATE_CODE', 'GRPA4-1800*B''FAST LEELA', 'GRPA4-1800*B''FAST LEELA', '{"pricing_available":false}'
UNION ALL SELECT 270, 'RATE_CODE', 'GRPA4-2400*B''FAST LEELA', 'GRPA4-2400*B''FAST LEELA', '{"pricing_available":false}'
UNION ALL SELECT 280, 'RATE_CODE', 'WHO1-850UP', 'WHO1-850UP', '{"pricing_available":false}'
UNION ALL SELECT 290, 'RATE_CODE', 'WHO1-1275', 'WHO1-1275', '{"pricing_available":false}'
UNION ALL SELECT 300, 'RATE_CODE', 'WHO1-1400', 'WHO1-1400', '{"pricing_available":false}'
UNION ALL SELECT 310, 'RATE_CODE', 'WHO1-1800', 'WHO1-1800', '{"pricing_available":false}'
UNION ALL SELECT 320, 'RATE_CODE', 'WHO1-2400', 'WHO1-2400', '{"pricing_available":false}'
UNION ALL SELECT 330, 'RATE_CODE', 'GRP1-900', 'GRP1-900', '{"pricing_available":false}'
UNION ALL SELECT 340, 'RATE_CODE', 'GRP1-1400', 'GRP1-1400', '{"pricing_available":false}'
UNION ALL SELECT 350, 'RATE_CODE', 'GRP1-1300', 'GRP1-1300', '{"pricing_available":false}'
UNION ALL SELECT 360, 'RATE_CODE', 'GRP1-1800', 'GRP1-1800', '{"pricing_available":false}'
UNION ALL SELECT 370, 'RATE_CODE', 'GRP1-2400', 'GRP1-2400', '{"pricing_available":false}'
UNION ALL SELECT 380, 'RATE_CODE', 'WHO2-1100', 'WHO2-1100', '{"pricing_available":false}'
UNION ALL SELECT 390, 'RATE_CODE', 'WHO2-1600', 'WHO2-1600', '{"pricing_available":false}'
UNION ALL SELECT 400, 'RATE_CODE', 'WHO2-1400', 'WHO2-1400', '{"pricing_available":false}'
UNION ALL SELECT 410, 'RATE_CODE', 'WHO2-1800', 'WHO2-1800', '{"pricing_available":false}'
UNION ALL SELECT 420, 'RATE_CODE', 'WHO2-2400', 'WHO2-2400', '{"pricing_available":false}'
UNION ALL SELECT 430, 'RATE_CODE', 'WHO3-1200', 'WHO3-1200', '{"pricing_available":false}'
UNION ALL SELECT 440, 'RATE_CODE', 'WHO3-1800', 'WHO3-1800', '{"pricing_available":false}'
UNION ALL SELECT 450, 'RATE_CODE', 'WHO3-1400', 'WHO3-1400', '{"pricing_available":false}'
UNION ALL SELECT 460, 'RATE_CODE', 'WHO3-2400', 'WHO3-2400', '{"pricing_available":false}'
) seed ON 1 = 1
WHERE NOT EXISTS (
SELECT 1
FROM workflow_reservation_catalog_code existing
WHERE existing.hotel_id = owner_rate_hotels.hotel_id
AND existing.catalog_type = seed.catalog_type
AND existing.code = seed.code
);