-- ======================================== -- 方案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 '';