-- 用户主表（共用属性）
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(30) NOT NULL COMMENT '账号',
  `password` varchar(100) DEFAULT '' COMMENT '密码',
  `nickname` varchar(30) NOT NULL COMMENT '昵称',
  `avatar` varchar(100) DEFAULT '' COMMENT '头像地址',
  `status` int DEFAULT 0 COMMENT '状态（0正常 1停用 2待审核）',
  `role` varchar(10) NOT NULL COMMENT '角色（1超级管理员 2普通用户）',
  `creator` bigint DEFAULT NULL COMMENT '创建者id',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `updater` bigint DEFAULT NULL COMMENT '更新者id',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `deleted` tinyint DEFAULT 0 COMMENT '删除标识（0未删 1已删）',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_sys_user_username` (`username`)
) COMMENT='用户主表';
-- 超级管理员 admin 密码：123456
INSERT INTO `sys_user` (`username`, `password`, `nickname`, `avatar`, `status`, `role`, `creator`, `create_time`, `updater`, `update_time`, `remark`, `deleted`) 
VALUES ('admin', '$2a$10$sSTvaDj1QtrEIgEglkumguRT88m0WRs61gWw7Rgm/gpP6/eZ4ffwG', '超级管理员', '', 0, '1', NULL, NOW(), NULL, NOW(), '系统默认超级管理员', 0);

-- 普通用户（游客）
DROP TABLE IF EXISTS `tourist`;
CREATE TABLE `tourist` (
  `id` bigint NOT NULL COMMENT '用户id（与sys_user.id一致）',
  `real_name` varchar(30) DEFAULT NULL COMMENT '真实姓名',
  `id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
  `phone` varchar(11) DEFAULT NULL COMMENT '手机号',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_sys_user_normal_phone` (`phone`),
  UNIQUE KEY `idx_sys_user_normal_email` (`email`)
) COMMENT='普通用户子表'

-- 轮播图表
DROP TABLE IF EXISTS `carousel`;
CREATE TABLE `carousel` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '轮播图id',
  `title` varchar(50) NOT NULL COMMENT '标题',
  `image_url` varchar(255) NOT NULL COMMENT '图片地址',
  `link` varchar(255) DEFAULT NULL COMMENT '跳转链接',
  `sort` int DEFAULT 0 COMMENT '排序序号',
  `status` tinyint DEFAULT 1 COMMENT '状态（0隐藏 1显示）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_carousel_status` (`status`)
) COMMENT='轮播图';

-- 博物馆简介表
DROP TABLE IF EXISTS `museum_intro`;
CREATE TABLE `museum_intro` (
  `museum_name` varchar(100) NOT NULL COMMENT '博物馆名称（主键）',
  `content` text NOT NULL COMMENT '内容',
  `logo_url` varchar(255) DEFAULT NULL COMMENT 'Logo地址',
  `address` varchar(100) DEFAULT NULL COMMENT '地址',
  `phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  `open_time` time DEFAULT NULL COMMENT '营业开始时间',
  `close_time` time DEFAULT NULL COMMENT '营业结束时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `updater` bigint DEFAULT NULL COMMENT '更新者id',
  PRIMARY KEY (`museum_name`)
) COMMENT='博物馆简介';
INSERT INTO `museum_intro` (
  `museum_name`,
  `content`,
  `logo_url`,
  `address`,
  `phone`,
  `open_time`,
  `close_time`,
  `update_time`,
  `updater`
) VALUES (
  '邺城博物馆',
  '邺城博物馆位于河北省邺城遗址保护区，致力于系统展示东魏、北齐时期的城市文明与考古成果。馆内设基本陈列、专题展厅与数字互动空间，重点呈现佛教造像、石刻艺术、陶瓷器与城址考古发掘成果，并提供文物保护科普、研学课程与公众教育服务。',
  '/api/files/get?fileName=museum/logo/yecity.png',
  '河北省临漳县邺城遗址博物馆',
  '0310-8888888',
  '09:00:00',
  '17:30:00',
  NOW(),
  1
);

-- 藏品分类表
DROP TABLE IF EXISTS `item_category`;
CREATE TABLE `item_category` (
    `id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '分类ID',
    `name` varchar(50) NOT NULL COMMENT '分类名称',
    `creator` bigint NULL COMMENT '创建者',
    `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` bigint NULL COMMENT '更新者',
    `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
    `remark` varchar(500) NULL COMMENT '备注'
) COMMENT = '藏品分类';


-- 藏品主表
DROP TABLE IF EXISTS `relic`;
CREATE TABLE `relic` (
	`id` bigint NOT NULL AUTO_INCREMENT COMMENT '藏品id',
  `name` varchar(100) NOT NULL COMMENT '名称',
  `category_id` bigint NOT NULL COMMENT '分类ID',
  `cover_image_url` varchar(255) NOT NULL COMMENT '封面图地址',
  `age` varchar(50) DEFAULT NULL COMMENT '年代',
  `material` varchar(50) DEFAULT NULL COMMENT '材质',
  `excavation_info` text DEFAULT NULL COMMENT '出土信息',
  `story` text DEFAULT NULL COMMENT '文物故事',
  `model_url` text DEFAULT NULL COMMENT '3D/360°图地址',
  `is_hot` tinyint DEFAULT 0 COMMENT '热门标识（0否 1是）',
  `status` tinyint DEFAULT 1 COMMENT '状态（0隐藏 1显示）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `creator` bigint DEFAULT NULL COMMENT '创建者id',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `updater` bigint DEFAULT NULL COMMENT '更新者id',
  PRIMARY KEY (`id`)
) COMMENT = '藏品';

-- 测试数据：邺城博物馆热门/普通藏品（15条）
INSERT INTO `relic` (`name`, `category_id`, `cover_image_url`, `age`, `material`, `excavation_info`, `story`, `model_url`, `is_hot`, `status`, `create_time`, `creator`, `update_time`, `updater`) VALUES
('北齐石刻佛像', 1, '/api/files/get?fileName=relicCover/bei_qi_shike_foxiang.jpg', '北齐', '石质', '邺城遗址石窟区出土', '北齐时期石刻造像，线条劲挺，面相安详。', NULL, 1, 1, NOW(), 1, NOW(), 1),
('东魏青釉瓷碗', 2, '/api/files/get?fileName=relicCover/dong_wei_qingyou_ciwang.jpg', '东魏', '陶瓷', '邺城城址文化层出土', '胎质细腻，通体青釉，器形规整。', NULL, 1, 1, NOW(), 1, NOW(), 1),
('北齐石柱础', 1, '/api/files/get?fileName=relicCover/bei_qi_zhuchu.jpg', '北齐', '石质', '邺城宫殿区基址出土', '柱础覆莲纹，雕刻工整，体现工艺水准。', NULL, 0, 1, NOW(), 1, NOW(), 1),
('东魏鎏金饰片', 3, '/api/files/get?fileName=relicCover/dong_wei_liujin_shipian.jpg', '东魏', '金属', '邺城遗址手工业作坊出土', '鎏金工艺精湛，纹饰细密。', NULL, 1, 1, NOW(), 1, NOW(), 1),
('北齐陶俑', 2, '/api/files/get?fileName=relicCover/bei_qi_taoyong.jpg', '北齐', '陶', '邺城墓葬出土', '俑身比例匀称，服饰简洁，表情生动。', NULL, 0, 1, NOW(), 1, NOW(), 1),
('邺城瓦当', 4, '/api/files/get?fileName=relicCover/yecity_wadang.jpg', '北齐', '陶', '邺城宫殿区瓦件堆积出土', '瓦当纹饰清晰，常见卷云与莲纹。', NULL, 1, 1, NOW(), 1, NOW(), 1),
('邺城石刻残片', 1, '/api/files/get?fileName=relicCover/yecity_shike_canpian.jpg', '北齐', '石质', '邺城寺院区出土', '残片可见线刻与浅浮雕技法。', NULL, 0, 1, NOW(), 1, NOW(), 1),
('北齐碑刻', 1, '/api/files/get?fileName=relicCover/bei_qi_beike.jpg', '北齐', '石质', '邺城遗址碑廓出土', '字迹峻拔，为研究书法与历史提供资料。', NULL, 1, 1, NOW(), 1, NOW(), 1),
('邺城铜镜', 3, '/api/files/get?fileName=relicCover/yecity_tongjing.jpg', '北齐', '青铜', '邺城民居遗址出土', '背纹精美，折射古代生活审美。', NULL, 0, 1, NOW(), 1, NOW(), 1),
('邺城陶灯', 2, '/api/files/get?fileName=relicCover/yecity_taodeng.jpg', '东魏', '陶', '邺城手工业区出土', '造型朴素，实用性强。', NULL, 0, 1, NOW(), 1, NOW(), 1),
('邺城青铜器', 3, '/api/files/get?fileName=relicCover/yecity_qingtongqi.jpg', '北齐', '青铜', '邺城祭祀遗址出土', '铸造规整，纹饰典雅。', NULL, 1, 1, NOW(), 1, NOW(), 1),
('石雕护法像', 1, '/api/files/get?fileName=relicCover/shidiao_hufa.jpg', '北齐', '石质', '邺城寺院区出土', '表情威严，衣纹流畅，守护佛法之象。', NULL, 1, 1, NOW(), 1, NOW(), 1),
('鎏金佛像', 3, '/api/files/get?fileName=relicCover/liujin_foxiang.jpg', '北齐', '金属', '邺城佛教遗迹出土', '通体鎏金，庄严华美。', NULL, 1, 1, NOW(), 1, NOW(), 1),
('邺城瓷瓶', 2, '/api/files/get?fileName=relicCover/yecity_ciping.jpg', '东魏', '陶瓷', '邺城城址出土', '瓶身修长，青釉匀净。', NULL, 0, 1, NOW(), 1, NOW(), 1),
('石经残卷', 1, '/api/files/get?fileName=relicCover/shijing_canjuan.jpg', '北齐', '石质', '邺城经藏区出土', '石经残刻，见证佛教经典传播。', NULL, 0, 1, NOW(), 1, NOW(), 1);

-- 公告表
DROP TABLE IF EXISTS `announcement`;
CREATE TABLE `announcement` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '公告id',
  `title` varchar(100) NOT NULL COMMENT '标题',
  `content` text NOT NULL COMMENT '内容',
  `is_top` tinyint DEFAULT 0 COMMENT '置顶标识（0否 1是）',
  `status` tinyint DEFAULT 1 COMMENT '状态（0隐藏 1显示）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
  `creator` bigint DEFAULT NULL COMMENT '发布者id',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `updater` bigint DEFAULT NULL COMMENT '更新者id',
  PRIMARY KEY (`id`)
) COMMENT='公告';

-- 预约时段表
DROP TABLE IF EXISTS `reservation_time_slot`;
CREATE TABLE `reservation_time_slot` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '时段id',
  `date` date NOT NULL COMMENT '预约日期',
  `start_time` time NOT NULL COMMENT '开始时间',
  `end_time` time NOT NULL COMMENT '结束时间',
  `max_people` int NOT NULL COMMENT '最大人数',
  `current_people` int DEFAULT 0 COMMENT '已预约人数',
  `status` tinyint DEFAULT 1 COMMENT '状态（0不可约 1可约）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `creator` bigint DEFAULT NULL COMMENT '创建者id',
  PRIMARY KEY (`id`)
) COMMENT='预约时段';

-- 预约记录表
DROP TABLE IF EXISTS `reservation`;
CREATE TABLE `reservation` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '预约id（主表ID）',
  `user_id` bigint NOT NULL COMMENT '预约发起者id（关联sys_user.id）',
  `time_slot_id` bigint NOT NULL COMMENT '预约时段id（关联reservation_time_slot.id）',
  `total_visitors` int NOT NULL COMMENT '预约总人数（与明细表记录数一致）',
  `reserve_time` time NOT NULL COMMENT '预约时间',
  `qr_code` varchar(255) DEFAULT NULL COMMENT '预约凭证二维码（整单唯一）',
  `status` tinyint DEFAULT 0 COMMENT '整单状态（0待审核 1已通过 2已取消 3已驳回）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '预约提交时间',
  `update_time` datetime DEFAULT NULL COMMENT '审核/更新时间',
  `updater` bigint DEFAULT NULL COMMENT '审核者id（关联sys_user.id）',
  `remark` varchar(500) DEFAULT NULL COMMENT '审核备注（如驳回原因）',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_time_slot_id` (`time_slot_id`),
  KEY `idx_status` (`status`)
) COMMENT='预约';

-- 预约明细表
DROP TABLE IF EXISTS `reservation_visitor`;
CREATE TABLE `reservation_visitor` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `reservation_id` bigint NOT NULL COMMENT '预约id',
  `real_name` varchar(30) NOT NULL COMMENT '游客真实姓名',
  `id_card` varchar(18) NOT NULL COMMENT '游客身份证号（唯一标识游客）',
  `phone` varchar(11) NOT NULL COMMENT '游客手机号',
  `visitor_qr_code` varchar(500) DEFAULT NULL COMMENT '游客个人入场二维码（可选，如分人验证）',
  `verify_status` tinyint DEFAULT 0 COMMENT '游客入场验证状态（0未验证 1已验证）',
  `verify_time` datetime DEFAULT NULL COMMENT '入场验证时间',
  PRIMARY KEY (`id`),
  KEY `idx_reservation_id` (`reservation_id`),
  KEY `idx_id_card` (`id_card`)
) COMMENT='游客预约明细';

-- 收藏表
DROP TABLE IF EXISTS `item_collection`;
CREATE TABLE `item_collection` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '收藏id',
  `user_id` bigint NOT NULL COMMENT '用户id',
  `item_id` bigint NOT NULL COMMENT '藏品id',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
  PRIMARY KEY (`id`)
) COMMENT='收藏';
