-- =========================================
-- 文件管理模块 (file.sql)
-- 功能：文件/文件夹管理、分享功能
-- =========================================

-- 1. 文件夹表（简化版）
DROP TABLE IF EXISTS `sys_folder`;
CREATE TABLE `sys_folder` (
  `folder_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件夹ID',
  `parent_id` bigint(20) DEFAULT 0 COMMENT '父文件夹ID（0表示根目录）',
  `folder_name` varchar(100) NOT NULL COMMENT '文件夹名称',
  `user_id` bigint(20) NOT NULL COMMENT '创建人ID',
  `sort_order` int(4) DEFAULT 0 COMMENT '排序',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`folder_id`),
  KEY `idx_parent_id` (`parent_id`),
  KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='文件夹表';

-- 2. 文件表（简化版）
DROP TABLE IF EXISTS `sys_file`;
CREATE TABLE `sys_file` (
  `file_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件ID',
  `folder_id` bigint(20) DEFAULT 0 COMMENT '所属文件夹ID（0表示根目录）',
  `file_name` varchar(200) NOT NULL COMMENT '文件名称（用户自定义）',
  `original_name` varchar(200) DEFAULT NULL COMMENT '原始文件名',
  `file_path` varchar(500) NOT NULL COMMENT '文件存储路径（相对路径）',
  `file_size` bigint(20) DEFAULT 0 COMMENT '文件大小（字节）',
  `file_type` varchar(50) DEFAULT NULL COMMENT '文件类型（扩展名）',
  `mime_type` varchar(100) DEFAULT NULL COMMENT 'MIME类型',
  `user_id` bigint(20) NOT NULL COMMENT '上传人ID',
  `user_name` varchar(64) DEFAULT NULL COMMENT '上传人昵称',
  `download_count` int(11) DEFAULT 0 COMMENT '下载次数',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`file_id`),
  KEY `idx_folder_id` (`folder_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='文件表';

-- 3. 文件分享表
DROP TABLE IF EXISTS `sys_file_share`;
CREATE TABLE `sys_file_share` (
  `share_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分享ID',
  `file_id` bigint(20) NULL DEFAULT NULL COMMENT '文件ID',
  `folder_id` bigint(20) NULL DEFAULT NULL COMMENT '文件夹ID',
  `share_code` varchar(32) NOT NULL COMMENT '分享码',
  `share_password` varchar(20) DEFAULT NULL COMMENT '提取码',
  `share_type` char(1) DEFAULT '0' COMMENT '分享类型（0公开 1需要密码）',
  `resource_type` char(1) DEFAULT '0' COMMENT '资源类型（0文件 1文件夹）',
  `expire_time` datetime DEFAULT NULL COMMENT '过期时间',
  `view_count` int(11) DEFAULT 0 COMMENT '查看次数',
  `download_count` int(11) DEFAULT 0 COMMENT '下载次数',
  `max_download` int(11) DEFAULT -1 COMMENT '最大下载次数（-1不限制）',
  `user_id` bigint(20) NOT NULL COMMENT '分享人ID',
  `status` char(1) DEFAULT '0' COMMENT '状态（0正常 1禁用）',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`share_id`),
  UNIQUE KEY `uk_share_code` (`share_code`),
  KEY `idx_file_id` (`file_id`),
  KEY `idx_folder_id` (`folder_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='文件分享表';

-- 插入菜单
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES 
('文件管理', 0, 6, 'file', 'system/file/index', 1, 0, 'C', '0', '0', 'system:file:list', 'folder', 'admin', sysdate(), '', NULL, '文件管理菜单');
