Files
smart_venue/other/sql/add.sql
2026-05-17 10:09:36 +08:00

268 lines
18 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.
-- ==========================================
-- 完整的数据库补充脚本(整合所有历史变更 + 数据类型修正)
-- ==========================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ==========================================
-- 第一部分:为已有表添加缺失字段
-- ==========================================
-- 1. 为 sv_member 表添加缺失字段(对应 202604.sql
ALTER TABLE `sv_member`
ADD COLUMN `avatar_modify_count` int(11) DEFAULT '0' COMMENT '头像修改次数(本年)' AFTER `deleted`,
ADD COLUMN `avatar_modify_year` int(11) DEFAULT NULL COMMENT '头像修改统计年份' AFTER `avatar_modify_count`;
-- 2. 为 sv_venue 表添加缺失字段(包含 202312.sql 的字段)
ALTER TABLE `sv_venue`
ADD COLUMN `limit_day` int(11) DEFAULT NULL COMMENT '每天预约限制' AFTER `deleted`,
ADD COLUMN `limit_week` int(11) DEFAULT NULL COMMENT '每周预约限制' AFTER `limit_day`,
ADD COLUMN `limit_no_day` int(11) DEFAULT NULL COMMENT '每天预约限制' AFTER `limit_week`,
ADD COLUMN `limit_no_week` int(11) DEFAULT NULL COMMENT '每周预约限制' AFTER `limit_no_day`,
ADD COLUMN `copy_week` int(11) DEFAULT NULL COMMENT '复制周几' AFTER `limit_no_week`,
ADD COLUMN `copy_time` time DEFAULT NULL COMMENT '复制时间' AFTER `copy_week`,
ADD COLUMN `copy_target` int(11) DEFAULT NULL COMMENT '向后复制多少' AFTER `copy_time`,
ADD COLUMN `copy_control` tinyint(4) DEFAULT '0' COMMENT '复制开关 1-关闭,不复制 0-开启,复制' AFTER `copy_target`,
ADD COLUMN `pay_style` tinyint(4) DEFAULT '0' COMMENT '计费方式 0-按次收费、1-按时收费' AFTER `copy_control`,
ADD COLUMN `time_pay_hour` int(11) DEFAULT NULL COMMENT '按次收费几小时内免费' AFTER `pay_style`;
-- 3. 为 sv_venue_lesson 表添加缺失字段
ALTER TABLE `sv_venue_lesson`
ADD COLUMN `order_limit` int(11) DEFAULT NULL COMMENT '可取消预约时间(小时)' AFTER `deleted`;
-- ==========================================
-- 第二部分:创建缺失的新表(数据类型已修正)
-- ==========================================
-- 4. 创建 sv_disclaimers (免责声明表) - 对应 202404.sql
DROP TABLE IF EXISTS `sv_disclaimers`;
CREATE TABLE `sv_disclaimers` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`platform_id` int(11) NOT NULL COMMENT '平台来源ID',
`description` longtext CHARACTER SET utf8mb4 NOT NULL COMMENT '免责声明内容',
`created_id` int(10) unsigned DEFAULT '0' COMMENT '创建者编号',
`modified_id` int(10) unsigned DEFAULT '0' COMMENT '修改者编号',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` int(3) unsigned DEFAULT '0' COMMENT '删除标识位: 0正常 1删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='免责声明';
-- 5. 创建 sv_health_doc (健康文档表)
DROP TABLE IF EXISTS `sv_health_doc`;
CREATE TABLE `sv_health_doc` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL COMMENT '用户ID',
`doc_name` varchar(100) NOT NULL COMMENT '文档名称',
`doc_type` varchar(50) NOT NULL COMMENT '文档类型',
`file_type` varchar(20) NOT NULL COMMENT '文件类型',
`doc_path` varchar(200) NOT NULL COMMENT '文档路径',
`doc_date` date NOT NULL COMMENT '文档日期',
`platform_id` int(11) NOT NULL COMMENT '平台来源ID',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(3) unsigned DEFAULT '0' COMMENT '删除标识位: 0正常 1删除',
PRIMARY KEY (`id`),
KEY `idx_member_id` (`member_id`,`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康文档';
-- 6. 创建 sv_member_lesson_ticket_invite (门票邀请表) - 使用历史脚本的表名
DROP TABLE IF EXISTS `sv_member_lesson_ticket_invite`;
CREATE TABLE `sv_member_lesson_ticket_invite` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`owner_id` int(11) NOT NULL DEFAULT '1' COMMENT '场馆类型',
`member_id` int(11) NOT NULL,
`member_name` varchar(50) DEFAULT NULL COMMENT '被邀请用户姓名',
`mobile` varchar(11) DEFAULT NULL COMMENT '手机号',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态0-未选中 1-已选中',
`platform_id` int(11) NOT NULL COMMENT '平台来源ID',
`created_id` int(10) unsigned DEFAULT '0' COMMENT '创建者编号',
`modified_id` int(10) unsigned DEFAULT '0' COMMENT '修改者编号',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(3) unsigned DEFAULT '0' COMMENT '删除标识位: 0正常 1删除',
PRIMARY KEY (`id`),
KEY `lesson_id` (`deleted`,`status`),
KEY `idx_owner_id` (`owner_id`,`deleted`),
KEY `idx_member_id` (`member_id`,`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='场馆课程预订信息';
-- 7. 创建 sv_member_enter_status (用户入场状态表) - 对应 202312.sql
DROP TABLE IF EXISTS `sv_member_enter_status`;
CREATE TABLE `sv_member_enter_status` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL COMMENT '客户ID',
`venue_id` int(11) NOT NULL COMMENT '场馆ID',
`status` int(11) NOT NULL COMMENT '状态 0-场外 1-场内',
`created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_member_venue` (`member_id`, `venue_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1231 DEFAULT CHARSET=utf8mb4 COMMENT='用户在场馆的状态';
-- 8. 创建 sv_barcode (二维码表) - 整合 202312.sql 的 order_sn 字段
DROP TABLE IF EXISTS `sv_barcode`;
CREATE TABLE `sv_barcode` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`barcode` varchar(50) NOT NULL COMMENT '二维码',
`order_sn` varchar(200) DEFAULT NULL COMMENT '订单号',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0-未使用 1-已使用',
`member_id` int(11) NOT NULL COMMENT '用户ID',
`venue_id` int(11) NOT NULL COMMENT '场馆ID',
`enter` tinyint(4) DEFAULT NULL COMMENT '入场标识',
`created_id` int(10) DEFAULT '0' COMMENT '创建者编号',
`modified_id` int(10) DEFAULT '0' COMMENT '修改者编号',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_barcode` (`barcode`),
KEY `idx_order_sn` (`order_sn`),
KEY `idx_member_id` (`member_id`),
KEY `idx_venue_id` (`venue_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二维码';
-- 9. 创建 sv_barcode_enter_log (二维码进出记录表)
DROP TABLE IF EXISTS `sv_barcode_enter_log`;
CREATE TABLE `sv_barcode_enter_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`barcode` varchar(50) NOT NULL COMMENT '二维码',
`venue_id` int(11) NOT NULL COMMENT '场馆ID',
`type` tinyint(4) NOT NULL COMMENT '类型: 0-入场 1-出场',
`platform_id` int(11) NOT NULL COMMENT '平台来源ID',
`created_id` int(10) DEFAULT '0' COMMENT '创建者编号',
`modified_id` int(10) DEFAULT '0' COMMENT '修改者编号',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_barcode` (`barcode`),
KEY `idx_venue_id` (`venue_id`),
KEY `idx_created_time` (`created_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二维码进出记录';
-- 10. 创建 sv_barcode_offline (二维码离线表)
DROP TABLE IF EXISTS `sv_barcode_offline`;
CREATE TABLE `sv_barcode_offline` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`barcode` varchar(50) NOT NULL COMMENT '二维码',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime NOT NULL COMMENT '结束时间',
`venue_id` int(11) NOT NULL COMMENT '场馆ID',
`device_name` varchar(100) DEFAULT NULL COMMENT '设备名称',
`created_id` int(10) DEFAULT '0' COMMENT '创建者编号',
`modified_id` int(10) DEFAULT '0' COMMENT '修改者编号',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_barcode` (`barcode`),
KEY `idx_venue_id` (`venue_id`),
KEY `idx_time` (`start_time`,`end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二维码离线记录';
-- 11. 创建 sv_barcode_order_time (二维码订单时间表) - ⭐ 数据类型已修正为 DECIMAL
DROP TABLE IF EXISTS `sv_barcode_order_time`;
CREATE TABLE `sv_barcode_order_time` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL COMMENT '用户ID',
`venue_id` int(11) NOT NULL COMMENT '场馆ID',
`order_sn` varchar(200) DEFAULT NULL COMMENT '退款订单号',
`order_add_sn` varchar(30) DEFAULT NULL COMMENT '追加付款订单号',
`order_start` datetime NOT NULL COMMENT '订单开始时间',
`order_end` datetime NOT NULL COMMENT '订单结束时间',
`status` int(11) DEFAULT NULL COMMENT '0-有效 1-失效',
`paying` int(11) DEFAULT NULL COMMENT '支付状态: 0-不需要退款 1-待结算/需要退款 2-已补交费用',
`pay_money` decimal(10,2) DEFAULT NULL COMMENT '当前退款金额',
`sum_pay_money` decimal(10,2) DEFAULT NULL COMMENT '总退款金额',
`last_enter` datetime DEFAULT NULL COMMENT '最后入场时间',
`last_out` datetime DEFAULT NULL COMMENT '最后出场时间',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_sn` (`order_sn`),
KEY `idx_member_id` (`member_id`),
KEY `idx_venue_id` (`venue_id`),
KEY `idx_order_time` (`order_start`,`order_end`),
KEY `idx_status` (`status`,`paying`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二维码订单时间';
-- 12. 创建 sv_wx_config (微信配置表)
DROP TABLE IF EXISTS `sv_wx_config`;
CREATE TABLE `sv_wx_config` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`wx_open_id` varchar(100) NOT NULL COMMENT '微信OpenID',
`venue_id` int(11) NOT NULL COMMENT '场馆ID',
`created_id` int(10) DEFAULT '0' COMMENT '创建者编号',
`modified_id` int(10) DEFAULT '0' COMMENT '修改者编号',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_wx_open_id` (`wx_open_id`),
KEY `idx_venue_id` (`venue_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信配置';
SET FOREIGN_KEY_CHECKS = 1;
-- ==========================================
-- 第三部分:验证脚本执行结果
-- ==========================================
-- 验证字段是否添加成功
SELECT
TABLE_NAME,
COLUMN_NAME,
COLUMN_TYPE,
COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME IN ('sv_member', 'sv_venue', 'sv_venue_lesson')
AND COLUMN_NAME IN (
'avatar_modify_count', 'avatar_modify_year',
'limit_day', 'limit_week', 'limit_no_day', 'limit_no_week',
'copy_week', 'copy_time', 'copy_target', 'copy_control',
'pay_style', 'time_pay_hour', 'order_limit'
)
ORDER BY TABLE_NAME, ORDINAL_POSITION;
-- 验证新表是否创建成功
SELECT
TABLE_NAME,
TABLE_COMMENT,
CREATE_TIME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME IN (
'sv_disclaimers', 'sv_health_doc', 'sv_member_lesson_ticket_invite',
'sv_member_enter_status', 'sv_barcode', 'sv_barcode_enter_log',
'sv_barcode_offline', 'sv_barcode_order_time', 'sv_wx_config'
)
ORDER BY TABLE_NAME;
-- 特别验证 sv_barcode_order_time 的字段类型是否正确
SELECT
COLUMN_NAME,
COLUMN_TYPE,
COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'sv_barcode_order_time'
AND COLUMN_NAME IN ('pay_money', 'sum_pay_money')
ORDER BY ORDINAL_POSITION;
CREATE TABLE IF NOT EXISTS `sv_health_docs` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
`member_id` int(11) NOT NULL COMMENT '会员编号',
`doc_name` varchar(100) DEFAULT NULL COMMENT '文档名称',
`doc_type` char(10) DEFAULT NULL COMMENT '文档类型',
`file_type` varchar(20) DEFAULT NULL COMMENT '文件类型',
`doc_path` varchar(255) DEFAULT NULL COMMENT '文档路径',
`doc_date` date DEFAULT NULL COMMENT '文档日期',
`platform_id` int(11) NOT NULL COMMENT '平台编号',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除状态 0-未删除 1-已删除',
PRIMARY KEY (`id`),
KEY `idx_member_id` (`member_id`),
KEY `idx_platform_id` (`platform_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='健康证';