RuoYi-Vue-Plus/script/sql/pms_tables.sql

1031 lines
48 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- This script creates the core PMS tables based on PMS数据模型.md v5.4
-- and inserts necessary basic data like default channels and payment methods.
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for pms_customer_contacts
-- ----------------------------
DROP TABLE IF EXISTS `pms_customer_contacts`;
CREATE TABLE `pms_customer_contacts` (
`contact_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '联系人唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`contact_type` varchar(50) DEFAULT NULL COMMENT '联系人类型',
`full_name` varchar(255) DEFAULT NULL COMMENT '联系人姓名',
`phone_number` varchar(50) DEFAULT NULL COMMENT '主要联系电话',
`email` varchar(255) DEFAULT NULL COMMENT '电子邮件地址',
`wechat_openid` varchar(128) DEFAULT NULL COMMENT '微信OpenID',
`wechat_unionid` varchar(128) DEFAULT NULL COMMENT '微信UnionID',
`gender` varchar(50) DEFAULT NULL COMMENT '性别',
`date_of_birth` date DEFAULT NULL COMMENT '出生日期',
`id_type` varchar(50) DEFAULT NULL COMMENT '证件类型',
`id_number_encrypted` varchar(255) DEFAULT NULL COMMENT '证件号码 (加密存储)',
`nationality_country_code` varchar(10) DEFAULT NULL COMMENT '国籍代码',
`address_province` varchar(100) DEFAULT NULL COMMENT '地址-省份',
`address_city` varchar(100) DEFAULT NULL COMMENT '地址-城市',
`address_district` varchar(100) DEFAULT NULL COMMENT '地址-区县',
`address_detail` varchar(500) DEFAULT NULL COMMENT '地址-详细地址',
`postal_code` varchar(20) DEFAULT NULL COMMENT '邮政编码',
`contact_status` varchar(50) DEFAULT NULL COMMENT '联系人状态',
`member_level` varchar(50) DEFAULT NULL COMMENT '会员等级',
`total_stays` int(11) DEFAULT '0' COMMENT '总入住次数',
`total_amount` decimal(10, 2) DEFAULT '0.00' COMMENT '总消费金额',
`last_stay_date` date DEFAULT NULL COMMENT '最后入住日期',
`remarks` text COMMENT '备注信息',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建记录的操作员所属部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`contact_id`),
KEY `idx_pms_cc_tenant` (`tenant_id`),
KEY `idx_pms_cc_tenant_name` (`tenant_id`, `full_name`),
KEY `idx_pms_cc_tenant_phone` (`tenant_id`, `phone_number`),
KEY `idx_pms_cc_tenant_status_type` (`tenant_id`, `contact_status`, `contact_type`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '客户联系人表';
-- ----------------------------
-- Table structure for pms_contact_tags
-- ----------------------------
DROP TABLE IF EXISTS `pms_contact_tags`;
CREATE TABLE `pms_contact_tags` (
`tag_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '标签唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID (门店, 可空)',
`name` varchar(100) DEFAULT NULL COMMENT '标签名称',
`color` varchar(20) DEFAULT NULL COMMENT '标签显示颜色',
`category` varchar(50) DEFAULT NULL COMMENT '标签分类',
`description` varchar(500) DEFAULT NULL COMMENT '标签描述',
`is_system` tinyint(1) DEFAULT '0' COMMENT '是否为系统预设标签',
`sort_order` int(11) DEFAULT '0' COMMENT '排序值',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`tag_id`),
KEY `idx_pms_ct_tenant_dept` (`tenant_id`, `dept_id`),
KEY `idx_pms_ct_tenant_dept_name_category` (`tenant_id`, `dept_id`, `name`, `category`),
KEY `idx_pms_ct_category` (`category`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '联系人标签表';
-- ----------------------------
-- Table structure for pms_contact_tag_relations
-- ----------------------------
DROP TABLE IF EXISTS `pms_contact_tag_relations`;
CREATE TABLE `pms_contact_tag_relations` (
`relation_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '关联唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`contact_id` bigint(20) NOT NULL COMMENT '联系人ID',
`tag_id` bigint(20) NOT NULL COMMENT '标签ID',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`relation_id`),
UNIQUE KEY `unq_pms_ctr_tenant_contact_tag` (`tenant_id`, `contact_id`, `tag_id`, `del_flag`),
KEY `idx_pms_ctr_tenant_contact` (`tenant_id`, `contact_id`),
KEY `idx_pms_ctr_tenant_tag` (`tenant_id`, `tag_id`),
KEY `idx_pms_ctr_contact_id` (`contact_id`),
KEY `idx_pms_ctr_tag_id` (`tag_id`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '联系人标签关联表';
-- ----------------------------
-- Table structure for pms_room_types
-- ----------------------------
DROP TABLE IF EXISTS `pms_room_types`;
CREATE TABLE `pms_room_types` (
`room_type_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '房型唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`name` varchar(255) NOT NULL COMMENT '房型名称',
`default_price` decimal(10, 2) DEFAULT NULL COMMENT '房型默认价格',
`capacity` int(11) DEFAULT NULL COMMENT '标准入住人数',
`amenities` json DEFAULT NULL COMMENT '房型设施标签',
`status` varchar(50) DEFAULT NULL COMMENT '状态',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`room_type_id`),
KEY `idx_pms_rt_tenant_dept` (`tenant_id`, `dept_id`),
KEY `idx_pms_rt_tenant_dept_name` (`tenant_id`, `dept_id`, `name`),
KEY `idx_pms_rt_tenant_dept_status` (`tenant_id`, `dept_id`, `status`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '房型表';
-- ----------------------------
-- Table structure for pms_room_rooms
-- ----------------------------
DROP TABLE IF EXISTS `pms_room_rooms`;
CREATE TABLE `pms_room_rooms` (
`room_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '房间唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`room_type_id` bigint(20) DEFAULT NULL COMMENT '所属房型ID',
`room_number` varchar(50) NOT NULL COMMENT '房间号',
`floor` varchar(50) DEFAULT NULL COMMENT '楼层',
`room_status` varchar(50) DEFAULT NULL COMMENT '物理状态',
`cleaning_status` varchar(50) DEFAULT NULL COMMENT '清洁状态',
`status` varchar(50) DEFAULT NULL COMMENT '记录状态',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`room_id`),
UNIQUE KEY `unq_pms_r_tenant_dept_room_number` (
`tenant_id`,
`dept_id`,
`room_number`,
`del_flag`
),
KEY `idx_pms_r_tenant_dept` (`tenant_id`, `dept_id`),
KEY `idx_pms_r_tenant_dept_rt` (`tenant_id`, `dept_id`, `room_type_id`),
KEY `idx_pms_r_tenant_dept_status` (
`tenant_id`,
`dept_id`,
`room_status`,
`cleaning_status`
),
KEY `idx_pms_r_tenant_dept_status_date` (
`tenant_id`,
`dept_id`,
`room_status`,
`cleaning_status`
)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '房间表';
-- ----------------------------
-- Table structure for pms_room_locks
-- ----------------------------
DROP TABLE IF EXISTS `pms_room_locks`;
CREATE TABLE `pms_room_locks` (
`lock_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '锁定唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`room_id` bigint(20) DEFAULT NULL COMMENT '被锁定的房间ID',
`start_datetime` datetime DEFAULT NULL COMMENT '锁定开始时间',
`end_datetime` datetime DEFAULT NULL COMMENT '锁定结束时间',
`lock_type` varchar(50) DEFAULT NULL COMMENT '锁定类型',
`reason` text COMMENT '锁定原因',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`lock_id`),
KEY `idx_pms_rl_tenant_dept_room` (`tenant_id`, `dept_id`, `room_id`),
KEY `idx_pms_rl_tenant_dept_time` (
`tenant_id`,
`dept_id`,
`start_datetime`,
`end_datetime`
),
KEY `idx_pms_rl_tenant_dept_type` (`tenant_id`, `dept_id`, `lock_type`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '房间锁定表';
-- ----------------------------
-- Table structure for pms_room_pricing_rules
-- ----------------------------
DROP TABLE IF EXISTS `pms_room_pricing_rules`;
CREATE TABLE `pms_room_pricing_rules` (
`rule_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '价格规则唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID (门店,可空)',
`name` varchar(100) DEFAULT NULL COMMENT '规则名称',
`room_type_id` bigint(20) DEFAULT NULL COMMENT '房型ID (可空)',
`date_range_start` date DEFAULT NULL COMMENT '适用开始日期',
`date_range_end` date DEFAULT NULL COMMENT '适用结束日期',
`days_of_week_json` json DEFAULT NULL COMMENT '适用星期 (JSON, e.g., [1,2,7])',
`min_length_of_stay` int(11) DEFAULT NULL COMMENT '最小入住天数',
`max_length_of_stay` int(11) DEFAULT NULL COMMENT '最大入住天数',
`price_adjustment_type` varchar(50) DEFAULT NULL COMMENT '调整类型',
`adjustment_value` decimal(10, 2) DEFAULT NULL COMMENT '调整值',
`priority` int(11) DEFAULT '0' COMMENT '规则优先级',
`status` varchar(50) DEFAULT NULL COMMENT '状态',
`channel_restrictions_json` json DEFAULT NULL COMMENT '渠道限制(JSON数组)',
`guest_count_min` int(11) DEFAULT NULL COMMENT '最小客人数',
`guest_count_max` int(11) DEFAULT NULL COMMENT '最大客人数',
`advance_booking_days_min` int(11) DEFAULT NULL COMMENT '最小提前预订天数',
`advance_booking_days_max` int(11) DEFAULT NULL COMMENT '最大提前预订天数',
`member_level_restrictions_json` json DEFAULT NULL COMMENT '会员等级限制(JSON数组)',
`description` varchar(500) DEFAULT NULL COMMENT '规则描述',
`is_combinable` tinyint(1) DEFAULT '1' COMMENT '是否可与其他规则叠加',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`rule_id`),
KEY `idx_pms_rpr_tenant_dept_status_priority` (`tenant_id`, `dept_id`, `status`, `priority`),
KEY `idx_pms_rpr_tenant_dept_rt_dates` (
`tenant_id`,
`dept_id`,
`room_type_id`,
`date_range_start`,
`date_range_end`
),
KEY `idx_pms_rpr_tenant_dept_combinable` (
`tenant_id`,
`dept_id`,
`is_combinable`,
`status`
)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '房间价格规则表';
-- ----------------------------
-- Table structure for pms_core_orders
-- ----------------------------
DROP TABLE IF EXISTS `pms_core_orders`;
CREATE TABLE `pms_core_orders` (
`order_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`contact_id` bigint(20) DEFAULT NULL COMMENT '联系人ID',
`pms_room_id` bigint(20) DEFAULT NULL COMMENT '分配的房间ID',
`room_type_id` bigint(20) DEFAULT NULL COMMENT '预订的房型ID',
`channel_id` bigint(20) DEFAULT NULL COMMENT '订单来源渠道ID',
`check_in_date` date DEFAULT NULL COMMENT '计划入住日期',
`check_out_date` date DEFAULT NULL COMMENT '计划离店日期',
`num_adults` int(11) DEFAULT NULL COMMENT '成人数',
`num_children` int(11) DEFAULT NULL COMMENT '儿童数',
`total_amount` decimal(10, 2) DEFAULT NULL COMMENT '订单总金额',
`paid_amount` decimal(10, 2) DEFAULT '0.00' COMMENT '已付金额',
`order_status` varchar(50) DEFAULT NULL COMMENT '订单状态',
`order_source` varchar(50) DEFAULT NULL COMMENT '订单来源',
`notes` text COMMENT '订单备注',
`actual_check_in_time` datetime DEFAULT NULL COMMENT '实际入住时间',
`actual_check_out_time` datetime DEFAULT NULL COMMENT '实际退房时间',
`confirmed_time` datetime DEFAULT NULL COMMENT '订单确认时间',
`cancelled_time` datetime DEFAULT NULL COMMENT '订单取消时间',
`expected_arrival_time` time DEFAULT NULL COMMENT '预计到达时间',
`special_requests` text COMMENT '特殊要求',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`order_id`),
KEY `idx_pms_o_tenant_dept` (`tenant_id`, `dept_id`),
KEY `idx_pms_o_tenant_dept_status` (`tenant_id`, `dept_id`, `order_status`),
KEY `idx_pms_o_tenant_dept_dates` (
`tenant_id`,
`dept_id`,
`check_in_date`,
`check_out_date`
),
KEY `idx_pms_o_tenant_dept_contact` (`tenant_id`, `dept_id`, `contact_id`),
KEY `idx_pms_o_tenant_dept_room_dates` (
`tenant_id`,
`dept_id`,
`pms_room_id`,
`check_in_date`,
`check_out_date`
)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '核心订单表';
-- ----------------------------
-- Table structure for pms_core_order_items
-- ----------------------------
DROP TABLE IF EXISTS `pms_core_order_items`;
CREATE TABLE `pms_core_order_items` (
`order_item_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单项唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`order_id` bigint(20) NOT NULL COMMENT '所属订单ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`pms_room_id` bigint(20) DEFAULT NULL COMMENT '关联房间ID',
`product_id` bigint(20) DEFAULT NULL COMMENT '产品ID',
`product_type` varchar(50) DEFAULT NULL COMMENT '产品类型',
`description` varchar(500) DEFAULT NULL COMMENT '项目描述',
`quantity` int(11) DEFAULT NULL COMMENT '数量',
`unit_price` decimal(10, 2) DEFAULT NULL COMMENT '单价',
`service_date` date DEFAULT NULL COMMENT '服务日期',
`notes` text COMMENT '项目备注',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`order_item_id`),
KEY `idx_pms_oi_tenant_order` (`tenant_id`, `order_id`),
KEY `idx_pms_oi_tenant_dept_product` (
`tenant_id`,
`dept_id`,
`product_type`,
`product_id`
)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '订单项目表';
-- ----------------------------
-- Table structure for pms_core_channels
-- ----------------------------
DROP TABLE IF EXISTS `pms_core_channels`;
CREATE TABLE `pms_core_channels` (
`channel_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '渠道唯一ID',
`tenant_id` varchar(20) DEFAULT NULL COMMENT '租户ID (可空)',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID (门店,可空)',
`name` varchar(100) DEFAULT NULL COMMENT '渠道名称',
`channel_type` varchar(50) DEFAULT NULL COMMENT '渠道类型',
`description` varchar(500) DEFAULT NULL COMMENT '渠道描述',
`status` varchar(50) DEFAULT NULL COMMENT '状态',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`channel_id`),
KEY `idx_pms_ch_tenant_dept_status` (`tenant_id`, `dept_id`, `status`),
KEY `idx_pms_ch_tenant_dept_type` (`tenant_id`, `dept_id`, `channel_type`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT = '订单渠道表';
-- ----------------------------
-- Records for pms_core_channels (Basic Data based on Enum)
-- These are examples, adjust tenant_id/dept_id as needed or handle in service layer
-- ----------------------------
INSERT INTO `pms_core_channels`
VALUES (
1,
NULL,
NULL,
'现场步入',
'direct_booking',
'客人直接到店预订',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_core_channels`
VALUES (
2,
NULL,
NULL,
'电话预订',
'direct_booking',
'通过电话联系民宿预订',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_core_channels`
VALUES (
3,
NULL,
NULL,
'官网预订',
'direct_booking',
'通过民宿官方网站预订',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_core_channels`
VALUES (
4,
NULL,
NULL,
'H5商城',
'direct_booking',
'通过民宿H5商城预订',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_core_channels`
VALUES (
5,
NULL,
NULL,
'OTA渠道管理',
'ota',
'通过第三方OTA平台如携程、飞猪渠道管理器同步的订单',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_core_channels`
VALUES (
6,
NULL,
NULL,
'旅行社',
'travel_agency',
'通过合作旅行社预订',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_core_channels`
VALUES (
7,
NULL,
NULL,
'企业协议',
'corporate',
'通过企业协议预订',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_core_channels`
VALUES (
8,
NULL,
NULL,
'内部预订',
'internal_use',
'员工或内部人员预订',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_core_channels`
VALUES (
9,
NULL,
NULL,
'其他渠道',
'other',
'其他未列明的渠道',
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
-- ----------------------------
-- Table structure for pms_finance_folios
-- ----------------------------
DROP TABLE IF EXISTS `pms_finance_folios`;
CREATE TABLE `pms_finance_folios` (
`folio_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '账单唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`order_id` bigint(20) DEFAULT NULL COMMENT '关联订单ID',
`total_charges` decimal(10, 2) DEFAULT '0.00' COMMENT '总应收费用',
`total_payments` decimal(10, 2) DEFAULT '0.00' COMMENT '总已收付款',
`total_refunds` decimal(10, 2) DEFAULT '0.00' COMMENT '总已退款',
`folio_status` varchar(50) DEFAULT NULL COMMENT '账单状态',
`notes` text COMMENT '账单备注',
`closed_at` datetime DEFAULT NULL COMMENT '账单关闭时间',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`folio_id`),
UNIQUE KEY `unq_pms_ff_order` (`order_id`) COMMENT '订单与账单一对一',
KEY `idx_pms_ff_tenant_dept_order` (`tenant_id`, `dept_id`, `order_id`),
KEY `idx_pms_ff_tenant_dept_status` (`tenant_id`, `dept_id`, `folio_status`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '客户账单表';
-- ----------------------------
-- Table structure for pms_finance_transactions
-- ----------------------------
DROP TABLE IF EXISTS `pms_finance_transactions`;
CREATE TABLE `pms_finance_transactions` (
`transaction_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '交易唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`folio_id` bigint(20) NOT NULL COMMENT '所属账单ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`transaction_type` varchar(50) DEFAULT NULL COMMENT '交易类型',
`amount` decimal(10, 2) DEFAULT NULL COMMENT '交易金额',
`description` varchar(500) DEFAULT NULL COMMENT '交易描述',
`payment_method_id` bigint(20) DEFAULT NULL COMMENT '支付方式ID',
`payment_gateway_txn_id` varchar(128) DEFAULT NULL COMMENT '支付网关交易号',
`transaction_time` datetime DEFAULT NULL COMMENT '交易时间',
`related_order_item_id` bigint(20) DEFAULT NULL COMMENT '关联订单项ID',
`notes` text COMMENT '交易备注',
`is_void` tinyint(1) DEFAULT '0' COMMENT '是否已作废',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`transaction_id`),
KEY `idx_pms_ft_tenant_folio` (`tenant_id`, `folio_id`),
KEY `idx_pms_ft_tenant_dept_type_time` (
`tenant_id`,
`dept_id`,
`transaction_type`,
`transaction_time`
)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '财务交易流水表';
-- ----------------------------
-- Table structure for pms_finance_payment_methods
-- ----------------------------
DROP TABLE IF EXISTS `pms_finance_payment_methods`;
CREATE TABLE `pms_finance_payment_methods` (
`payment_method_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '支付方式唯一ID',
`tenant_id` varchar(20) DEFAULT NULL COMMENT '租户ID (可空)',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID (门店,可空)',
`name` varchar(100) DEFAULT NULL COMMENT '支付方式名称',
`method_type` varchar(50) DEFAULT NULL COMMENT '支付方式类型',
`details_json` json DEFAULT NULL COMMENT '附加配置',
`status` varchar(50) DEFAULT NULL COMMENT '状态',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`payment_method_id`),
KEY `idx_pms_fpm_tenant_dept_status` (`tenant_id`, `dept_id`, `status`),
KEY `idx_pms_fpm_tenant_dept_type` (`tenant_id`, `dept_id`, `method_type`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT = '支付方式表';
-- ----------------------------
-- Records for pms_finance_payment_methods (Basic Data based on Enum)
-- These are examples, adjust tenant_id/dept_id as needed or handle in service layer
-- ----------------------------
INSERT INTO `pms_finance_payment_methods`
VALUES (
1,
NULL,
NULL,
'现金',
'cash',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_finance_payment_methods`
VALUES (
2,
NULL,
NULL,
'支付宝',
'alipay',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_finance_payment_methods`
VALUES (
3,
NULL,
NULL,
'微信支付',
'wechat_pay',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_finance_payment_methods`
VALUES (
4,
NULL,
NULL,
'银行卡',
'credit_card_unionpay',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_finance_payment_methods`
VALUES (
5,
NULL,
NULL,
'银行转账',
'bank_transfer',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_finance_payment_methods`
VALUES (
6,
NULL,
NULL,
'公司挂账',
'company_account',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_finance_payment_methods`
VALUES (
7,
NULL,
NULL,
'代金券',
'voucher',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_finance_payment_methods`
VALUES (
8,
NULL,
NULL,
'积分兑换',
'points_redemption',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
INSERT INTO `pms_finance_payment_methods`
VALUES (
9,
NULL,
NULL,
'其他支付',
'other',
NULL,
'active',
NULL,
NULL,
NOW(),
NULL,
NULL,
'0'
);
-- ----------------------------
-- Table structure for pms_finance_extra_charge_items
-- ----------------------------
DROP TABLE IF EXISTS `pms_finance_extra_charge_items`;
CREATE TABLE `pms_finance_extra_charge_items` (
`item_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '附加费用项唯一ID',
`tenant_id` varchar(20) DEFAULT NULL COMMENT '租户ID (可空)',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID (门店,可空)',
`name` varchar(100) DEFAULT NULL COMMENT '项目名称',
`default_price` decimal(10, 2) DEFAULT NULL COMMENT '默认单价',
`category` varchar(50) DEFAULT NULL COMMENT '费用类别',
`is_taxable` tinyint(1) DEFAULT '0' COMMENT '是否应税',
`description` varchar(500) DEFAULT NULL COMMENT '项目描述',
`status` varchar(50) DEFAULT NULL COMMENT '状态',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`item_id`),
KEY `idx_pms_feci_tenant_dept_status` (`tenant_id`, `dept_id`, `status`),
KEY `idx_pms_feci_tenant_dept_category` (`tenant_id`, `dept_id`, `category`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '附加费用项目表';
-- ----------------------------
-- Table structure for pms_suppliers
-- ----------------------------
DROP TABLE IF EXISTS `pms_suppliers`;
CREATE TABLE `pms_suppliers` (
`supplier_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '供应商唯一ID',
`tenant_id` varchar(20) DEFAULT NULL COMMENT '租户ID (可空NULL表示全局供应商)',
`supplier_type` varchar(50) DEFAULT NULL COMMENT '供应商类型',
`company_name` varchar(255) DEFAULT NULL COMMENT '公司名称',
`contact_person` varchar(100) DEFAULT NULL COMMENT '联系人姓名',
`phone_number` varchar(50) DEFAULT NULL COMMENT '联系电话',
`email` varchar(255) DEFAULT NULL COMMENT '邮箱地址',
`business_scope` text COMMENT '业务范围描述',
`service_area` varchar(255) DEFAULT NULL COMMENT '服务区域',
`contract_info` text COMMENT '合同信息',
`status` varchar(50) DEFAULT NULL COMMENT '供应商状态',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`supplier_id`),
KEY `idx_pms_s_tenant_type` (`tenant_id`, `supplier_type`),
KEY `idx_pms_s_tenant_name` (`tenant_id`, `company_name`),
KEY `idx_pms_s_tenant_status` (`tenant_id`, `status`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '供应商表';
-- ----------------------------
-- Table structure for pms_partners
-- ----------------------------
DROP TABLE IF EXISTS `pms_partners`;
CREATE TABLE `pms_partners` (
`partner_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '合作伙伴唯一ID',
`tenant_id` varchar(20) DEFAULT NULL COMMENT '租户ID (可空NULL表示全局合作伙伴)',
`partner_type` varchar(50) DEFAULT NULL COMMENT '合作伙伴类型',
`company_name` varchar(255) DEFAULT NULL COMMENT '公司名称',
`contact_person` varchar(100) DEFAULT NULL COMMENT '联系人姓名',
`phone_number` varchar(50) DEFAULT NULL COMMENT '联系电话',
`email` varchar(255) DEFAULT NULL COMMENT '邮箱地址',
`website_url` varchar(255) DEFAULT NULL COMMENT '网站地址',
`commission_rate` decimal(5, 2) DEFAULT NULL COMMENT '佣金比例',
`payment_terms` varchar(255) DEFAULT NULL COMMENT '付款条件',
`cooperation_level` varchar(50) DEFAULT NULL COMMENT '合作等级',
`contract_start_date` date DEFAULT NULL COMMENT '合同开始日期',
`contract_end_date` date DEFAULT NULL COMMENT '合同结束日期',
`status` varchar(50) DEFAULT NULL COMMENT '合作伙伴状态',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`partner_id`),
KEY `idx_pms_p_tenant_type` (`tenant_id`, `partner_type`),
KEY `idx_pms_p_tenant_name` (`tenant_id`, `company_name`),
KEY `idx_pms_p_tenant_status` (`tenant_id`, `status`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '合作伙伴表';
-- ----------------------------
-- Table structure for pms_tenant_settings
-- ----------------------------
DROP TABLE IF EXISTS `pms_tenant_settings`;
CREATE TABLE `pms_tenant_settings` (
`setting_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '设置唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID (门店NULL=租户级)',
`setting_group` varchar(100) DEFAULT NULL COMMENT '设置分组',
`setting_key` varchar(100) DEFAULT NULL COMMENT '设置键名',
`setting_value` text COMMENT '设置值',
`value_type` varchar(50) DEFAULT NULL COMMENT '值类型',
`description` varchar(500) DEFAULT NULL COMMENT '设置描述',
`is_sensitive` tinyint(1) DEFAULT '0' COMMENT '是否敏感设置',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`setting_id`),
UNIQUE KEY `unq_pms_ts_tenant_dept_group_key` (
`tenant_id`,
`dept_id`,
`setting_group`,
`setting_key`,
`del_flag`
),
KEY `idx_pms_ts_tenant_dept_group` (`tenant_id`, `dept_id`, `setting_group`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '租户/门店配置表';
-- ----------------------------
-- Table structure for pms_mp_settings
-- ----------------------------
DROP TABLE IF EXISTS `pms_mp_settings`;
CREATE TABLE `pms_mp_settings` (
`setting_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '小程序设置唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID (门店NULL=租户级)',
`setting_key` varchar(100) DEFAULT NULL COMMENT '设置键名',
`setting_value` text COMMENT '设置值',
`value_type` varchar(50) DEFAULT NULL COMMENT '值类型',
`description` varchar(500) DEFAULT NULL COMMENT '设置描述',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`setting_id`),
UNIQUE KEY `unq_pms_mps_tenant_dept_key` (
`tenant_id`,
`dept_id`,
`setting_key`,
`del_flag`
),
KEY `idx_pms_mps_tenant_dept` (`tenant_id`, `dept_id`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '小程序配置表';
-- ----------------------------
-- Table structure for pms_tenant_user_devices
-- ----------------------------
DROP TABLE IF EXISTS `pms_tenant_user_devices`;
CREATE TABLE `pms_tenant_user_devices` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '设备记录唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`device_type` varchar(50) DEFAULT NULL COMMENT '设备类型',
`device_token` varchar(255) DEFAULT NULL COMMENT '设备令牌',
`app_version` varchar(50) DEFAULT NULL COMMENT '应用版本',
`last_login_at` datetime DEFAULT NULL COMMENT '最后登录时间',
`status` varchar(50) DEFAULT NULL COMMENT '状态',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_pms_tud_tenant_user_device` (`tenant_id`, `user_id`, `device_type`),
KEY `idx_pms_tud_tenant_user_status` (`tenant_id`, `user_id`, `status`),
KEY `idx_pms_tud_device_token` (`device_token`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '用户设备表';
-- ----------------------------
-- Table structure for pms_order_status_history
-- ----------------------------
DROP TABLE IF EXISTS `pms_order_status_history`;
CREATE TABLE `pms_order_status_history` (
`history_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '历史记录唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`order_id` bigint(20) NOT NULL COMMENT '订单ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`from_status` varchar(50) DEFAULT NULL COMMENT '原状态',
`to_status` varchar(50) NOT NULL COMMENT '新状态',
`change_reason` varchar(500) DEFAULT NULL COMMENT '状态变更原因',
`change_time` datetime NOT NULL COMMENT '变更时间',
`change_by` bigint(20) DEFAULT NULL COMMENT '操作人',
`notes` text COMMENT '备注',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`history_id`),
KEY `idx_pms_osh_tenant_order` (`tenant_id`, `order_id`),
KEY `idx_pms_osh_tenant_dept_time` (`tenant_id`, `dept_id`, `change_time`),
KEY `idx_pms_osh_order_time` (`order_id`, `change_time`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '订单状态变更历史表';
-- ----------------------------
-- Table structure for pms_order_guests
-- ----------------------------
DROP TABLE IF EXISTS `pms_order_guests`;
CREATE TABLE `pms_order_guests` (
`guest_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '客人记录唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`order_id` bigint(20) NOT NULL COMMENT '订单ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`contact_id` bigint(20) DEFAULT NULL COMMENT '关联客户联系人ID(可空)',
`guest_type` varchar(50) NOT NULL COMMENT '客人类型(primary/additional)',
`is_primary_contact` tinyint(1) DEFAULT '0' COMMENT '是否为订单主联系人',
`full_name` varchar(255) NOT NULL COMMENT '客人姓名',
`id_type` varchar(50) DEFAULT NULL COMMENT '证件类型',
`id_number_encrypted` varchar(255) DEFAULT NULL COMMENT '证件号码(加密)',
`phone_number` varchar(50) DEFAULT NULL COMMENT '联系电话',
`age_group` varchar(50) DEFAULT NULL COMMENT '年龄组(adult/child/infant)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`guest_id`),
KEY `idx_pms_og_tenant_order` (`tenant_id`, `order_id`),
KEY `idx_pms_og_tenant_dept` (`tenant_id`, `dept_id`),
KEY `idx_pms_og_order_guest_type` (`order_id`, `guest_type`),
KEY `idx_pms_og_tenant_contact` (`tenant_id`, `contact_id`),
KEY `idx_pms_og_order_primary` (`order_id`, `is_primary_contact`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '订单入住客人表';
-- ----------------------------
-- Table structure for pms_pricing_calculations
-- ----------------------------
DROP TABLE IF EXISTS `pms_pricing_calculations`;
CREATE TABLE `pms_pricing_calculations` (
`calculation_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '计算记录唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`room_type_id` bigint(20) NOT NULL COMMENT '房型ID',
`check_in_date` date NOT NULL COMMENT '入住日期',
`check_out_date` date NOT NULL COMMENT '离店日期',
`base_price` decimal(10, 2) NOT NULL COMMENT '基础价格',
`final_price` decimal(10, 2) NOT NULL COMMENT '最终价格',
`applied_rules_json` json DEFAULT NULL COMMENT '应用的规则详情',
`calculation_time` datetime NOT NULL COMMENT '计算时间',
`channel_id` bigint(20) DEFAULT NULL COMMENT '渠道ID',
`guest_count` int(11) DEFAULT NULL COMMENT '客人数量',
`advance_booking_days` int(11) DEFAULT NULL COMMENT '提前预订天数',
`calculation_context` json DEFAULT NULL COMMENT '计算上下文',
PRIMARY KEY (`calculation_id`),
KEY `idx_pms_pc_tenant_dept_rt_dates` (
`tenant_id`,
`dept_id`,
`room_type_id`,
`check_in_date`,
`check_out_date`
),
KEY `idx_pms_pc_calculation_time` (`calculation_time`),
KEY `idx_pms_pc_tenant_dept_channel` (`tenant_id`, `dept_id`, `channel_id`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '价格计算历史表';
-- ----------------------------
-- Table structure for pms_special_date_pricing
-- ----------------------------
DROP TABLE IF EXISTS `pms_special_date_pricing`;
CREATE TABLE `pms_special_date_pricing` (
`special_date_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '特殊日期唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID (门店,可空)',
`room_type_id` bigint(20) DEFAULT NULL COMMENT '房型ID (可空表示全部房型)',
`special_date` date NOT NULL COMMENT '特殊日期',
`date_type` varchar(50) NOT NULL COMMENT '日期类型',
`date_name` varchar(100) NOT NULL COMMENT '日期名称',
`price_adjustment_type` varchar(50) NOT NULL COMMENT '调整类型',
`adjustment_value` decimal(10, 2) NOT NULL COMMENT '调整值',
`priority` int(11) DEFAULT '100' COMMENT '优先级',
`status` varchar(50) DEFAULT 'active' COMMENT '状态',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志0代表存在 1代表删除',
PRIMARY KEY (`special_date_id`),
KEY `idx_pms_sdp_tenant_dept_date` (`tenant_id`, `dept_id`, `special_date`),
KEY `idx_pms_sdp_tenant_dept_rt` (`tenant_id`, `dept_id`, `room_type_id`),
KEY `idx_pms_sdp_tenant_dept_type_status` (`tenant_id`, `dept_id`, `date_type`, `status`),
KEY `idx_pms_sdp_date_range` (`special_date`, `status`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '特殊日期价格表';
-- ----------------------------
-- Table structure for pms_room_inventory_snapshot
-- ----------------------------
DROP TABLE IF EXISTS `pms_room_inventory_snapshot`;
CREATE TABLE `pms_room_inventory_snapshot` (
`snapshot_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '快照唯一ID',
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
`dept_id` bigint(20) NOT NULL COMMENT '部门ID (门店)',
`room_type_id` bigint(20) NOT NULL COMMENT '房型ID',
`snapshot_date` date NOT NULL COMMENT '快照日期',
`total_rooms` int(11) NOT NULL COMMENT '总房间数',
`available_rooms` int(11) NOT NULL COMMENT '可用房间数',
`occupied_rooms` int(11) NOT NULL COMMENT '已占用房间数',
`maintenance_rooms` int(11) NOT NULL COMMENT '维护中房间数',
`locked_rooms` int(11) NOT NULL COMMENT '锁定房间数',
`dirty_rooms` int(11) NOT NULL DEFAULT '0' COMMENT '脏房数量',
`out_of_order_rooms` int(11) NOT NULL DEFAULT '0' COMMENT '停用房间数',
`reserved_rooms` int(11) NOT NULL DEFAULT '0' COMMENT '预留房间数',
`last_updated` datetime NOT NULL COMMENT '最后更新时间',
PRIMARY KEY (`snapshot_id`),
UNIQUE KEY `unq_pms_ris_tenant_dept_rt_date` (
`tenant_id`,
`dept_id`,
`room_type_id`,
`snapshot_date`
),
KEY `idx_pms_ris_tenant_dept_date` (`tenant_id`, `dept_id`, `snapshot_date`),
KEY `idx_pms_ris_last_updated` (`last_updated`)
) ENGINE = InnoDB AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 COMMENT = '房型库存快照表';
-- ----------------------------
-- Add Foreign Key Constraints
-- Note: Foreign key constraints are added after all tables are created
-- to avoid dependency issues. Ensure referenced tables exist.
-- ----------------------------
-- ALTER TABLE `pms_room_rooms` ADD CONSTRAINT `fk_pms_room_rooms_room_type_id` FOREIGN KEY (`room_type_id`) REFERENCES `pms_room_types` (`room_type_id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- ALTER TABLE `pms_room_locks` ADD CONSTRAINT `fk_pms_room_locks_room_id` FOREIGN KEY (`room_id`) REFERENCES `pms_room_rooms` (`room_id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- ALTER TABLE `pms_core_orders` ADD CONSTRAINT `fk_pms_core_orders_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `pms_customer_contacts` (`contact_id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- ALTER TABLE `pms_core_orders` ADD CONSTRAINT `fk_pms_core_orders_room_type_id` FOREIGN KEY (`room_type_id`) REFERENCES `pms_room_types` (`room_type_id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- ALTER TABLE `pms_core_orders` ADD CONSTRAINT `fk_pms_core_orders_pms_room_id` FOREIGN KEY (`pms_room_id`) REFERENCES `pms_room_rooms` (`room_id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- ALTER TABLE `pms_core_orders` ADD CONSTRAINT `fk_pms_core_orders_channel_id` FOREIGN KEY (`channel_id`) REFERENCES `pms_core_channels` (`channel_id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- ALTER TABLE `pms_core_order_items` ADD CONSTRAINT `fk_pms_order_items_order_id` FOREIGN KEY (`order_id`) REFERENCES `pms_core_orders` (`order_id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- ALTER TABLE `pms_finance_folios` ADD CONSTRAINT `fk_pms_finance_folios_order_id` FOREIGN KEY (`order_id`) REFERENCES `pms_core_orders` (`order_id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- ALTER TABLE `pms_finance_transactions` ADD CONSTRAINT `fk_pms_finance_transactions_folio_id` FOREIGN KEY (`folio_id`) REFERENCES `pms_finance_folios` (`folio_id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- ALTER TABLE `pms_finance_transactions` ADD CONSTRAINT `fk_pms_finance_transactions_payment_method_id` FOREIGN KEY (`payment_method_id`) REFERENCES `pms_finance_payment_methods` (`payment_method_id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- ALTER TABLE `pms_finance_transactions` ADD CONSTRAINT `fk_pms_finance_transactions_order_item_id` FOREIGN KEY (`related_order_item_id`) REFERENCES `pms_core_order_items` (`order_item_id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- ALTER TABLE `pms_contact_tag_relations` ADD CONSTRAINT `fk_pms_ctr_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `pms_customer_contacts` (`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- ALTER TABLE `pms_contact_tag_relations` ADD CONSTRAINT `fk_pms_ctr_tag_id` FOREIGN KEY (`tag_id`) REFERENCES `pms_contact_tags` (`tag_id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- ALTER TABLE `pms_tenant_user_devices` ADD CONSTRAINT `fk_pms_tud_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- ALTER TABLE `pms_tenant_settings` ADD CONSTRAINT `fk_pms_ts_dept_id` FOREIGN KEY (`dept_id`) REFERENCES `sys_dept` (`dept_id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- ALTER TABLE `pms_mp_settings` ADD CONSTRAINT `fk_pms_mps_dept_id` FOREIGN KEY (`dept_id`) REFERENCES `sys_dept` (`dept_id`) ON DELETE SET NULL ON UPDATE CASCADE;
SET FOREIGN_KEY_CHECKS = 1;