-- ============================================================
-- 盘古用户平台 - 学校管理模块数据库脚本
-- 作者：湖北新华业务中台研发团队
-- 创建时间：2026-01-31
-- ============================================================

-- ----------------------------
-- 1. 学校表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `pg_school` (
  `school_id` bigint NOT NULL AUTO_INCREMENT COMMENT '学校ID',
  `school_code` varchar(32) NOT NULL COMMENT '学校编码',
  `school_name` varchar(100) NOT NULL COMMENT '学校名称',
  `school_type` char(2) DEFAULT NULL COMMENT '学校类型（01小学 02初中 03高中 04完全中学 99其他）',
  `region_id` bigint NOT NULL COMMENT '所属区域ID',
  `region_path` varchar(200) DEFAULT NULL COMMENT '区域路径（如：湖北省-武汉市-武昌区）',
  `address` varchar(255) DEFAULT NULL COMMENT '详细地址',
  `contact_person` varchar(50) DEFAULT NULL COMMENT '联系人',
  `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
  `status` char(1) DEFAULT '0' COMMENT '状态（0正常 1停用）',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`school_id`),
  UNIQUE KEY `uk_school_code` (`school_code`),
  KEY `idx_region_id` (`region_id`),
  KEY `idx_school_name` (`school_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校表';

-- ----------------------------
-- 2. 学校年级关联表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `pg_school_grade` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_id` bigint NOT NULL COMMENT '学校ID',
  `grade_id` bigint NOT NULL COMMENT '年级ID',
  `order_num` int DEFAULT 0 COMMENT '显示顺序',
  `status` char(1) DEFAULT '0' COMMENT '状态（0正常 1停用）',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_school_grade` (`school_id`, `grade_id`),
  KEY `idx_school_id` (`school_id`),
  KEY `idx_grade_id` (`grade_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校年级关联表';

-- ----------------------------
-- 3. 学校班级关联表
-- ----------------------------
CREATE TABLE IF NOT EXISTS `pg_school_class` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `school_grade_id` bigint NOT NULL COMMENT '学校年级关联ID',
  `class_id` bigint NOT NULL COMMENT '班级ID',
  `order_num` int DEFAULT 0 COMMENT '显示顺序',
  `status` char(1) DEFAULT '0' COMMENT '状态（0正常 1停用）',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_school_grade_class` (`school_grade_id`, `class_id`),
  KEY `idx_school_grade_id` (`school_grade_id`),
  KEY `idx_class_id` (`class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校班级关联表';

-- ----------------------------
-- 4. 插入测试数据
-- ----------------------------

-- 学校数据（假设区域ID=111是武昌区）
INSERT INTO pg_school (school_id, school_code, school_name, school_type, region_id, region_path, status, create_time) VALUES
(1, 'SCH20260001', '武汉市第一中学', '02', 111, '湖北省-武汉市-武昌区', '0', NOW()),
(2, 'SCH20260002', '武汉市第三中学', '02', 111, '湖北省-武汉市-武昌区', '0', NOW()),
(3, 'SCH20260003', '武汉市水果湖小学', '01', 111, '湖北省-武汉市-武昌区', '0', NOW());

-- 学校-年级关联（武汉市第一中学）
INSERT INTO pg_school_grade (id, school_id, grade_id, order_num, status, create_time) VALUES
(1, 1, 7, 1, '0', NOW()),  -- 七年级
(2, 1, 8, 2, '0', NOW()),  -- 八年级
(3, 1, 9, 3, '0', NOW());  -- 九年级

-- 学校-年级关联（武汉市水果湖小学）
INSERT INTO pg_school_grade (id, school_id, grade_id, order_num, status, create_time) VALUES
(4, 3, 1, 1, '0', NOW()),  -- 一年级
(5, 3, 2, 2, '0', NOW()),  -- 二年级
(6, 3, 3, 3, '0', NOW()),  -- 三年级
(7, 3, 4, 4, '0', NOW()),  -- 四年级
(8, 3, 5, 5, '0', NOW()),  -- 五年级
(9, 3, 6, 6, '0', NOW());  -- 六年级

-- 学校-班级关联（武汉市第一中学-七年级）
INSERT INTO pg_school_class (id, school_grade_id, class_id, order_num, status, create_time) VALUES
(1, 1, 1, 1, '0', NOW()),  -- 1班
(2, 1, 2, 2, '0', NOW()),  -- 2班
(3, 1, 3, 3, '0', NOW());  -- 3班
