119 lines
5.4 KiB
SQL
119 lines
5.4 KiB
SQL
CREATE TABLE IF NOT EXISTS qipai_third_party_configs (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
tenant_id BIGINT UNSIGNED NOT NULL,
|
|
store_id BIGINT UNSIGNED NULL,
|
|
provider VARCHAR(32) NOT NULL,
|
|
mode VARCHAR(16) NOT NULL DEFAULT 'MANUAL',
|
|
enabled TINYINT(1) NOT NULL DEFAULT 1,
|
|
credential_ref VARCHAR(255) NOT NULL DEFAULT '',
|
|
settings JSON NOT NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)
|
|
ON UPDATE CURRENT_TIMESTAMP(3),
|
|
CONSTRAINT fk_qipai_third_party_config_tenant
|
|
FOREIGN KEY (tenant_id) REFERENCES qipai_tenants(id),
|
|
CONSTRAINT fk_qipai_third_party_config_store
|
|
FOREIGN KEY (store_id) REFERENCES qipai_stores(id),
|
|
UNIQUE KEY uq_qipai_third_party_config_scope (tenant_id, provider, store_id),
|
|
KEY idx_qipai_third_party_config_resolution (tenant_id, provider, enabled, store_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS qipai_third_party_mappings (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
tenant_id BIGINT UNSIGNED NOT NULL,
|
|
provider VARCHAR(32) NOT NULL,
|
|
resource_type VARCHAR(16) NOT NULL,
|
|
external_ref VARCHAR(128) NOT NULL,
|
|
local_resource_id BIGINT UNSIGNED NOT NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
CONSTRAINT fk_qipai_third_party_mapping_tenant
|
|
FOREIGN KEY (tenant_id) REFERENCES qipai_tenants(id),
|
|
UNIQUE KEY uq_qipai_third_party_mapping_external
|
|
(tenant_id, provider, resource_type, external_ref),
|
|
KEY idx_qipai_third_party_mapping_local
|
|
(tenant_id, provider, resource_type, local_resource_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS qipai_group_vouchers (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
tenant_id BIGINT UNSIGNED NOT NULL,
|
|
provider VARCHAR(32) NOT NULL,
|
|
voucher_hash CHAR(64) NOT NULL,
|
|
voucher_masked VARCHAR(64) NOT NULL,
|
|
external_product_id VARCHAR(128) NOT NULL DEFAULT '',
|
|
status VARCHAR(32) NOT NULL DEFAULT 'RECEIVED',
|
|
amount_cents INT UNSIGNED NOT NULL DEFAULT 0,
|
|
expires_at DATETIME(3) NULL,
|
|
redeemed_at DATETIME(3) NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
CONSTRAINT fk_qipai_group_voucher_tenant
|
|
FOREIGN KEY (tenant_id) REFERENCES qipai_tenants(id),
|
|
UNIQUE KEY uq_qipai_group_voucher_hash (tenant_id, provider, voucher_hash),
|
|
KEY idx_qipai_group_voucher_status (tenant_id, provider, status, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS qipai_group_redemptions (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
tenant_id BIGINT UNSIGNED NOT NULL,
|
|
voucher_id BIGINT UNSIGNED NOT NULL,
|
|
order_id BIGINT UNSIGNED NOT NULL,
|
|
store_id BIGINT UNSIGNED NOT NULL,
|
|
actor_id BIGINT UNSIGNED NULL,
|
|
redemption_mode VARCHAR(16) NOT NULL,
|
|
client_request_id VARCHAR(128) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
failure_code VARCHAR(64) NOT NULL DEFAULT '',
|
|
provider_response JSON NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
completed_at DATETIME(3) NULL,
|
|
CONSTRAINT fk_qipai_group_redemption_tenant
|
|
FOREIGN KEY (tenant_id) REFERENCES qipai_tenants(id),
|
|
CONSTRAINT fk_qipai_group_redemption_voucher
|
|
FOREIGN KEY (voucher_id) REFERENCES qipai_group_vouchers(id),
|
|
CONSTRAINT fk_qipai_group_redemption_order
|
|
FOREIGN KEY (order_id) REFERENCES qipai_orders(id),
|
|
CONSTRAINT fk_qipai_group_redemption_store
|
|
FOREIGN KEY (store_id) REFERENCES qipai_stores(id),
|
|
UNIQUE KEY uq_qipai_group_redemption_request (tenant_id, client_request_id),
|
|
UNIQUE KEY uq_qipai_group_redemption_voucher (tenant_id, voucher_id),
|
|
KEY idx_qipai_group_redemption_status (tenant_id, status, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS qipai_direct_bookings (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
tenant_id BIGINT UNSIGNED NOT NULL,
|
|
provider VARCHAR(32) NOT NULL,
|
|
event_id VARCHAR(128) NOT NULL,
|
|
external_booking_no VARCHAR(128) NOT NULL,
|
|
external_store_ref VARCHAR(128) NOT NULL,
|
|
external_room_ref VARCHAR(128) NOT NULL,
|
|
store_id BIGINT UNSIGNED NULL,
|
|
room_id BIGINT UNSIGNED NULL,
|
|
customer_ref_hash CHAR(64) NOT NULL DEFAULT '',
|
|
starts_at DATETIME(3) NOT NULL,
|
|
ends_at DATETIME(3) NOT NULL,
|
|
amount_cents INT UNSIGNED NOT NULL,
|
|
status VARCHAR(32) NOT NULL DEFAULT 'PENDING_MAPPING',
|
|
order_id BIGINT UNSIGNED NULL,
|
|
claimed_user_id BIGINT UNSIGNED NULL,
|
|
payload JSON NOT NULL,
|
|
failure_code VARCHAR(64) NOT NULL DEFAULT '',
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
claimed_at DATETIME(3) NULL,
|
|
CONSTRAINT fk_qipai_direct_booking_tenant
|
|
FOREIGN KEY (tenant_id) REFERENCES qipai_tenants(id),
|
|
CONSTRAINT fk_qipai_direct_booking_store
|
|
FOREIGN KEY (store_id) REFERENCES qipai_stores(id),
|
|
CONSTRAINT fk_qipai_direct_booking_room
|
|
FOREIGN KEY (room_id) REFERENCES qipai_rooms(id),
|
|
CONSTRAINT fk_qipai_direct_booking_order
|
|
FOREIGN KEY (order_id) REFERENCES qipai_orders(id),
|
|
UNIQUE KEY uq_qipai_direct_booking_event (tenant_id, provider, event_id),
|
|
UNIQUE KEY uq_qipai_direct_booking_no
|
|
(tenant_id, provider, external_booking_no),
|
|
KEY idx_qipai_direct_booking_status (tenant_id, provider, status, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
INSERT IGNORE INTO qipai_schema_migrations (version, name)
|
|
VALUES ('2026062217', 'm05c_third_party');
|