-- 学校信息表
CREATE TABLE IF NOT EXISTS `t_biz_school` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `tenant_id` BIGINT NOT NULL COMMENT '租户 ID（一对一）',
    `address` VARCHAR(500) DEFAULT NULL COMMENT '学校地址',
    `phone` VARCHAR(50) DEFAULT NULL COMMENT '联系电话',
    `principal` VARCHAR(50) DEFAULT NULL COMMENT '校长姓名',
    `established` DATE DEFAULT NULL COMMENT '建校时间',
    `description` VARCHAR(1000) DEFAULT NULL COMMENT '学校描述',
    `logo` VARCHAR(500) DEFAULT NULL COMMENT '学校 Logo URL',
    `website` VARCHAR(200) DEFAULT NULL COMMENT '学校网站',
    `valid_state` TINYINT DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除标识（0-未删除，1-已删除）',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_tenant_id` (`tenant_id`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学校信息表';

-- 年级表
CREATE TABLE IF NOT EXISTS `t_biz_grade` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `tenant_id` BIGINT NOT NULL COMMENT '租户 ID',
    `name` VARCHAR(50) NOT NULL COMMENT '年级名称（如：一年级、二年级）',
    `code` VARCHAR(50) NOT NULL COMMENT '年级编码（在租户内唯一，如：grade_1, grade_2）',
    `level` INT NOT NULL COMMENT '年级级别（用于排序，如：1, 2, 3）',
    `description` VARCHAR(200) DEFAULT NULL COMMENT '年级描述',
    `valid_state` TINYINT DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除标识（0-未删除，1-已删除）',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_tenant_code` (`tenant_id`, `code`),
    UNIQUE KEY `uk_tenant_level` (`tenant_id`, `level`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_level` (`level`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='年级表';

-- 班级表
CREATE TABLE IF NOT EXISTS `t_biz_class` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `tenant_id` BIGINT NOT NULL COMMENT '租户 ID',
    `grade_id` BIGINT NOT NULL COMMENT '年级 ID',
    `name` VARCHAR(50) NOT NULL COMMENT '班级名称（如：一年级 1 班、二年级 2 班）',
    `code` VARCHAR(50) NOT NULL COMMENT '班级编码（在租户内唯一）',
    `type` TINYINT DEFAULT 1 COMMENT '班级类型：1-行政班级（教学班级），2-兴趣班',
    `capacity` INT DEFAULT NULL COMMENT '班级容量（可选）',
    `description` VARCHAR(200) DEFAULT NULL COMMENT '班级描述',
    `valid_state` TINYINT DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除标识（0-未删除，1-已删除）',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_tenant_code` (`tenant_id`, `code`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_grade_id` (`grade_id`),
    KEY `idx_type` (`type`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='班级表';

-- 部门表
CREATE TABLE IF NOT EXISTS `t_biz_department` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键 ID',
    `tenant_id` BIGINT NOT NULL COMMENT '租户 ID',
    `name` VARCHAR(50) NOT NULL COMMENT '部门名称',
    `code` VARCHAR(50) NOT NULL COMMENT '部门编码（在租户内唯一）',
    `parent_id` BIGINT DEFAULT NULL COMMENT '父部门 ID（支持树形结构）',
    `description` VARCHAR(200) DEFAULT NULL COMMENT '部门描述',
    `sort` INT DEFAULT 0 COMMENT '排序',
    `valid_state` TINYINT DEFAULT 1 COMMENT '有效状态：1-有效，2-失效',
    `create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除标识（0-未删除，1-已删除）',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_tenant_code` (`tenant_id`, `code`),
    KEY `idx_tenant_id` (`tenant_id`),
    KEY `idx_parent_id` (`parent_id`),
    KEY `idx_sort` (`sort`),
    KEY `idx_valid_state` (`valid_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门表';

-- 初始化年级数据
INSERT INTO `t_biz_grade` (`tenant_id`, `name`, `code`, `level`, `description`, `valid_state`) VALUES
(1, '一年级', 'grade_1', 1, '小学一年级', 1),
(1, '二年级', 'grade_2', 2, '小学二年级', 1),
(1, '三年级', 'grade_3', 3, '小学三年级', 1),
(1, '四年级', 'grade_4', 4, '小学四年级', 1),
(1, '五年级', 'grade_5', 5, '小学五年级', 1),
(1, '六年级', 'grade_6', 6, '小学六年级', 1)
ON DUPLICATE KEY UPDATE `name` = VALUES(`name`);
