mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-27 21:56:40 +08:00
1031 lines
48 KiB
SQL
1031 lines
48 KiB
SQL
-- 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; |