-- =====================================================
-- 菜单表和角色菜单关联表
-- =====================================================

-- 1. 菜单表
DROP TABLE IF EXISTS t_menu;
CREATE TABLE t_menu (
    id BIGINT PRIMARY KEY COMMENT '菜单ID（雪花算法）',
    parent_id BIGINT DEFAULT 0 COMMENT '父菜单ID，0表示顶级菜单',
    menu_type INT DEFAULT 0 COMMENT '菜单类型: 0=菜单 1=iframe 2=外链 3=按钮',
    title VARCHAR(100) NOT NULL COMMENT '菜单名称',
    name VARCHAR(100) DEFAULT '' COMMENT '路由名称',
    path VARCHAR(200) DEFAULT '' COMMENT '路由路径',
    component VARCHAR(200) DEFAULT '' COMMENT '组件路径',
    `rank` INT DEFAULT 99 COMMENT '菜单排序',
    redirect VARCHAR(200) DEFAULT '' COMMENT '路由重定向',
    icon VARCHAR(100) DEFAULT '' COMMENT '菜单图标',
    extra_icon VARCHAR(100) DEFAULT '' COMMENT '右侧图标',
    enter_transition VARCHAR(50) DEFAULT '' COMMENT '进场动画',
    leave_transition VARCHAR(50) DEFAULT '' COMMENT '离场动画',
    active_path VARCHAR(200) DEFAULT '' COMMENT '菜单激活路径',
    auths VARCHAR(200) DEFAULT '' COMMENT '权限标识（按钮级别）',
    frame_src VARCHAR(500) DEFAULT '' COMMENT 'iframe链接地址',
    frame_loading TINYINT DEFAULT 1 COMMENT 'iframe是否开启加载动画',
    keep_alive TINYINT DEFAULT 0 COMMENT '是否缓存页面',
    hidden_tag TINYINT DEFAULT 0 COMMENT '是否禁止添加到标签页',
    fixed_tag TINYINT DEFAULT 0 COMMENT '是否固定显示在标签页',
    show_link TINYINT DEFAULT 1 COMMENT '是否显示该菜单',
    show_parent TINYINT DEFAULT 0 COMMENT '是否显示父级菜单',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    deleted TINYINT DEFAULT 0 COMMENT '逻辑删除: 0=正常 1=已删除',
    KEY idx_parent_id (parent_id),
    KEY idx_menu_type (menu_type),
    KEY idx_rank (`rank`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';

-- 2. 角色-菜单关联表
DROP TABLE IF EXISTS t_role_menu;
CREATE TABLE t_role_menu (
    id BIGINT PRIMARY KEY COMMENT '主键ID（雪花算法）',
    role_id BIGINT NOT NULL COMMENT '角色ID',
    menu_id BIGINT NOT NULL COMMENT '菜单ID',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    UNIQUE KEY uk_role_menu (role_id, menu_id),
    KEY idx_role_id (role_id),
    KEY idx_menu_id (menu_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表';

