484 lines
26 KiB
SQL
484 lines
26 KiB
SQL
-- ============================================================
|
|
-- 酒店民宿短租预订平台 - 数据库初始化脚本
|
|
-- ============================================================
|
|
|
|
CREATE DATABASE IF NOT EXISTS `rent_platform` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
USE `rent_platform`;
|
|
|
|
-- ============================================================
|
|
-- 1. 用户表
|
|
-- ============================================================
|
|
CREATE TABLE `users` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`phone` VARCHAR(20) NOT NULL COMMENT '手机号',
|
|
`password` VARCHAR(255) DEFAULT NULL COMMENT '密码(AES加密存储)',
|
|
`nickname` VARCHAR(50) DEFAULT '' COMMENT '昵称',
|
|
`avatar` VARCHAR(500) DEFAULT '' COMMENT '头像URL',
|
|
`gender` TINYINT UNSIGNED DEFAULT 0 COMMENT '性别 0-未知 1-男 2-女',
|
|
`real_name` VARCHAR(50) DEFAULT NULL COMMENT '真实姓名',
|
|
`id_card` VARCHAR(255) DEFAULT NULL COMMENT '身份证号(加密存储)',
|
|
`status` ENUM('active','frozen','deleted') NOT NULL DEFAULT 'active' COMMENT '状态',
|
|
`last_login_at` DATETIME DEFAULT NULL COMMENT '最后登录时间',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_phone` (`phone`),
|
|
KEY `idx_status` (`status`),
|
|
KEY `idx_created_at` (`created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
|
|
|
|
-- ============================================================
|
|
-- 2. 平台管理员表
|
|
-- ============================================================
|
|
CREATE TABLE `admins` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`username` VARCHAR(50) NOT NULL COMMENT '用户名',
|
|
`password` VARCHAR(255) NOT NULL COMMENT '密码(bcrypt哈希)',
|
|
`name` VARCHAR(50) NOT NULL COMMENT '姓名',
|
|
`phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
|
|
`email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
|
|
`role` ENUM('super_admin','admin','operator') NOT NULL DEFAULT 'admin' COMMENT '角色:超级管理员/管理员/运营',
|
|
`status` ENUM('active','frozen') NOT NULL DEFAULT 'active' COMMENT '状态',
|
|
`last_login_at` DATETIME DEFAULT NULL COMMENT '最后登录时间',
|
|
`last_login_ip` VARCHAR(50) DEFAULT NULL COMMENT '最后登录IP',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_username` (`username`),
|
|
KEY `idx_role` (`role`),
|
|
KEY `idx_status` (`status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='平台管理员表';
|
|
|
|
-- ============================================================
|
|
-- 3. 商家账户表
|
|
-- ============================================================
|
|
CREATE TABLE `sellers` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`phone` VARCHAR(20) NOT NULL COMMENT '手机号',
|
|
`password` VARCHAR(255) DEFAULT NULL COMMENT '密码(bcrypt哈希)',
|
|
`contact_name` VARCHAR(50) NOT NULL COMMENT '联系人姓名',
|
|
`email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
|
|
`status` ENUM('active','frozen','deleted') NOT NULL DEFAULT 'active' COMMENT '状态',
|
|
`last_login_at` DATETIME DEFAULT NULL COMMENT '最后登录时间',
|
|
`last_login_ip` VARCHAR(50) DEFAULT NULL COMMENT '最后登录IP',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_phone` (`phone`),
|
|
KEY `idx_status` (`status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商家账户表';
|
|
|
|
-- ============================================================
|
|
-- 4. 第三方账号绑定表
|
|
-- ============================================================
|
|
CREATE TABLE `user_oauth` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
`provider` ENUM('wechat','alipay') NOT NULL COMMENT '第三方平台',
|
|
`openid` VARCHAR(128) NOT NULL COMMENT '第三方OpenID',
|
|
`union_id` VARCHAR(128) DEFAULT NULL COMMENT 'UnionID',
|
|
`nickname` VARCHAR(100) DEFAULT NULL COMMENT '第三方昵称',
|
|
`avatar` VARCHAR(500) DEFAULT NULL COMMENT '第三方头像',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_provider_openid` (`provider`,`openid`),
|
|
KEY `idx_user_id` (`user_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='第三方账号绑定表';
|
|
|
|
-- ============================================================
|
|
-- 5. 商家表
|
|
-- ============================================================
|
|
CREATE TABLE `merchants` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`seller_id` BIGINT UNSIGNED NOT NULL COMMENT '关联商家账户ID',
|
|
`shop_name` VARCHAR(100) NOT NULL COMMENT '店铺名称',
|
|
`logo` VARCHAR(500) DEFAULT '' COMMENT '店铺Logo',
|
|
`description` TEXT COMMENT '店铺描述',
|
|
`phone` VARCHAR(20) NOT NULL COMMENT '联系电话',
|
|
`province` VARCHAR(50) DEFAULT '' COMMENT '省',
|
|
`city` VARCHAR(50) DEFAULT '' COMMENT '市',
|
|
`district` VARCHAR(50) DEFAULT '' COMMENT '区',
|
|
`address` VARCHAR(255) DEFAULT '' COMMENT '详细地址',
|
|
`longitude` DECIMAL(10,7) DEFAULT NULL COMMENT '经度',
|
|
`latitude` DECIMAL(10,7) DEFAULT NULL COMMENT '纬度',
|
|
`business_license` VARCHAR(500) DEFAULT '' COMMENT '营业执照图片',
|
|
`license_no` VARCHAR(50) DEFAULT '' COMMENT '营业执照编号',
|
|
`legal_person` VARCHAR(50) DEFAULT '' COMMENT '法人姓名',
|
|
`status` ENUM('pending','approved','rejected','frozen') NOT NULL DEFAULT 'pending' COMMENT '状态',
|
|
`reject_reason` VARCHAR(500) DEFAULT NULL COMMENT '拒绝原因',
|
|
`deposit` DECIMAL(10,2) UNSIGNED DEFAULT 0.00 COMMENT '保证金',
|
|
`rating` DECIMAL(2,1) UNSIGNED DEFAULT 5.0 COMMENT '评分',
|
|
`review_count` INT UNSIGNED DEFAULT 0 COMMENT '评价数',
|
|
`auto_confirm` TINYINT(1) DEFAULT 0 COMMENT '是否自动接单',
|
|
`auto_confirm_rules` JSON DEFAULT NULL COMMENT '自动接单规则配置',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_seller_id` (`seller_id`),
|
|
KEY `idx_status` (`status`),
|
|
KEY `idx_city` (`city`),
|
|
KEY `idx_rating` (`rating`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商家表';
|
|
|
|
-- ============================================================
|
|
-- 6. 房型/房源表
|
|
-- ============================================================
|
|
CREATE TABLE `rooms` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`merchant_id` BIGINT UNSIGNED NOT NULL COMMENT '商家ID',
|
|
`name` VARCHAR(100) NOT NULL COMMENT '房型名称',
|
|
`type` ENUM('hotel','homestay','apartment','hostel') NOT NULL DEFAULT 'hotel' COMMENT '类型:酒店/民宿/公寓/青旅',
|
|
`area` DECIMAL(6,2) DEFAULT 0.00 COMMENT '面积(平方米)',
|
|
`bed_type` VARCHAR(50) DEFAULT '' COMMENT '床型(如:大床/双床/榻榻米)',
|
|
`max_guests` TINYINT UNSIGNED DEFAULT 1 COMMENT '最多入住人数',
|
|
`floor` VARCHAR(20) DEFAULT '' COMMENT '楼层',
|
|
`facilities` JSON DEFAULT NULL COMMENT '设施列表(WiFi,停车,早餐等)',
|
|
`images` JSON DEFAULT NULL COMMENT '图片URL列表',
|
|
`cover_image` VARCHAR(500) DEFAULT '' COMMENT '封面图',
|
|
`price` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '基础价格/晚',
|
|
`status` ENUM('on_sale','off_sale') NOT NULL DEFAULT 'on_sale' COMMENT '状态',
|
|
`rating` DECIMAL(2,1) UNSIGNED DEFAULT 5.0 COMMENT '评分',
|
|
`review_count` INT UNSIGNED DEFAULT 0 COMMENT '评价数',
|
|
`description` TEXT COMMENT '房源描述',
|
|
`cancel_policy` ENUM('free','flexible','strict') DEFAULT 'flexible' COMMENT '取消政策',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_merchant_id` (`merchant_id`),
|
|
KEY `idx_type` (`type`),
|
|
KEY `idx_status_price` (`status`,`price`),
|
|
KEY `idx_rating` (`rating`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='房型/房源表';
|
|
|
|
-- ============================================================
|
|
-- 7. 房量房价日历表
|
|
-- ============================================================
|
|
CREATE TABLE `room_calendar` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`room_id` BIGINT UNSIGNED NOT NULL COMMENT '房型ID',
|
|
`date` DATE NOT NULL COMMENT '日期',
|
|
`price` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '当日房价',
|
|
`stock` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '可售数量',
|
|
`sold` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '已售数量',
|
|
`status` ENUM('available','unavailable') NOT NULL DEFAULT 'available' COMMENT '房态',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_room_date` (`room_id`,`date`),
|
|
KEY `idx_date` (`date`),
|
|
KEY `idx_status` (`status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='房量房价日历表';
|
|
|
|
-- ============================================================
|
|
-- 8. 房态变更日志表
|
|
-- ============================================================
|
|
CREATE TABLE `room_calendar_logs` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`room_id` BIGINT UNSIGNED NOT NULL COMMENT '房型ID',
|
|
`operator_id` BIGINT UNSIGNED NOT NULL COMMENT '操作人ID',
|
|
`date_range` VARCHAR(100) NOT NULL COMMENT '变更日期范围',
|
|
`change_type` ENUM('price','stock','status') NOT NULL COMMENT '变更类型',
|
|
`old_value` VARCHAR(100) DEFAULT NULL COMMENT '变更前值',
|
|
`new_value` VARCHAR(100) DEFAULT NULL COMMENT '变更后值',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_room_id` (`room_id`),
|
|
KEY `idx_created_at` (`created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='房态变更日志表';
|
|
|
|
-- ============================================================
|
|
-- 9. 订单表
|
|
-- ============================================================
|
|
CREATE TABLE `orders` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`order_no` VARCHAR(32) NOT NULL COMMENT '订单号',
|
|
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
`merchant_id` BIGINT UNSIGNED NOT NULL COMMENT '商家ID',
|
|
`room_id` BIGINT UNSIGNED NOT NULL COMMENT '房型ID',
|
|
`check_in_date` DATE NOT NULL COMMENT '入住日期',
|
|
`check_out_date` DATE NOT NULL COMMENT '离店日期',
|
|
`nights` TINYINT UNSIGNED NOT NULL COMMENT '入住晚数',
|
|
`room_count` TINYINT UNSIGNED DEFAULT 1 COMMENT '房间数',
|
|
`room_price` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT '房费单价',
|
|
`room_amount` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT '房费总额',
|
|
`service_fee` DECIMAL(10,2) UNSIGNED DEFAULT 0.00 COMMENT '服务费',
|
|
`coupon_discount` DECIMAL(10,2) UNSIGNED DEFAULT 0.00 COMMENT '优惠券抵扣',
|
|
`total_amount` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT '订单总金额',
|
|
`pay_amount` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT '实付金额',
|
|
`payment_method` ENUM('wechat','alipay','balance') DEFAULT NULL COMMENT '支付方式',
|
|
`payment_no` VARCHAR(64) DEFAULT NULL COMMENT '支付流水号',
|
|
`paid_at` DATETIME DEFAULT NULL COMMENT '支付时间',
|
|
`status` ENUM('pending_pay','pending_confirm','pending_checkin','checked_in','completed','cancelled','refunding','refunded') NOT NULL DEFAULT 'pending_pay' COMMENT '订单状态',
|
|
`cancel_reason` VARCHAR(500) DEFAULT NULL COMMENT '取消原因',
|
|
`contact_name` VARCHAR(50) NOT NULL COMMENT '联系人姓名',
|
|
`contact_phone` VARCHAR(20) NOT NULL COMMENT '联系人手机',
|
|
`remark` VARCHAR(500) DEFAULT '' COMMENT '备注',
|
|
`source` ENUM('miniapp','web','third_party') DEFAULT 'miniapp' COMMENT '订单来源',
|
|
`confirmed_at` DATETIME DEFAULT NULL COMMENT '商家确认时间',
|
|
`checkin_at` DATETIME DEFAULT NULL COMMENT '实际入住时间',
|
|
`checkout_at` DATETIME DEFAULT NULL COMMENT '实际离店时间',
|
|
`cancelled_at` DATETIME DEFAULT NULL COMMENT '取消时间',
|
|
`refund_amount` DECIMAL(10,2) UNSIGNED DEFAULT NULL COMMENT '退款金额',
|
|
`refund_at` DATETIME DEFAULT NULL COMMENT '退款时间',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_order_no` (`order_no`),
|
|
KEY `idx_user_id` (`user_id`),
|
|
KEY `idx_merchant_id` (`merchant_id`),
|
|
KEY `idx_room_id` (`room_id`),
|
|
KEY `idx_status` (`status`),
|
|
KEY `idx_check_in` (`check_in_date`),
|
|
KEY `idx_created_at` (`created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表';
|
|
|
|
-- ============================================================
|
|
-- 10. 评价表
|
|
-- ============================================================
|
|
CREATE TABLE `reviews` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`order_id` BIGINT UNSIGNED NOT NULL COMMENT '订单ID',
|
|
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
`merchant_id` BIGINT UNSIGNED NOT NULL COMMENT '商家ID',
|
|
`room_id` BIGINT UNSIGNED NOT NULL COMMENT '房型ID',
|
|
`rating` TINYINT UNSIGNED NOT NULL COMMENT '评分(1-5)',
|
|
`content` TEXT COMMENT '评价内容',
|
|
`images` JSON DEFAULT NULL COMMENT '评价图片列表',
|
|
`merchant_reply` TEXT COMMENT '商家回复',
|
|
`replied_at` DATETIME DEFAULT NULL COMMENT '回复时间',
|
|
`is_anonymous` TINYINT(1) DEFAULT 0 COMMENT '是否匿名',
|
|
`status` ENUM('visible','hidden') DEFAULT 'visible' COMMENT '状态',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_order_id` (`order_id`),
|
|
KEY `idx_merchant_id` (`merchant_id`),
|
|
KEY `idx_user_id` (`user_id`),
|
|
KEY `idx_rating` (`rating`),
|
|
KEY `idx_created_at` (`created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评价表';
|
|
|
|
-- ============================================================
|
|
-- 11. 收藏表
|
|
-- ============================================================
|
|
CREATE TABLE `favorites` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
`room_id` BIGINT UNSIGNED NOT NULL COMMENT '房型ID',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_user_room` (`user_id`,`room_id`),
|
|
KEY `idx_user_id` (`user_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收藏表';
|
|
|
|
-- ============================================================
|
|
-- 12. 优惠券模板表
|
|
-- ============================================================
|
|
CREATE TABLE `coupons` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(100) NOT NULL COMMENT '优惠券名称',
|
|
`type` ENUM('fixed','percent') NOT NULL COMMENT '类型:固定金额/百分比折扣',
|
|
`value` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT '优惠金额/折扣比例',
|
|
`min_amount` DECIMAL(10,2) UNSIGNED DEFAULT 0.00 COMMENT '最低使用金额',
|
|
`total_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '发放总量',
|
|
`used_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '已使用数量',
|
|
`remain_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '剩余数量',
|
|
`start_date` DATE NOT NULL COMMENT '生效日期',
|
|
`end_date` DATE NOT NULL COMMENT '失效日期',
|
|
`scope` ENUM('platform','merchant','room') DEFAULT 'platform' COMMENT '适用范围',
|
|
`scope_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '范围关联ID(商家ID/房型ID)',
|
|
`status` ENUM('active','paused','ended') DEFAULT 'active' COMMENT '状态',
|
|
`created_by` BIGINT UNSIGNED DEFAULT NULL COMMENT '创建人ID',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_status_dates` (`status`,`start_date`,`end_date`),
|
|
KEY `idx_scope` (`scope`,`scope_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='优惠券模板表';
|
|
|
|
-- ============================================================
|
|
-- 13. 用户优惠券表
|
|
-- ============================================================
|
|
CREATE TABLE `user_coupons` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
`coupon_id` BIGINT UNSIGNED NOT NULL COMMENT '优惠券ID',
|
|
`status` ENUM('available','used','expired') NOT NULL DEFAULT 'available' COMMENT '状态',
|
|
`used_at` DATETIME DEFAULT NULL COMMENT '使用时间',
|
|
`order_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '关联订单ID',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_user_status` (`user_id`,`status`),
|
|
KEY `idx_coupon_id` (`coupon_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户优惠券表';
|
|
|
|
-- ============================================================
|
|
-- 14. 促销活动表
|
|
-- ============================================================
|
|
CREATE TABLE `promotions` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`merchant_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '商家ID(NULL为平台活动)',
|
|
`name` VARCHAR(100) NOT NULL COMMENT '活动名称',
|
|
`type` ENUM('full_reduction','discount','package') NOT NULL COMMENT '类型:满减/折扣/套餐',
|
|
`rules` JSON NOT NULL COMMENT '活动规则',
|
|
`room_ids` JSON DEFAULT NULL COMMENT '参与房型ID列表',
|
|
`start_date` DATETIME NOT NULL COMMENT '开始时间',
|
|
`end_date` DATETIME NOT NULL COMMENT '结束时间',
|
|
`status` ENUM('pending','active','paused','ended') NOT NULL DEFAULT 'pending' COMMENT '状态',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_merchant_id` (`merchant_id`),
|
|
KEY `idx_status_dates` (`status`,`start_date`,`end_date`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='促销活动表';
|
|
|
|
-- ============================================================
|
|
-- 15. 会员等级表
|
|
-- ============================================================
|
|
CREATE TABLE `member_levels` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(50) NOT NULL COMMENT '等级名称',
|
|
`level` TINYINT UNSIGNED NOT NULL COMMENT '等级序号',
|
|
`min_points` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '最低成长值',
|
|
`discount` DECIMAL(3,2) DEFAULT 1.00 COMMENT '折扣(0.95=95折)',
|
|
`benefits` JSON DEFAULT NULL COMMENT '权益描述',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_level` (`level`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员等级表';
|
|
|
|
-- ============================================================
|
|
-- 16. 用户会员信息表
|
|
-- ============================================================
|
|
CREATE TABLE `user_members` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
`level_id` BIGINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '等级ID',
|
|
`points` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '积分',
|
|
`growth_value` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '成长值',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_user_id` (`user_id`),
|
|
KEY `idx_level_id` (`level_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会员信息表';
|
|
|
|
-- ============================================================
|
|
-- 17. 财务结算表
|
|
-- ============================================================
|
|
CREATE TABLE `settlements` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`merchant_id` BIGINT UNSIGNED NOT NULL COMMENT '商家ID',
|
|
`order_id` BIGINT UNSIGNED NOT NULL COMMENT '订单ID',
|
|
`order_amount` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT '订单金额',
|
|
`commission_rate` DECIMAL(5,4) UNSIGNED NOT NULL DEFAULT 0.0000 COMMENT '佣金比例',
|
|
`commission_amount` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '佣金金额',
|
|
`settlement_amount` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '结算金额',
|
|
`status` ENUM('pending','settled') NOT NULL DEFAULT 'pending' COMMENT '状态',
|
|
`settled_at` DATETIME DEFAULT NULL COMMENT '结算时间',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_merchant_id` (`merchant_id`),
|
|
KEY `idx_order_id` (`order_id`),
|
|
KEY `idx_status` (`status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='财务结算表';
|
|
|
|
-- ============================================================
|
|
-- 18. 提现记录表
|
|
-- ============================================================
|
|
CREATE TABLE `withdrawals` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`merchant_id` BIGINT UNSIGNED NOT NULL COMMENT '商家ID',
|
|
`amount` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT '提现金额',
|
|
`fee` DECIMAL(10,2) UNSIGNED DEFAULT 0.00 COMMENT '手续费',
|
|
`actual_amount` DECIMAL(10,2) UNSIGNED NOT NULL COMMENT '实际到账金额',
|
|
`bank_name` VARCHAR(100) NOT NULL COMMENT '开户银行',
|
|
`bank_account` VARCHAR(50) NOT NULL COMMENT '银行账号',
|
|
`account_name` VARCHAR(50) NOT NULL COMMENT '账户名',
|
|
`status` ENUM('pending','approved','rejected','paid') NOT NULL DEFAULT 'pending' COMMENT '状态',
|
|
`reviewer_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '审核人ID',
|
|
`reviewed_at` DATETIME DEFAULT NULL COMMENT '审核时间',
|
|
`reject_reason` VARCHAR(500) DEFAULT NULL COMMENT '拒绝原因',
|
|
`paid_at` DATETIME DEFAULT NULL COMMENT '打款时间',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_merchant_id` (`merchant_id`),
|
|
KEY `idx_status` (`status`),
|
|
KEY `idx_created_at` (`created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='提现记录表';
|
|
|
|
-- ============================================================
|
|
-- 19. 消息通知表
|
|
-- ============================================================
|
|
CREATE TABLE `notifications` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
|
`title` VARCHAR(200) NOT NULL COMMENT '标题',
|
|
`content` TEXT NOT NULL COMMENT '内容',
|
|
`type` ENUM('order','system','promotion','review') NOT NULL COMMENT '类型',
|
|
`is_read` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否已读',
|
|
`extra` JSON DEFAULT NULL COMMENT '附加数据',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_user_read` (`user_id`,`is_read`),
|
|
KEY `idx_type` (`type`),
|
|
KEY `idx_created_at` (`created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消息通知表';
|
|
|
|
-- ============================================================
|
|
-- 20. 广告位表
|
|
-- ============================================================
|
|
CREATE TABLE `advertisements` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`position` VARCHAR(50) NOT NULL COMMENT '广告位标识',
|
|
`title` VARCHAR(200) DEFAULT '' COMMENT '广告标题',
|
|
`image` VARCHAR(500) NOT NULL COMMENT '广告图片',
|
|
`link_type` ENUM('room','merchant','page','url') DEFAULT 'url' COMMENT '链接类型',
|
|
`link_value` VARCHAR(500) DEFAULT '' COMMENT '链接值',
|
|
`sort` INT DEFAULT 0 COMMENT '排序',
|
|
`status` ENUM('active','inactive') DEFAULT 'active' COMMENT '状态',
|
|
`start_time` DATETIME DEFAULT NULL COMMENT '投放开始时间',
|
|
`end_time` DATETIME DEFAULT NULL COMMENT '投放结束时间',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_position` (`position`),
|
|
KEY `idx_status_sort` (`status`,`sort`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='广告位表';
|
|
|
|
-- ============================================================
|
|
-- 21. 平台配置表
|
|
-- ============================================================
|
|
CREATE TABLE `platform_configs` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`config_key` VARCHAR(100) NOT NULL COMMENT '配置键',
|
|
`config_value` TEXT NOT NULL COMMENT '配置值',
|
|
`description` VARCHAR(200) DEFAULT '' COMMENT '说明',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_config_key` (`config_key`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='平台配置表';
|
|
|
|
-- ============================================================
|
|
-- 22. 操作日志表
|
|
-- ============================================================
|
|
CREATE TABLE `operation_logs` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`user_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '操作人ID',
|
|
`module` VARCHAR(50) NOT NULL COMMENT '模块',
|
|
`action` VARCHAR(50) NOT NULL COMMENT '操作',
|
|
`target_type` VARCHAR(50) DEFAULT NULL COMMENT '目标类型',
|
|
`target_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '目标ID',
|
|
`detail` JSON DEFAULT NULL COMMENT '操作详情',
|
|
`ip` VARCHAR(45) DEFAULT NULL COMMENT 'IP地址',
|
|
`user_agent` VARCHAR(500) DEFAULT NULL COMMENT 'UA',
|
|
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_user_id` (`user_id`),
|
|
KEY `idx_module_action` (`module`,`action`),
|
|
KEY `idx_created_at` (`created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
|