122 lines
6.7 KiB
SQL
122 lines
6.7 KiB
SQL
-- 单店茶室预约、分端 App 类型及人工注销申请。MySQL 5.7 / 8.0。
|
||
-- 仅新增表和设置页菜单权限,不更改既有聊天数据,不填入虚构门店、包间或预约。
|
||
-- 部署顺序:确认目标库并执行本脚本 -> Java -> 授予设置页权限 -> PC -> 重新打包 App。
|
||
-- 读取未配置设置时默认三端均为聊天。所有配置与记录通过既有租户组件访问。
|
||
|
||
CREATE TABLE IF NOT EXISTS member_app_setting (
|
||
id bigint NOT NULL AUTO_INCREMENT,
|
||
config_key varchar(32) NOT NULL DEFAULT 'main',
|
||
config_json mediumtext NOT NULL COMMENT '经服务端校验的模式与公开门店资料',
|
||
creator varchar(64) DEFAULT '',
|
||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater varchar(64) DEFAULT '',
|
||
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
deleted bit(1) NOT NULL DEFAULT b'0',
|
||
tenant_id bigint NOT NULL DEFAULT 0,
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_app_setting (tenant_id, config_key, deleted)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='App模式和单店设置';
|
||
|
||
CREATE TABLE IF NOT EXISTS member_tea_room (
|
||
id bigint NOT NULL AUTO_INCREMENT,
|
||
name varchar(80) NOT NULL,
|
||
cover varchar(2048) NOT NULL,
|
||
capacity int NOT NULL,
|
||
facilities text NOT NULL COMMENT 'JSON字符串数组',
|
||
description varchar(2000) NOT NULL DEFAULT '',
|
||
price int NOT NULL COMMENT '每个预约时段价格,单位分,到店付款',
|
||
sort int NOT NULL DEFAULT 0,
|
||
enabled bit(1) NOT NULL DEFAULT b'1',
|
||
creator varchar(64) DEFAULT '',
|
||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater varchar(64) DEFAULT '',
|
||
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
deleted bit(1) NOT NULL DEFAULT b'0',
|
||
tenant_id bigint NOT NULL DEFAULT 0,
|
||
PRIMARY KEY (id),
|
||
KEY idx_tea_room_list (tenant_id, enabled, sort)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='茶室包间';
|
||
|
||
CREATE TABLE IF NOT EXISTS member_tea_booking (
|
||
id bigint NOT NULL AUTO_INCREMENT,
|
||
booking_no varchar(40) NOT NULL,
|
||
member_id bigint NOT NULL,
|
||
room_id bigint NOT NULL,
|
||
room_name varchar(80) NOT NULL,
|
||
room_cover varchar(2048) NOT NULL,
|
||
store_name varchar(80) NOT NULL,
|
||
store_address varchar(300) NOT NULL,
|
||
store_phone varchar(30) NOT NULL,
|
||
date date NOT NULL COMMENT '中国标准时间预约日期',
|
||
start_time varchar(5) NOT NULL,
|
||
end_time varchar(5) NOT NULL,
|
||
start_at datetime NOT NULL,
|
||
end_at datetime NOT NULL,
|
||
persons int NOT NULL,
|
||
contact_name varchar(40) NOT NULL,
|
||
contact_phone varchar(30) NOT NULL,
|
||
remark varchar(500) NOT NULL DEFAULT '',
|
||
price int NOT NULL COMMENT '提交时价格快照,单位分',
|
||
status varchar(16) NOT NULL DEFAULT 'pending' COMMENT 'pending/confirmed/completed/cancelled/rejected;过时pending对外计算expired',
|
||
reason varchar(500) NOT NULL DEFAULT '',
|
||
request_id varchar(64) DEFAULT NULL,
|
||
request_hash char(64) NOT NULL,
|
||
creator varchar(64) DEFAULT '',
|
||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater varchar(64) DEFAULT '',
|
||
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
deleted bit(1) NOT NULL DEFAULT b'0',
|
||
tenant_id bigint NOT NULL DEFAULT 0,
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_tea_booking_no (tenant_id, booking_no),
|
||
UNIQUE KEY uk_tea_booking_request (tenant_id, member_id, request_id),
|
||
KEY idx_tea_booking_room_time (tenant_id, room_id, status, start_at, end_at),
|
||
KEY idx_tea_booking_member (tenant_id, member_id, id),
|
||
KEY idx_tea_booking_admin (tenant_id, date, status)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='茶室预约申请与确认';
|
||
|
||
CREATE TABLE IF NOT EXISTS member_account_closure_request (
|
||
id bigint NOT NULL AUTO_INCREMENT,
|
||
member_id bigint NOT NULL,
|
||
nickname varchar(80) DEFAULT '',
|
||
contact_phone varchar(30) DEFAULT '',
|
||
reason varchar(500) NOT NULL DEFAULT '',
|
||
status varchar(16) NOT NULL DEFAULT 'pending' COMMENT 'pending/processing/resolved/rejected;resolved仅表示申请已人工处理',
|
||
process_remark varchar(1000) NOT NULL DEFAULT '',
|
||
creator varchar(64) DEFAULT '',
|
||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater varchar(64) DEFAULT '',
|
||
update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
deleted bit(1) NOT NULL DEFAULT b'0',
|
||
tenant_id bigint NOT NULL DEFAULT 0,
|
||
active_flag tinyint GENERATED ALWAYS AS (CASE WHEN deleted = 0 AND status IN ('pending','processing') THEN 1 ELSE NULL END) STORED,
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_account_closure_active (tenant_id, member_id, active_flag),
|
||
KEY idx_account_closure_page (tenant_id, status, id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='人工注销账号申请,不自动删除账号';
|
||
|
||
-- 优先复用已配置的设置页面,保持既有角色关联。
|
||
SET @tea_setting_menu_id = (SELECT MIN(id) FROM system_menu WHERE component='app/setting/index' AND deleted=0);
|
||
SET @tea_app_parent_id = (SELECT parent_id FROM system_menu WHERE id=@tea_setting_menu_id);
|
||
SET @tea_app_parent_id = COALESCE(@tea_app_parent_id,
|
||
(SELECT MIN(id) FROM system_menu WHERE type=1 AND path IN ('app','/app') AND deleted=0));
|
||
INSERT INTO system_menu (name,permission,type,sort,parent_id,path,icon,component,status,visible,keep_alive,always_show,creator,updater,deleted)
|
||
SELECT '应用管理','',1,30,0,'app','ep:iphone',NULL,0,b'1',b'1',b'1','1','1',b'0'
|
||
WHERE @tea_app_parent_id IS NULL;
|
||
SET @tea_app_parent_id = COALESCE(@tea_app_parent_id,
|
||
(SELECT MIN(id) FROM system_menu WHERE type=1 AND path IN ('app','/app') AND deleted=0));
|
||
INSERT INTO system_menu (name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,updater,deleted)
|
||
SELECT '应用设置','app:setting:query',2,20,@tea_app_parent_id,'setting','ep:setting','app/setting/index','AppSetting',0,b'1',b'1',b'1','1','1',b'0'
|
||
WHERE @tea_setting_menu_id IS NULL;
|
||
SET @tea_setting_menu_id = (SELECT MIN(id) FROM system_menu WHERE component='app/setting/index' AND deleted=0);
|
||
UPDATE system_menu SET permission='app:setting:query',component_name='AppSetting',update_time=CURRENT_TIMESTAMP WHERE id=@tea_setting_menu_id;
|
||
INSERT INTO system_menu (name,permission,type,sort,parent_id,path,status,visible,keep_alive,always_show,creator,updater,deleted)
|
||
SELECT buttons.name,buttons.permission,3,buttons.sort,@tea_setting_menu_id,'',0,b'1',b'1',b'1','1','1',b'0'
|
||
FROM (
|
||
SELECT '设置查询' name,'app:setting:query' permission,1 sort
|
||
UNION ALL SELECT '设置与包间维护','app:setting:update',2
|
||
UNION ALL SELECT '预约与注销申请处理','app:setting:booking',3
|
||
) buttons
|
||
WHERE NOT EXISTS (SELECT 1 FROM system_menu m WHERE m.permission=buttons.permission AND m.type=3 AND m.deleted=0);
|
||
|