-- ========================================
-- 方案A：其他支付方式数据库脚本（简化版）
-- 创建日期：2026-01-23
-- 数据库：peixue
-- 功能：次卡、套餐、优惠券、地址关联
-- ========================================

USE peixue;

-- ========================================
-- 1. 创建优惠券表
-- ========================================

DROP TABLE IF EXISTS `coupon`;
CREATE TABLE `coupon` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` VARCHAR(100) NOT NULL COMMENT '优惠券名称',
  `type` TINYINT NOT NULL COMMENT '类型：1-满减券，2-折扣券，3-代金券',
  `discount_type` TINYINT NOT NULL COMMENT '折扣类型：1-金额，2-折扣',
  `discount_value` DECIMAL(10,2) NOT NULL COMMENT '折扣值（金额或折扣率）',
  `min_amount` DECIMAL(10,2) DEFAULT 0.00 COMMENT '最低消费金额',
  `max_discount` DECIMAL(10,2) COMMENT '最大折扣金额',
  `total_quantity` INT NOT NULL COMMENT '发行总量',
  `received_quantity` INT DEFAULT 0 COMMENT '已领取数量',
  `used_quantity` INT DEFAULT 0 COMMENT '已使用数量',
  `start_time` DATETIME NOT NULL COMMENT '开始时间',
  `end_time` DATETIME NOT NULL COMMENT '结束时间',
  `status` TINYINT DEFAULT 1 COMMENT '状态：0-停用，1-启用',
  `tenant_id` BIGINT COMMENT '租户ID',
  `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` TINYINT DEFAULT 0 COMMENT '删除标记',
  PRIMARY KEY (`id`),
  KEY `idx_status` (`status`),
  KEY `idx_start_end_time` (`start_time`, `end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优惠券表';

SELECT '✅ 优惠券表创建完成' AS message;

-- ========================================
-- 2. 创建用户优惠券表
-- ========================================

DROP TABLE IF EXISTS `user_coupon`;
CREATE TABLE `user_coupon` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` BIGINT NOT NULL COMMENT '用户ID',
  `coupon_id` BIGINT NOT NULL COMMENT '优惠券ID',
  `order_id` BIGINT COMMENT '使用的订单ID',
  `status` TINYINT DEFAULT 0 COMMENT '状态：0-未使用，1-已使用，2-已过期',
  `receive_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '领取时间',
  `use_time` DATETIME COMMENT '使用时间',
  `expire_time` DATETIME NOT NULL COMMENT '过期时间',
  `tenant_id` BIGINT COMMENT '租户ID',
  `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` TINYINT DEFAULT 0 COMMENT '删除标记',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_coupon_id` (`coupon_id`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_status` (`status`),
  KEY `idx_expire_time` (`expire_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户优惠券表';

SELECT '✅ 用户优惠券表创建完成' AS message;

-- ========================================
-- 3. 创建用户地址表
-- ========================================

DROP TABLE IF EXISTS `user_address`;
CREATE TABLE `user_address` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` BIGINT NOT NULL COMMENT '用户ID',
  `contact_name` VARCHAR(50) NOT NULL COMMENT '联系人姓名',
  `contact_phone` VARCHAR(20) NOT NULL COMMENT '联系电话',
  `province` VARCHAR(50) COMMENT '省份',
  `city` VARCHAR(50) COMMENT '城市',
  `district` VARCHAR(50) COMMENT '区县',
  `address` VARCHAR(200) NOT NULL COMMENT '详细地址',
  `address_tag` VARCHAR(20) COMMENT '地址标签：家，公司，学校',
  `longitude` DECIMAL(10,6) COMMENT '经度',
  `latitude` DECIMAL(10,6) COMMENT '纬度',
  `is_default` TINYINT DEFAULT 0 COMMENT '是否默认地址：0-否，1-是',
  `tenant_id` BIGINT COMMENT '租户ID',
  `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` TINYINT DEFAULT 0 COMMENT '删除标记',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_is_default` (`is_default`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户地址表';

SELECT '✅ 用户地址表创建完成' AS message;

-- ========================================
-- 4. 创建用户套餐表
-- ========================================

DROP TABLE IF EXISTS `user_package`;
CREATE TABLE `user_package` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` BIGINT NOT NULL COMMENT '用户ID',
  `package_id` BIGINT NOT NULL COMMENT '套餐ID',
  `package_name` VARCHAR(100) NOT NULL COMMENT '套餐名称',
  `package_type` VARCHAR(50) COMMENT '套餐类型',
  `total_hours` DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '总课时',
  `used_hours` DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '已使用课时',
  `remaining_hours` DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '剩余课时',
  `service_count` INT DEFAULT 0 COMMENT '服务次数',
  `used_count` INT DEFAULT 0 COMMENT '已使用次数',
  `remaining_count` INT DEFAULT 0 COMMENT '剩余次数',
  `price` DECIMAL(10,2) COMMENT '购买价格',
  `purchase_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '购买时间',
  `start_date` DATE COMMENT '开始日期',
  `expire_date` DATE COMMENT '过期日期',
  `status` TINYINT DEFAULT 1 COMMENT '状态：0-已过期，1-使用中，2-已用完',
  `version` INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
  `tenant_id` BIGINT COMMENT '租户ID',
  `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` TINYINT DEFAULT 0 COMMENT '删除标记',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_package_id` (`package_id`),
  KEY `idx_status` (`status`),
  KEY `idx_expire_date` (`expire_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户套餐表';

SELECT '✅ 用户套餐表创建完成' AS message;

-- ========================================
-- 5. 插入测试数据
-- ========================================

-- 插入测试优惠券
INSERT INTO `coupon` (`name`, `type`, `discount_type`, `discount_value`, `min_amount`, `max_discount`, `total_quantity`, `start_time`, `end_time`, `status`, `tenant_id`)
VALUES 
('新用户专享券', 1, 1, 20.00, 100.00, 20.00, 1000, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 1, 1),
('满200减50', 1, 1, 50.00, 200.00, 50.00, 500, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 1, 1),
('8折优惠券', 2, 2, 0.80, 0.00, 100.00, 300, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 1, 1);

SELECT '✅ 测试数据插入完成' AS message;

-- ========================================
-- 完成
-- ========================================

SELECT '========================================' AS '';
SELECT '✅ 方案A数据库脚本执行完成（简化版）' AS message;
SELECT '========================================' AS '';
SELECT '创建的表：' AS '';
SELECT '  1. coupon - 优惠券表' AS '';
SELECT '  2. user_coupon - 用户优惠券表' AS '';
SELECT '  3. user_address - 用户地址表' AS '';
SELECT '  4. user_package - 用户套餐表' AS '';
SELECT '' AS '';
SELECT '⚠️ 注意：订单表字段需要手动添加' AS '';
SELECT '请执行以下SQL添加订单表字段：' AS '';
SELECT '========================================' AS '';
