-- migration-version: 20260803_120000_CREATE_ORDER_PAYMENT_ATTEMPT
|
USE `tour_guide`;
|
|
CREATE TABLE IF NOT EXISTS `tour_order_payment_attempt` (
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Payment attempt primary key',
|
`order_id` BIGINT UNSIGNED NOT NULL COMMENT 'Tour order primary key',
|
`req_seq_id` VARCHAR(64) NOT NULL COMMENT 'Huifu request sequence',
|
`req_date` CHAR(8) NOT NULL COMMENT 'Huifu request date yyyyMMdd',
|
`amount` DECIMAL(10,2) NOT NULL COMMENT 'Payment attempt amount',
|
`status` VARCHAR(16) NOT NULL DEFAULT 'CREATED' COMMENT 'CREATED or SUCCEEDED',
|
`provider_transaction_id` VARCHAR(64) DEFAULT NULL COMMENT 'Huifu transaction id',
|
`paid_at` DATETIME DEFAULT NULL COMMENT 'Payment success time',
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Created time',
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Updated time',
|
PRIMARY KEY (`id`),
|
UNIQUE KEY `uk_order_payment_attempt_req_seq` (`req_seq_id`),
|
UNIQUE KEY `uk_order_payment_attempt_provider_tx` (`provider_transaction_id`),
|
KEY `idx_order_payment_attempt_order` (`order_id`, `status`),
|
CONSTRAINT `fk_order_payment_attempt_order` FOREIGN KEY (`order_id`) REFERENCES `tour_order` (`id`) ON DELETE RESTRICT
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Tour order payment attempts';
|
|
INSERT INTO `sys_schema_migration` (`version`, `description`)
|
VALUES ('20260803_120000_CREATE_ORDER_PAYMENT_ATTEMPT', 'create payment attempt history for retry and callback idempotency');
|