SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE IF NOT EXISTS hyapp_wallet DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE hyapp_wallet; CREATE TABLE IF NOT EXISTS wallet_accounts ( user_id BIGINT NOT NULL, asset_type VARCHAR(32) NOT NULL, available_amount BIGINT NOT NULL, frozen_amount BIGINT NOT NULL, version BIGINT NOT NULL, created_at_ms BIGINT NOT NULL, updated_at_ms BIGINT NOT NULL, PRIMARY KEY (user_id, asset_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS wallet_transactions ( transaction_id VARCHAR(96) NOT NULL PRIMARY KEY, command_id VARCHAR(128) NOT NULL, biz_type VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, request_hash VARCHAR(128) NOT NULL, external_ref VARCHAR(128) NOT NULL DEFAULT '', metadata_json JSON NULL, created_at_ms BIGINT NOT NULL, updated_at_ms BIGINT NOT NULL, UNIQUE KEY uk_wallet_tx_command (command_id), KEY idx_wallet_tx_biz_time (biz_type, created_at_ms), KEY idx_wallet_tx_external_ref (external_ref) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS wallet_entries ( entry_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, transaction_id VARCHAR(96) NOT NULL, user_id BIGINT NOT NULL, asset_type VARCHAR(32) NOT NULL, available_delta BIGINT NOT NULL, frozen_delta BIGINT NOT NULL, available_after BIGINT NOT NULL, frozen_after BIGINT NOT NULL, counterparty_user_id BIGINT NOT NULL DEFAULT 0, room_id VARCHAR(96) NOT NULL DEFAULT '', created_at_ms BIGINT NOT NULL, KEY idx_wallet_entries_user_time (user_id, created_at_ms), KEY idx_wallet_entries_tx (transaction_id), KEY idx_wallet_entries_asset_time (asset_type, created_at_ms) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS wallet_outbox ( event_id VARCHAR(128) NOT NULL PRIMARY KEY, event_type VARCHAR(64) NOT NULL, transaction_id VARCHAR(96) NOT NULL, command_id VARCHAR(128) NOT NULL, user_id BIGINT NOT NULL, asset_type VARCHAR(32) NOT NULL, available_delta BIGINT NOT NULL, frozen_delta BIGINT NOT NULL, payload JSON NOT NULL, status VARCHAR(32) NOT NULL, retry_count INT NOT NULL DEFAULT 0, last_error TEXT NULL, created_at_ms BIGINT NOT NULL, updated_at_ms BIGINT NOT NULL, KEY idx_wallet_outbox_pending (status, created_at_ms), KEY idx_wallet_outbox_tx (transaction_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS wallet_gift_prices ( gift_id VARCHAR(96) NOT NULL, price_version VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, coin_price BIGINT NOT NULL, gift_point_amount BIGINT NOT NULL, heat_value BIGINT NOT NULL, effective_at_ms BIGINT NOT NULL, created_at_ms BIGINT NOT NULL, updated_at_ms BIGINT NOT NULL, PRIMARY KEY (gift_id, price_version), KEY idx_wallet_gift_prices_effective (gift_id, status, effective_at_ms) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT IGNORE INTO wallet_gift_prices ( gift_id, price_version, status, coin_price, gift_point_amount, heat_value, effective_at_ms, created_at_ms, updated_at_ms ) VALUES ('rose', 'v1', 'active', 10, 10, 10, 0, 0, 0), ('rocket', 'v1', 'active', 100, 100, 100, 0, 0, 0);