CREATE TABLE `order` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `order_no` varchar(32) NOT NULL COMMENT '自生成的订单号',
    `user_id` bigint NOT NULL COMMENT '用户ID',
    `product_id` bigint NOT NULL COMMENT '产品ID（软关联到产品表）',
    `payment_platform` enum(
        'alipay',
        'wechat',
        'appleiap',
        'other'
    ) NOT NULL COMMENT '支付平台（支付宝、微信、苹果内购、其他）',
    `payment_scene` enum(
        'app',
        'h5',
        'mini_program',
        'public_account'
    ) NOT NULL COMMENT '支付场景（App、H5、微信小程序、公众号）',
    `platform_order_id` varchar(64) DEFAULT NULL COMMENT '支付平台订单号',
    `amount` decimal(10, 2) NOT NULL COMMENT '支付金额',
    `status` enum(
        'pending',
        'paid',
        'failed',
        'refunded',
        'closed'
    ) NOT NULL DEFAULT 'pending' COMMENT '支付状态',
    `del_state` tinyint NOT NULL DEFAULT '0' COMMENT '删除状态',
    `version` bigint NOT NULL DEFAULT '0' COMMENT '版本号',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `pay_time` datetime DEFAULT NULL COMMENT '支付时间',
    `refund_time` datetime DEFAULT NULL COMMENT '退款时间',
    `close_time` datetime DEFAULT NULL COMMENT '订单关闭时间',
    `delete_time` datetime DEFAULT NULL COMMENT '删除时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `unique_order_no` (`order_no`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_product_id` (`product_id`),
    KEY `idx_payment_platform` (`payment_platform`),
    KEY `idx_payment_scene` (`payment_scene`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单表';