-- ============================================
-- 白名单订单表 - 创建表
-- ============================================
-- 说明：创建 whitelist_order 和 whitelist_order_item 表，用于白名单订单管理
-- 执行时间：2024-XX-XX
-- ============================================

-- 1. 创建白名单订单表
CREATE TABLE `whitelist_order` (
  `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` datetime DEFAULT NULL COMMENT '删除时间',
  `del_state` tinyint NOT NULL DEFAULT '0' COMMENT '删除状态：0=未删除，1=已删除',
  `version` bigint NOT NULL DEFAULT '0' COMMENT '版本号（乐观锁）',

/* 业务字段 */
`order_no` varchar(50) NOT NULL COMMENT '订单号（唯一）',
  `user_id` CHAR(36) NOT NULL COMMENT '用户ID（代理的user_id）',
  `id_card` varchar(50) NOT NULL COMMENT '身份证号（查询对象标识）',
  `total_amount` decimal(10,2) NOT NULL COMMENT '总金额（单位：元）',
  `status` tinyint NOT NULL DEFAULT 1 COMMENT '订单状态：1=待支付，2=已支付，3=已取消',
  `payment_method` varchar(20) DEFAULT NULL COMMENT '支付方式：wechat, alipay, appleiap等',
  `payment_platform` varchar(20) DEFAULT NULL COMMENT '支付平台：alipay, wechat, appleiap等',
  `platform_order_id` varchar(100) DEFAULT NULL COMMENT '支付平台订单号（第三方平台的订单号）',
  `pay_time` datetime DEFAULT NULL COMMENT '支付时间',
  
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_order_no` (`order_no`) COMMENT '订单号唯一索引',
  KEY `idx_user_id` (`user_id`) COMMENT '优化按用户查询',
  KEY `idx_id_card` (`id_card`) COMMENT '优化按身份证号查询',
  KEY `idx_status` (`status`) COMMENT '优化按状态查询',
  KEY `idx_create_time` (`create_time`) COMMENT '优化按创建时间查询',
  KEY `idx_platform_order_id` (`platform_order_id`) COMMENT '优化按支付平台订单号查询'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='白名单订单表';

-- 2. 创建白名单订单明细表
CREATE TABLE `whitelist_order_item` (
  `id` CHAR(36) NOT NULL COMMENT 'UUID主键',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` datetime DEFAULT NULL COMMENT '删除时间',
  `del_state` tinyint NOT NULL DEFAULT '0' COMMENT '删除状态：0=未删除，1=已删除',
  `version` bigint NOT NULL DEFAULT '0' COMMENT '版本号（乐观锁）',

/* 业务字段 */

`order_id` CHAR(36) NOT NULL COMMENT '订单ID（关联whitelist_order.id）',
  `feature_id` CHAR(36) NOT NULL COMMENT 'Feature的UUID',
  `feature_api_id` varchar(100) NOT NULL COMMENT 'Feature的API标识（冗余）',
  `feature_name` varchar(200) NOT NULL COMMENT 'Feature的名称（冗余）',
  `price` decimal(10,2) NOT NULL COMMENT '单价（单位：元）',
  
  PRIMARY KEY (`id`),
  KEY `idx_order_id` (`order_id`) COMMENT '优化按订单查询',
  KEY `idx_feature_id` (`feature_id`) COMMENT '优化按feature查询'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='白名单订单明细表';

-- ============================================
-- 说明：
-- 1. whitelist_order 记录白名单订单主信息
-- 2. whitelist_order_item 记录订单明细（每个feature一条记录）
--    - 如果订单只包含一个feature，可以考虑去掉明细表，将feature信息直接放在主表
--    - 如果订单可能包含多个feature，建议保留明细表，便于记录每个feature的单价和名称
-- 3. 订单状态：1=待支付，2=已支付，3=已取消
-- 4. 支付成功后，会创建对应的 user_feature_whitelist 记录
-- 5. payment_method: 支付方式（wechat, alipay, appleiap等）
-- 6. payment_platform: 支付平台（alipay, wechat, appleiap等）
-- 7. platform_order_id: 支付平台的订单号（第三方平台的订单号）
-- ============================================