-- ============================================================
-- 盘古用户平台 - 基础数据模块建表脚本
-- 作者：湖北新华业务中台研发团队
-- 创建时间：2026-01-31
-- 说明：包含年级、班级、学科、区域四个表及初始化数据
-- 数据库：pguser-db（8.148.25.55:3306）
-- ============================================================

USE `pguser-db`;

-- ============================================================
-- 1. 年级字典表
-- ============================================================
DROP TABLE IF EXISTS `pg_grade`;
CREATE TABLE `pg_grade` (
  `grade_id` bigint NOT NULL AUTO_INCREMENT COMMENT '年级ID',
  `grade_code` varchar(32) NOT NULL COMMENT '年级编码',
  `grade_name` varchar(50) NOT NULL COMMENT '年级名称',
  `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 '创建时间',
  `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 (`grade_id`),
  UNIQUE KEY `uk_grade_code` (`grade_code`)
) ENGINE=InnoDB AUTO_INCREMENT=100 COMMENT='年级字典表';

-- 年级初始化数据
INSERT INTO `pg_grade` (`grade_id`, `grade_code`, `grade_name`, `order_num`, `status`, `create_by`, `create_time`, `del_flag`) VALUES
(1, 'GRD001', '一年级', 1, '0', 'admin', NOW(), '0'),
(2, 'GRD002', '二年级', 2, '0', 'admin', NOW(), '0'),
(3, 'GRD003', '三年级', 3, '0', 'admin', NOW(), '0'),
(4, 'GRD004', '四年级', 4, '0', 'admin', NOW(), '0'),
(5, 'GRD005', '五年级', 5, '0', 'admin', NOW(), '0'),
(6, 'GRD006', '六年级', 6, '0', 'admin', NOW(), '0'),
(7, 'GRD007', '七年级', 7, '0', 'admin', NOW(), '0'),
(8, 'GRD008', '八年级', 8, '0', 'admin', NOW(), '0'),
(9, 'GRD009', '九年级', 9, '0', 'admin', NOW(), '0'),
(10, 'GRD010', '高一', 10, '0', 'admin', NOW(), '0'),
(11, 'GRD011', '高二', 11, '0', 'admin', NOW(), '0'),
(12, 'GRD012', '高三', 12, '0', 'admin', NOW(), '0');

-- ============================================================
-- 2. 班级字典表
-- ============================================================
DROP TABLE IF EXISTS `pg_class`;
CREATE TABLE `pg_class` (
  `class_id` bigint NOT NULL AUTO_INCREMENT COMMENT '班级ID',
  `class_code` varchar(32) NOT NULL COMMENT '班级编码',
  `class_name` varchar(50) NOT NULL COMMENT '班级名称',
  `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 '创建时间',
  `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 (`class_id`),
  UNIQUE KEY `uk_class_code` (`class_code`)
) ENGINE=InnoDB AUTO_INCREMENT=100 COMMENT='班级字典表';

-- 班级初始化数据
INSERT INTO `pg_class` (`class_id`, `class_code`, `class_name`, `order_num`, `status`, `create_by`, `create_time`, `del_flag`) VALUES
(1, 'CLS001', '1班', 1, '0', 'admin', NOW(), '0'),
(2, 'CLS002', '2班', 2, '0', 'admin', NOW(), '0'),
(3, 'CLS003', '3班', 3, '0', 'admin', NOW(), '0'),
(4, 'CLS004', '4班', 4, '0', 'admin', NOW(), '0'),
(5, 'CLS005', '5班', 5, '0', 'admin', NOW(), '0'),
(6, 'CLS006', '6班', 6, '0', 'admin', NOW(), '0'),
(7, 'CLS007', '7班', 7, '0', 'admin', NOW(), '0'),
(8, 'CLS008', '8班', 8, '0', 'admin', NOW(), '0'),
(9, 'CLS009', '9班', 9, '0', 'admin', NOW(), '0'),
(10, 'CLS010', '10班', 10, '0', 'admin', NOW(), '0');

-- ============================================================
-- 3. 学科表
-- ============================================================
DROP TABLE IF EXISTS `pg_subject`;
CREATE TABLE `pg_subject` (
  `subject_id` bigint NOT NULL AUTO_INCREMENT COMMENT '学科ID',
  `subject_code` varchar(32) NOT NULL COMMENT '学科编码',
  `subject_name` varchar(50) NOT NULL COMMENT '学科名称',
  `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 '创建时间',
  `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 (`subject_id`),
  UNIQUE KEY `uk_subject_code` (`subject_code`)
) ENGINE=InnoDB AUTO_INCREMENT=100 COMMENT='学科表';

-- 学科初始化数据
INSERT INTO `pg_subject` (`subject_id`, `subject_code`, `subject_name`, `order_num`, `status`, `create_by`, `create_time`, `del_flag`) VALUES
(1, 'SUB001', '语文', 1, '0', 'admin', NOW(), '0'),
(2, 'SUB002', '数学', 2, '0', 'admin', NOW(), '0'),
(3, 'SUB003', '英语', 3, '0', 'admin', NOW(), '0'),
(4, 'SUB004', '物理', 4, '0', 'admin', NOW(), '0'),
(5, 'SUB005', '化学', 5, '0', 'admin', NOW(), '0'),
(6, 'SUB006', '生物', 6, '0', 'admin', NOW(), '0'),
(7, 'SUB007', '历史', 7, '0', 'admin', NOW(), '0'),
(8, 'SUB008', '地理', 8, '0', 'admin', NOW(), '0'),
(9, 'SUB009', '政治', 9, '0', 'admin', NOW(), '0'),
(10, 'SUB010', '体育', 10, '0', 'admin', NOW(), '0'),
(11, 'SUB011', '音乐', 11, '0', 'admin', NOW(), '0'),
(12, 'SUB012', '美术', 12, '0', 'admin', NOW(), '0');

-- ============================================================
-- 4. 区域表（省-市-区三级树形结构）
-- ============================================================
DROP TABLE IF EXISTS `pg_region`;
CREATE TABLE `pg_region` (
  `region_id` bigint NOT NULL AUTO_INCREMENT COMMENT '区域ID',
  `parent_id` bigint DEFAULT 0 COMMENT '父区域ID',
  `region_name` varchar(100) NOT NULL COMMENT '区域名称',
  `region_code` varchar(20) DEFAULT NULL COMMENT '区域编码',
  `level` tinyint NOT NULL DEFAULT 1 COMMENT '层级（1省 2市 3区）',
  `ancestors` varchar(500) DEFAULT '' COMMENT '祖级列表',
  `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 '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  PRIMARY KEY (`region_id`),
  KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1000 COMMENT='区域表';

-- 区域初始化数据
-- 省级
INSERT INTO `pg_region` (`region_id`, `parent_id`, `region_name`, `region_code`, `level`, `ancestors`, `order_num`, `status`, `create_by`, `create_time`, `del_flag`) VALUES
(1, 0, '湖北省', 'REG01', 1, '0', 1, '0', 'admin', NOW(), '0'),
(2, 0, '北京市', 'REG02', 1, '0', 2, '0', 'admin', NOW(), '0'),
(3, 0, '上海市', 'REG03', 1, '0', 3, '0', 'admin', NOW(), '0'),
(4, 0, '广东省', 'REG04', 1, '0', 4, '0', 'admin', NOW(), '0');

-- 市级（湖北省）
INSERT INTO `pg_region` (`region_id`, `parent_id`, `region_name`, `region_code`, `level`, `ancestors`, `order_num`, `status`, `create_by`, `create_time`, `del_flag`) VALUES
(11, 1, '武汉市', 'REG0101', 2, '0,1', 1, '0', 'admin', NOW(), '0'),
(12, 1, '黄冈市', 'REG0102', 2, '0,1', 2, '0', 'admin', NOW(), '0'),
(13, 1, '宜昌市', 'REG0103', 2, '0,1', 3, '0', 'admin', NOW(), '0'),
(14, 1, '襄阳市', 'REG0104', 2, '0,1', 4, '0', 'admin', NOW(), '0');

-- 区级（武汉市）
INSERT INTO `pg_region` (`region_id`, `parent_id`, `region_name`, `region_code`, `level`, `ancestors`, `order_num`, `status`, `create_by`, `create_time`, `del_flag`) VALUES
(111, 11, '武昌区', 'REG010101', 3, '0,1,11', 1, '0', 'admin', NOW(), '0'),
(112, 11, '洪山区', 'REG010102', 3, '0,1,11', 2, '0', 'admin', NOW(), '0'),
(113, 11, '江岸区', 'REG010103', 3, '0,1,11', 3, '0', 'admin', NOW(), '0'),
(114, 11, '江汉区', 'REG010104', 3, '0,1,11', 4, '0', 'admin', NOW(), '0'),
(115, 11, '汉阳区', 'REG010105', 3, '0,1,11', 5, '0', 'admin', NOW(), '0'),
(116, 11, '江夏区', 'REG010106', 3, '0,1,11', 6, '0', 'admin', NOW(), '0');

-- 区级（黄冈市）
INSERT INTO `pg_region` (`region_id`, `parent_id`, `region_name`, `region_code`, `level`, `ancestors`, `order_num`, `status`, `create_by`, `create_time`, `del_flag`) VALUES
(121, 12, '黄州区', 'REG010201', 3, '0,1,12', 1, '0', 'admin', NOW(), '0'),
(122, 12, '红安县', 'REG010202', 3, '0,1,12', 2, '0', 'admin', NOW(), '0'),
(123, 12, '麻城市', 'REG010203', 3, '0,1,12', 3, '0', 'admin', NOW(), '0');
