-- =====================================================================
-- FIGS 教育管理模块 - 教培机构业务库表结构
-- 数据库: ry-vue-plus（与 RuoYi-Vue-Plus 共库）
-- 字符集: utf8mb4 / utf8mb4_unicode_ci
-- 设计理念：DDD 限界上下文划分 + 多租户隔离
--  1) edu_staff_*       员工上下文（顾问/管家/辅导老师/文书老师）
--  2) edu_student_*     学生上下文（学生/家长/紧急联系人）
--  3) edu_package_*     课包上下文（课包SKU/价格策略）
--  4) edu_contract_*    合同上下文（合同主表/课包明细/课时余额）
--  5) edu_schedule_*    排课消课上下文（排课/签到/扣课时流水）
--  6) edu_dict_*        业务字典（角色/状态/学科/年级/课程类型）
--  7) edu_audit_*       操作审计
-- =====================================================================

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- =====================================================================
-- 一、字典表（业务通用枚举）
-- =====================================================================

DROP TABLE IF EXISTS `edu_dict`;
CREATE TABLE `edu_dict` (
  `id`           bigint       NOT NULL                COMMENT '主键',
  `tenant_id`    varchar(20)  DEFAULT '000000'        COMMENT '租户ID',
  `dict_type`    varchar(64)  NOT NULL                COMMENT '字典类型(staff_role/subject/grade/course_type/... )',
  `dict_label`   varchar(64)  NOT NULL                COMMENT '字典项显示名',
  `dict_value`   varchar(64)  NOT NULL                COMMENT '字典项存储值',
  `sort_order`   int          DEFAULT 0               COMMENT '排序',
  `color`        varchar(16)  DEFAULT NULL            COMMENT '标签颜色',
  `is_default`   char(1)      DEFAULT 'N'             COMMENT '是否默认 N/Y',
  `status`       char(1)      DEFAULT '0'             COMMENT '状态 0=启用 1=停用',
  `remark`       varchar(500) DEFAULT NULL            COMMENT '备注',
  `create_dept`  bigint       DEFAULT NULL            COMMENT '创建部门',
  `create_by`    bigint       DEFAULT NULL            COMMENT '创建人',
  `create_time`  datetime     DEFAULT NULL            COMMENT '创建时间',
  `update_by`    bigint       DEFAULT NULL            COMMENT '更新人',
  `update_time`  datetime     DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_tenant_type` (`tenant_id`, `dict_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='业务字典表';

-- =====================================================================
-- 二、员工上下文 staff
-- =====================================================================

-- 2.1 员工主表：覆盖顾问/管家/辅导老师/文书老师，用 role 区分
DROP TABLE IF EXISTS `edu_staff`;
CREATE TABLE `edu_staff` (
  `id`             bigint       NOT NULL                  COMMENT '员工ID',
  `tenant_id`      varchar(20)  DEFAULT '000000'          COMMENT '租户ID',
  `user_id`        bigint       DEFAULT NULL              COMMENT '关联系统用户ID(sys_user.user_id, 登录用)',
  `staff_no`       varchar(32)  NOT NULL                  COMMENT '员工工号',
  `name`           varchar(64)  NOT NULL                  COMMENT '员工姓名',
  `role`           varchar(32)  NOT NULL                  COMMENT '角色 SALES=课程顾问 HOUSEKEEPER=管家(学管) TUTOR=辅导老师 DOC_WRITER=文书老师',
  `phone`          varchar(20)  DEFAULT NULL              COMMENT '联系电话',
  `email`          varchar(128) DEFAULT NULL              COMMENT '邮箱',
  `wechat`         varchar(64)  DEFAULT NULL              COMMENT '微信号',
  `gender`         char(1)      DEFAULT '0'               COMMENT '性别 0=男 1=女 2=未知',
  `id_card`        varchar(32)  DEFAULT NULL              COMMENT '身份证',
  `entry_date`     date         DEFAULT NULL              COMMENT '入职日期',
  `leave_date`     date         DEFAULT NULL              COMMENT '离职日期',
  `subject`        varchar(32)  DEFAULT NULL              COMMENT '擅长学科(辅导老师用)',
  `title`          varchar(64)  DEFAULT NULL              COMMENT '头衔(高级/资深/普通)',
  `max_students`   int          DEFAULT 0                 COMMENT '最大带生数(管家上限)',
  `commission_rate` decimal(5,2) DEFAULT 0.00             COMMENT '提成比例(顾问用 0~1)',
  `dept_id`        bigint       DEFAULT NULL              COMMENT '所属部门',
  `intro`          varchar(1000) DEFAULT NULL             COMMENT '简介',
  `avatar`         varchar(500) DEFAULT NULL             COMMENT '头像URL',
  `status`         char(1)      DEFAULT '0'               COMMENT '状态 0=在职 1=离职 2=休假',
  `del_flag`       char(1)      DEFAULT '0'               COMMENT '删除标志 0=存在 1=删除',
  `remark`         varchar(500) DEFAULT NULL             COMMENT '备注',
  `create_dept`    bigint       DEFAULT NULL              COMMENT '创建部门',
  `create_by`      bigint       DEFAULT NULL              COMMENT '创建者',
  `create_time`    datetime     DEFAULT NULL              COMMENT '创建时间',
  `update_by`      bigint       DEFAULT NULL              COMMENT '更新者',
  `update_time`    datetime     DEFAULT NULL              COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_no` (`tenant_id`, `staff_no`) USING BTREE,
  KEY `idx_tenant_role` (`tenant_id`, `role`, `status`) USING BTREE,
  KEY `idx_user` (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工主表(顾问/管家/辅导老师/文书老师)';

-- 2.2 员工-学生关系（一对多，一个学生有 4 类员工各一名）
DROP TABLE IF EXISTS `edu_staff_student`;
CREATE TABLE `edu_staff_student` (
  `id`            bigint       NOT NULL                COMMENT '主键',
  `tenant_id`     varchar(20)  DEFAULT '000000'        COMMENT '租户ID',
  `staff_id`      bigint       NOT NULL                COMMENT '员工ID',
  `student_id`    bigint       NOT NULL                COMMENT '学生ID',
  `staff_role`    varchar(32)  NOT NULL                COMMENT '员工角色',
  `bind_time`     datetime     DEFAULT NULL            COMMENT '绑定时间',
  `unbind_time`   datetime     DEFAULT NULL            COMMENT '解绑时间',
  `is_primary`    char(1)      DEFAULT 'Y'             COMMENT '是否主责 Y/N',
  `status`        char(1)      DEFAULT '0'             COMMENT '状态 0=生效 1=失效',
  `del_flag`      char(1)      DEFAULT '0'             COMMENT '删除标志 0=存在 1=删除',
  `remark`        varchar(500) DEFAULT NULL            COMMENT '备注',
  `create_dept`   bigint       DEFAULT NULL            COMMENT '创建部门',
  `create_by`     bigint       DEFAULT NULL            COMMENT '创建者',
  `create_time`   datetime     DEFAULT NULL            COMMENT '创建时间',
  `update_by`     bigint       DEFAULT NULL            COMMENT '更新者',
  `update_time`   datetime     DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_staff_student_role` (`tenant_id`, `staff_id`, `student_id`, `staff_role`) USING BTREE,
  KEY `idx_student` (`student_id`) USING BTREE,
  KEY `idx_staff` (`staff_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='员工-学生服务关系表';

-- =====================================================================
-- 三、学生上下文 student
-- =====================================================================

-- 3.1 学生主表
DROP TABLE IF EXISTS `edu_student`;
CREATE TABLE `edu_student` (
  `id`              bigint       NOT NULL                COMMENT '学生ID',
  `tenant_id`       varchar(20)  DEFAULT '000000'        COMMENT '租户ID',
  `student_no`      varchar(32)  NOT NULL                COMMENT '学号',
  `name`            varchar(64)  NOT NULL                COMMENT '学生姓名',
  `gender`          char(1)      DEFAULT '0'             COMMENT '性别 0=男 1=女 2=未知',
  `birthday`        date         DEFAULT NULL            COMMENT '出生日期',
  `id_card`         varchar(32)  DEFAULT NULL            COMMENT '身份证号',
  `phone`           varchar(20)  DEFAULT NULL            COMMENT '联系电话',
  `wechat`          varchar(64)  DEFAULT NULL            COMMENT '微信号',
  `email`           varchar(128) DEFAULT NULL            COMMENT '邮箱',
  `school`          varchar(128) DEFAULT NULL            COMMENT '就读学校',
  `grade`           varchar(32)  DEFAULT NULL            COMMENT '年级(字典 edu_dict.dict_value, dict_type=grade)',
  `target_school`   varchar(128) DEFAULT NULL            COMMENT '目标学校',
  `subjects`        varchar(255) DEFAULT NULL            COMMENT '学习科目,逗号分隔',
  `address`         varchar(500) DEFAULT NULL            COMMENT '家庭住址',
  `avatar`          varchar(500) DEFAULT NULL            COMMENT '头像URL',
  `source`          varchar(32)  DEFAULT NULL            COMMENT '生源渠道(字典)',
  `level`           varchar(32)  DEFAULT NULL            COMMENT '学员等级(普通/VIP/钻石)',
  `intent_level`    varchar(16)  DEFAULT NULL            COMMENT '意向等级 A/B/C/D',
  `first_visit_at`  datetime     DEFAULT NULL            COMMENT '首次到访时间',
  `enroll_at`       datetime     DEFAULT NULL            COMMENT '报名时间',
  `tags`            varchar(255) DEFAULT NULL            COMMENT '标签,逗号分隔',
  `status`          char(1)      DEFAULT '0'             COMMENT '状态 0=潜在 1=试听 2=已报名 3=结业 4=流失',
  `del_flag`        char(1)      DEFAULT '0'             COMMENT '删除标志 0=存在 1=删除',
  `remark`          varchar(1000) DEFAULT NULL           COMMENT '备注',
  `create_dept`     bigint       DEFAULT NULL            COMMENT '创建部门',
  `create_by`       bigint       DEFAULT NULL            COMMENT '创建者',
  `create_time`     datetime     DEFAULT NULL            COMMENT '创建时间',
  `update_by`       bigint       DEFAULT NULL            COMMENT '更新者',
  `update_time`     datetime     DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_no` (`tenant_id`, `student_no`) USING BTREE,
  KEY `idx_tenant_status` (`tenant_id`, `status`) USING BTREE,
  KEY `idx_tenant_phone` (`tenant_id`, `phone`) USING BTREE,
  KEY `idx_tenant_name` (`tenant_id`, `name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生主表';

-- 3.2 家长表（一对多：一个学生多个家长）
DROP TABLE IF EXISTS `edu_student_parent`;
CREATE TABLE `edu_student_parent` (
  `id`            bigint       NOT NULL                COMMENT '主键',
  `tenant_id`     varchar(20)  DEFAULT '000000'        COMMENT '租户ID',
  `student_id`    bigint       NOT NULL                COMMENT '学生ID',
  `relation`      varchar(16)  NOT NULL                COMMENT '与学生关系 FATHER/MOTHER/GRANDPA/GRANDMA/OTHER',
  `name`          varchar(64)  NOT NULL                COMMENT '家长姓名',
  `phone`         varchar(20)  NOT NULL                COMMENT '联系电话',
  `wechat`        varchar(64)  DEFAULT NULL            COMMENT '微信号',
  `email`         varchar(128) DEFAULT NULL            COMMENT '邮箱',
  `id_card`       varchar(32)  DEFAULT NULL            COMMENT '身份证',
  `occupation`    varchar(64)  DEFAULT NULL            COMMENT '职业',
  `is_primary`    char(1)      DEFAULT 'N'             COMMENT '是否主联系人 Y/N',
  `receive_notice` char(1)     DEFAULT 'Y'             COMMENT '是否接收通知 Y/N',
  `del_flag`      char(1)      DEFAULT '0'             COMMENT '删除标志 0=存在 1=删除',
  `remark`        varchar(500) DEFAULT NULL            COMMENT '备注',
  `create_dept`   bigint       DEFAULT NULL            COMMENT '创建部门',
  `create_by`     bigint       DEFAULT NULL            COMMENT '创建者',
  `create_time`   datetime     DEFAULT NULL            COMMENT '创建时间',
  `update_by`     bigint       DEFAULT NULL            COMMENT '更新者',
  `update_time`   datetime     DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_student` (`student_id`) USING BTREE,
  KEY `idx_tenant_phone` (`tenant_id`, `phone`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生家长表';

-- 3.3 紧急联系人
DROP TABLE IF EXISTS `edu_student_emergency`;
CREATE TABLE `edu_student_emergency` (
  `id`            bigint       NOT NULL                COMMENT '主键',
  `tenant_id`     varchar(20)  DEFAULT '000000'        COMMENT '租户ID',
  `student_id`    bigint       NOT NULL                COMMENT '学生ID',
  `name`          varchar(64)  NOT NULL                COMMENT '紧急联系人姓名',
  `relation`      varchar(16)  NOT NULL                COMMENT '关系',
  `phone`         varchar(20)  NOT NULL                COMMENT '联系电话',
  `remark`        varchar(255) DEFAULT NULL            COMMENT '备注',
  `del_flag`      char(1)      DEFAULT '0'             COMMENT '删除标志 0=存在 1=删除',
  `create_dept`   bigint       DEFAULT NULL            COMMENT '创建部门',
  `create_by`     bigint       DEFAULT NULL            COMMENT '创建者',
  `create_time`   datetime     DEFAULT NULL            COMMENT '创建时间',
  `update_by`     bigint       DEFAULT NULL            COMMENT '更新者',
  `update_time`   datetime     DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_student` (`student_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生紧急联系人';

-- =====================================================================
-- 四、课包上下文 course-package
-- =====================================================================

-- 4.1 课包SKU主表（售卖单元）
DROP TABLE IF EXISTS `edu_course_package`;
CREATE TABLE `edu_course_package` (
  `id`              bigint        NOT NULL              COMMENT '课包ID',
  `tenant_id`       varchar(20)   DEFAULT '000000'      COMMENT '租户ID',
  `package_code`    varchar(32)   NOT NULL              COMMENT '课包编码',
  `package_name`    varchar(128)  NOT NULL              COMMENT '课包名称',
  `package_type`    varchar(32)   NOT NULL              COMMENT '课包类型 EXPERIENCE=体验课 PACKAGE=课包 SINGLE=单课时 COURSE=全期',
  `subject`         varchar(32)   DEFAULT NULL          COMMENT '学科',
  `grade`           varchar(32)   DEFAULT NULL          COMMENT '适用年级',
  `total_hours`     decimal(10,2) NOT NULL              COMMENT '总课时(小时)',
  `lesson_count`    int           NOT NULL              COMMENT '总课次',
  `valid_days`      int           DEFAULT 365           COMMENT '有效期(天)',
  `max_students`    int           DEFAULT 1             COMMENT '单次课最大上课人数 1=一对一',
  `list_price`      decimal(12,2) NOT NULL              COMMENT '挂牌价(元)',
  `sale_price`      decimal(12,2) NOT NULL              COMMENT '销售价(元)',
  `cost_price`      decimal(12,2) DEFAULT 0.00          COMMENT '成本价(元)',
  `gift_hours`      decimal(10,2) DEFAULT 0.00          COMMENT '赠送课时',
  `hours_per_lesson` decimal(6,2) DEFAULT 1.00          COMMENT '每课时小时数(消课用)',
  `description`     varchar(2000) DEFAULT NULL          COMMENT '课包说明',
  `cover_url`       varchar(500)  DEFAULT NULL          COMMENT '封面图',
  `is_hot`          char(1)       DEFAULT 'N'           COMMENT '是否热门 N/Y',
  `is_gift`         char(1)       DEFAULT 'N'           COMMENT '是否赠送包 N/Y',
  `status`          char(1)       DEFAULT '0'           COMMENT '状态 0=上架 1=下架',
  `del_flag`        char(1)       DEFAULT '0'           COMMENT '删除标志 0=存在 1=删除',
  `sale_start_at`   date          DEFAULT NULL          COMMENT '售卖开始',
  `sale_end_at`     date          DEFAULT NULL          COMMENT '售卖结束',
  `remark`          varchar(500)  DEFAULT NULL          COMMENT '备注',
  `create_dept`     bigint        DEFAULT NULL          COMMENT '创建部门',
  `create_by`       bigint        DEFAULT NULL          COMMENT '创建者',
  `create_time`     datetime      DEFAULT NULL          COMMENT '创建时间',
  `update_by`       bigint        DEFAULT NULL          COMMENT '更新者',
  `update_time`     datetime      DEFAULT NULL          COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_code` (`tenant_id`, `package_code`) USING BTREE,
  KEY `idx_tenant_type_status` (`tenant_id`, `package_type`, `status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课包SKU主表';

-- 4.2 课包价格策略（折扣/优惠）
DROP TABLE IF EXISTS `edu_course_package_strategy`;
CREATE TABLE `edu_course_package_strategy` (
  `id`              bigint        NOT NULL              COMMENT '主键',
  `tenant_id`       varchar(20)   DEFAULT '000000'      COMMENT '租户ID',
  `package_id`      bigint        NOT NULL              COMMENT '课包ID',
  `strategy_name`   varchar(128)  NOT NULL              COMMENT '策略名',
  `strategy_type`   varchar(32)   NOT NULL              COMMENT '类型 DISCOUNT=打折 REDUCE=减现 GIFT=加赠 CASHBACK=返现',
  `condition_type`  varchar(32)   DEFAULT NULL          COMMENT '触发条件 AMOUNT/COUNT/NONE',
  `condition_value` decimal(12,2) DEFAULT NULL          COMMENT '条件值',
  `discount_rate`   decimal(5,2)  DEFAULT 1.00          COMMENT '折扣率 0~1',
  `reduce_amount`   decimal(12,2) DEFAULT 0.00          COMMENT '减现金额',
  `gift_hours`      decimal(10,2) DEFAULT 0.00          COMMENT '加赠课时',
  `cashback_amount` decimal(12,2) DEFAULT 0.00          COMMENT '返现金额',
  `priority`        int           DEFAULT 0             COMMENT '优先级(数字越大越优先)',
  `start_at`        datetime      DEFAULT NULL          COMMENT '生效开始',
  `end_at`          datetime      DEFAULT NULL          COMMENT '生效结束',
  `status`          char(1)       DEFAULT '0'           COMMENT '状态 0=启用 1=停用',
  `del_flag`        char(1)       DEFAULT '0'           COMMENT '删除标志 0=存在 1=删除',
  `remark`          varchar(500)  DEFAULT NULL          COMMENT '备注',
  `create_dept`     bigint        DEFAULT NULL          COMMENT '创建部门',
  `create_by`       bigint        DEFAULT NULL          COMMENT '创建者',
  `create_time`     datetime      DEFAULT NULL          COMMENT '创建时间',
  `update_by`       bigint        DEFAULT NULL          COMMENT '更新者',
  `update_time`     datetime      DEFAULT NULL          COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_tenant_package` (`tenant_id`, `package_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课包价格策略表';

-- =====================================================================
-- 五、合同上下文 contract
-- =====================================================================

-- 5.1 合同主表
DROP TABLE IF EXISTS `edu_contract`;
CREATE TABLE `edu_contract` (
  `id`              bigint        NOT NULL                COMMENT '合同ID',
  `tenant_id`       varchar(20)   DEFAULT '000000'        COMMENT '租户ID',
  `contract_no`     varchar(32)   NOT NULL                COMMENT '合同编号(业务流水号)',
  `student_id`      bigint        NOT NULL                COMMENT '学生ID',
  `contract_type`   varchar(32)   NOT NULL                COMMENT '合同类型 ENROLL=报名续费 ADDON=补购 REFUND=退费 TRANSFER=转课',
  `parent_contract_id` bigint     DEFAULT NULL            COMMENT '原合同ID(续费/补购/退费时关联)',
  `sign_date`       date          NOT NULL                COMMENT '签约日期',
  `effective_date`  date          DEFAULT NULL            COMMENT '生效日期',
  `expire_date`     date          DEFAULT NULL            COMMENT '到期日期',
  `total_amount`    decimal(14,2) NOT NULL DEFAULT 0.00   COMMENT '合同总金额(应收)',
  `discount_amount` decimal(14,2) NOT NULL DEFAULT 0.00   COMMENT '优惠金额',
  `paid_amount`     decimal(14,2) NOT NULL DEFAULT 0.00   COMMENT '实收金额',
  `refund_amount`   decimal(14,2) NOT NULL DEFAULT 0.00   COMMENT '退费金额',
  `total_hours`     decimal(10,2) NOT NULL DEFAULT 0.00   COMMENT '合同总课时',
  `used_hours`      decimal(10,2) NOT NULL DEFAULT 0.00   COMMENT '已消耗课时',
  `remain_hours`    decimal(10,2) NOT NULL DEFAULT 0.00   COMMENT '剩余课时',
  `gift_hours`      decimal(10,2) NOT NULL DEFAULT 0.00   COMMENT '赠送课时(不计入应收)',
  `payment_method`  varchar(32)   DEFAULT NULL            COMMENT '支付方式 CASH/WECHAT/ALIPAY/BANK/CARD',
  `payment_status`  char(1)       DEFAULT '0'             COMMENT '支付状态 0=未支付 1=部分支付 2=已支付 3=已退费',
  `status`          char(1)       DEFAULT '0'             COMMENT '合同状态 0=草稿 1=待生效 2=执行中 3=已结清 4=已退费 5=已转课 9=作废',
  `del_flag`        char(1)       DEFAULT '0'             COMMENT '删除标志 0=存在 1=删除',
  `sales_id`        bigint        DEFAULT NULL            COMMENT '课程顾问ID(edu_staff.id)',
  `housekeeper_id`  bigint        DEFAULT NULL            COMMENT '管家ID(edu_staff.id)',
  `sign_user_id`    bigint        DEFAULT NULL            COMMENT '签约负责人ID(edu_staff.id)',
  `sign_location`   varchar(255)  DEFAULT NULL            COMMENT '签约地点',
  `sign_image_url`  varchar(1000) DEFAULT NULL            COMMENT '合同扫描件URL',
  `description`     varchar(2000) DEFAULT NULL            COMMENT '合同说明',
  `signed_at`       datetime      DEFAULT NULL            COMMENT '签约时间',
  `activated_at`    datetime      DEFAULT NULL            COMMENT '激活时间',
  `finished_at`     datetime      DEFAULT NULL            COMMENT '结清时间',
  `remark`          varchar(500)  DEFAULT NULL            COMMENT '备注',
  `create_dept`     bigint        DEFAULT NULL            COMMENT '创建部门',
  `create_by`       bigint        DEFAULT NULL            COMMENT '创建者',
  `create_time`     datetime      DEFAULT NULL            COMMENT '创建时间',
  `update_by`       bigint        DEFAULT NULL            COMMENT '更新者',
  `update_time`     datetime      DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_no` (`tenant_id`, `contract_no`) USING BTREE,
  KEY `idx_tenant_student` (`tenant_id`, `student_id`) USING BTREE,
  KEY `idx_tenant_status` (`tenant_id`, `status`) USING BTREE,
  KEY `idx_tenant_sales` (`tenant_id`, `sales_id`) USING BTREE,
  KEY `idx_tenant_housekeeper` (`tenant_id`, `housekeeper_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学员合同主表';

-- 5.2 合同课包明细（一个合同可包含多个课包）
DROP TABLE IF EXISTS `edu_contract_package`;
CREATE TABLE `edu_contract_package` (
  `id`               bigint        NOT NULL                COMMENT '明细ID',
  `tenant_id`        varchar(20)   DEFAULT '000000'        COMMENT '租户ID',
  `contract_id`      bigint        NOT NULL                COMMENT '合同ID',
  `package_id`       bigint        NOT NULL                COMMENT '课包ID',
  `package_name`     varchar(128)  NOT NULL                COMMENT '课包名(快照)',
  `package_type`     varchar(32)   NOT NULL                COMMENT '课包类型(快照)',
  `total_hours`      decimal(10,2) NOT NULL                COMMENT '购买课时',
  `used_hours`       decimal(10,2) NOT NULL DEFAULT 0.00   COMMENT '已消耗',
  `remain_hours`     decimal(10,2) NOT NULL                COMMENT '剩余',
  `gift_hours`       decimal(10,2) NOT NULL DEFAULT 0.00   COMMENT '赠送课时',
  `list_price`       decimal(12,2) NOT NULL                COMMENT '原价(快照)',
  `sale_price`       decimal(12,2) NOT NULL                COMMENT '成交价(快照)',
  `discount_amount`  decimal(14,2) NOT NULL DEFAULT 0.00   COMMENT '优惠金额',
  `final_amount`     decimal(14,2) NOT NULL                COMMENT '明细金额',
  `strategy_id`      bigint        DEFAULT NULL            COMMENT '使用的策略ID',
  `strategy_snapshot` varchar(2000) DEFAULT NULL           COMMENT '策略快照JSON',
  `expire_date`      date          DEFAULT NULL            COMMENT '本课包到期日',
  `status`           char(1)       DEFAULT '0'             COMMENT '状态 0=正常 1=已转出 2=已退费',
  `del_flag`         char(1)       DEFAULT '0'             COMMENT '删除标志 0=存在 1=删除',
  `remark`           varchar(500)  DEFAULT NULL            COMMENT '备注',
  `create_dept`      bigint        DEFAULT NULL            COMMENT '创建部门',
  `create_by`        bigint        DEFAULT NULL            COMMENT '创建者',
  `create_time`      datetime      DEFAULT NULL            COMMENT '创建时间',
  `update_by`        bigint        DEFAULT NULL            COMMENT '更新者',
  `update_time`      datetime      DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_tenant_contract` (`tenant_id`, `contract_id`) USING BTREE,
  KEY `idx_tenant_package` (`tenant_id`, `package_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同课包明细';

-- 5.3 合同赠送课时明细（合同内单独的赠送，不走付费课包）
DROP TABLE IF EXISTS `edu_contract_gift`;
CREATE TABLE `edu_contract_gift` (
  `id`            bigint        NOT NULL              COMMENT '主键',
  `tenant_id`     varchar(20)   DEFAULT '000000'      COMMENT '租户ID',
  `contract_id`   bigint        NOT NULL              COMMENT '合同ID',
  `gift_type`     varchar(32)   NOT NULL              COMMENT '赠送类型 HOURS=课时 LESSON_COUNT=课次',
  `gift_hours`    decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '赠送课时',
  `gift_count`    int           NOT NULL DEFAULT 0    COMMENT '赠送课次',
  `used_hours`    decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '已使用',
  `remain_hours`  decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT '剩余',
  `reason`        varchar(255)  DEFAULT NULL          COMMENT '赠送原因(活动/推荐/老带新)',
  `expire_date`   date          DEFAULT NULL          COMMENT '到期日期',
  `status`        char(1)       DEFAULT '0'           COMMENT '状态 0=正常 1=失效',
  `del_flag`      char(1)       DEFAULT '0'           COMMENT '删除标志 0=存在 1=删除',
  `remark`        varchar(500)  DEFAULT NULL          COMMENT '备注',
  `create_dept`   bigint        DEFAULT NULL          COMMENT '创建部门',
  `create_by`     bigint        DEFAULT NULL          COMMENT '创建者',
  `create_time`   datetime      DEFAULT NULL          COMMENT '创建时间',
  `update_by`     bigint        DEFAULT NULL          COMMENT '更新者',
  `update_time`   datetime      DEFAULT NULL          COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_tenant_contract` (`tenant_id`, `contract_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同赠送课时明细';

-- 5.4 合同续费/退费/转课 流水
DROP TABLE IF EXISTS `edu_contract_log`;
CREATE TABLE `edu_contract_log` (
  `id`            bigint        NOT NULL                COMMENT '主键',
  `tenant_id`     varchar(20)   DEFAULT '000000'        COMMENT '租户ID',
  `contract_id`   bigint        NOT NULL                COMMENT '合同ID',
  `action`        varchar(32)   NOT NULL                COMMENT '动作 CREATE/ACTIVATE/PAY/REFUND/TRANSFER/RENEW/EXPIRE/VOID',
  `amount`        decimal(14,2) NOT NULL DEFAULT 0.00   COMMENT '本次金额(正=收款/负=退款)',
  `hours_delta`   decimal(10,2) NOT NULL DEFAULT 0.00   COMMENT '课时变动(正=增加/负=减少)',
  `ref_contract_id` bigint      DEFAULT NULL            COMMENT '关联合同ID(退费/转课/续费关联)',
  `operator_id`   bigint        DEFAULT NULL            COMMENT '操作人(员工ID)',
  `operator_name` varchar(64)   DEFAULT NULL            COMMENT '操作人姓名',
  `reason`        varchar(500)  DEFAULT NULL            COMMENT '原因',
  `attachments`   varchar(2000) DEFAULT NULL            COMMENT '附件JSON',
  `log_time`      datetime      DEFAULT NULL            COMMENT '操作时间',
  `create_dept`   bigint        DEFAULT NULL            COMMENT '创建部门',
  `create_by`     bigint        DEFAULT NULL            COMMENT '创建者',
  `create_time`   datetime      DEFAULT NULL            COMMENT '创建时间',
  `update_by`     bigint        DEFAULT NULL            COMMENT '更新者',
  `update_time`   datetime      DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_tenant_contract` (`tenant_id`, `contract_id`) USING BTREE,
  KEY `idx_tenant_action` (`tenant_id`, `action`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同操作流水';

-- 5.5 合同缴费计划(分期付款时生成, 对标 edu_contract_milestone)
DROP TABLE IF EXISTS `edu_contract_payment_plan`;
CREATE TABLE `edu_contract_payment_plan` (
  `id`             bigint        NOT NULL                COMMENT '主键',
  `tenant_id`      varchar(20)   DEFAULT '000000'        COMMENT '租户ID',
  `contract_id`    bigint        NOT NULL                COMMENT '合同ID',
  `installment_no` int           NOT NULL                COMMENT '期次号 1/2/3',
  `plan_amount`    decimal(14,2) NOT NULL                COMMENT '本期应收金额',
  `plan_date`      date          NOT NULL                COMMENT '本期应付日期',
  `paid_amount`    decimal(14,2) NOT NULL DEFAULT 0.00   COMMENT '本期实收金额',
  `paid_date`      date          DEFAULT NULL            COMMENT '实际收款日期',
  `payment_method` varchar(32)   DEFAULT NULL            COMMENT '本期支付方式 CASH/WECHAT/ALIPAY/BANK/CARD',
  `status`         char(1)       DEFAULT '0'             COMMENT '状态 0=待收 1=已收 4=已作废',
  `remark`         varchar(500)  DEFAULT NULL            COMMENT '备注',
  `del_flag`       char(1)       DEFAULT '0'             COMMENT '删除标志 0=存在 1=删除',
  `create_dept`    bigint        DEFAULT NULL            COMMENT '创建部门',
  `create_by`      bigint        DEFAULT NULL            COMMENT '创建者',
  `create_time`    datetime      DEFAULT NULL            COMMENT '创建时间',
  `update_by`      bigint        DEFAULT NULL            COMMENT '更新者',
  `update_time`    datetime      DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_contract_no` (`tenant_id`, `contract_id`, `installment_no`) USING BTREE,
  KEY `idx_tenant_contract` (`tenant_id`, `contract_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同缴费计划(分期)';

-- =====================================================================
-- 六、排课消课上下文 schedule
-- =====================================================================

-- 6.1 排课主表
DROP TABLE IF EXISTS `edu_lesson_schedule`;
CREATE TABLE `edu_lesson_schedule` (
  `id`              bigint        NOT NULL              COMMENT '排课ID',
  `tenant_id`       varchar(20)   DEFAULT '000000'      COMMENT '租户ID',
  `schedule_no`     varchar(32)   NOT NULL              COMMENT '排课单号',
  `student_id`      bigint        NOT NULL              COMMENT '学生ID',
  `contract_id`     bigint        DEFAULT NULL          COMMENT '合同ID(可选,排课时可不绑定)',
  `tutor_id`        bigint        NOT NULL              COMMENT '辅导老师ID',
  `subject`         varchar(32)   NOT NULL              COMMENT '学科',
  `lesson_type`     varchar(32)   NOT NULL              COMMENT '课型 ONE_ON_ONE=1V1 SMALL_CLASS=小班 LARGE_CLASS=大班 EXPERIENCE=体验',
  `class_name`      varchar(128)  DEFAULT NULL          COMMENT '班级名称(小班用)',
  `lesson_date`     date          NOT NULL              COMMENT '上课日期',
  `start_time`      datetime      NOT NULL              COMMENT '上课开始',
  `end_time`        datetime      NOT NULL              COMMENT '上课结束',
  `duration_hours`  decimal(6,2)  NOT NULL              COMMENT '本节课时长(小时)',
  `classroom`       varchar(128)  DEFAULT NULL          COMMENT '教室/线上链接',
  `lesson_content`  varchar(2000) DEFAULT NULL          COMMENT '本次课内容',
  `homework`        varchar(2000) DEFAULT NULL          COMMENT '本次作业',
  `max_students`    int           DEFAULT 1             COMMENT '本课最大人数',
  `enrolled_count`  int           DEFAULT 0             COMMENT '已报名人数',
  `status`          char(1)       DEFAULT '0'           COMMENT '状态 0=待上课 1=已签到 2=已消课 3=请假 4=取消 5=旷课',
  `check_in_at`     datetime      DEFAULT NULL          COMMENT '签到时间',
  `check_out_at`    datetime      DEFAULT NULL          COMMENT '下课时间',
  `consume_hours`   decimal(8,2)  DEFAULT 0.00          COMMENT '本次实际消课时',
  `consume_rate`    decimal(5,2)  DEFAULT 1.00          COMMENT '消课比例 体验=0.5/正课=1/1v1=2',
  `comment`         varchar(2000) DEFAULT NULL          COMMENT '课堂点评',
  `del_flag`        char(1)       DEFAULT '0'           COMMENT '删除标志 0=存在 1=删除',
  `remark`          varchar(500)  DEFAULT NULL          COMMENT '备注',
  `create_dept`     bigint        DEFAULT NULL          COMMENT '创建部门',
  `create_by`       bigint        DEFAULT NULL          COMMENT '创建者',
  `create_time`     datetime      DEFAULT NULL          COMMENT '创建时间',
  `update_by`       bigint        DEFAULT NULL          COMMENT '更新者',
  `update_time`     datetime      DEFAULT NULL          COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_no` (`tenant_id`, `schedule_no`) USING BTREE,
  KEY `idx_tenant_student_date` (`tenant_id`, `student_id`, `lesson_date`) USING BTREE,
  KEY `idx_tenant_tutor_date` (`tenant_id`, `tutor_id`, `lesson_date`) USING BTREE,
  KEY `idx_tenant_status_date` (`tenant_id`, `status`, `lesson_date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='排课主表';

-- 6.2 排课-学生关联（小班课多人）
DROP TABLE IF EXISTS `edu_lesson_student`;
CREATE TABLE `edu_lesson_student` (
  `id`              bigint        NOT NULL              COMMENT '主键',
  `tenant_id`       varchar(20)   DEFAULT '000000'      COMMENT '租户ID',
  `schedule_id`     bigint        NOT NULL              COMMENT '排课ID',
  `student_id`      bigint        NOT NULL              COMMENT '学生ID',
  `contract_id`     bigint        DEFAULT NULL          COMMENT '扣课时使用的合同ID',
  `package_id`      bigint        DEFAULT NULL          COMMENT '扣课时使用的课包ID',
  `hours_should`    decimal(8,2)  NOT NULL              COMMENT '应扣课时',
  `hours_actual`    decimal(8,2)  NOT NULL DEFAULT 0.00 COMMENT '实扣课时',
  `consume_rate`    decimal(5,2)  DEFAULT 1.00          COMMENT '消课比例',
  `status`          char(1)       DEFAULT '0'           COMMENT '状态 0=待上课 1=已签到 2=已消课 3=请假 4=取消 5=旷课',
  `check_in_at`     datetime      DEFAULT NULL          COMMENT '签到',
  `check_out_at`    datetime      DEFAULT NULL          COMMENT '下课',
  `reason`          varchar(255)  DEFAULT NULL          COMMENT '请假/取消原因',
  `del_flag`        char(1)       DEFAULT '0'           COMMENT '删除标志 0=存在 1=删除',
  `remark`          varchar(500)  DEFAULT NULL          COMMENT '备注',
  `create_dept`     bigint        DEFAULT NULL          COMMENT '创建部门',
  `create_by`       bigint        DEFAULT NULL          COMMENT '创建者',
  `create_time`     datetime      DEFAULT NULL          COMMENT '创建时间',
  `update_by`       bigint        DEFAULT NULL          COMMENT '更新者',
  `update_time`     datetime      DEFAULT NULL          COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_schedule_student` (`tenant_id`, `schedule_id`, `student_id`) USING BTREE,
  KEY `idx_tenant_student` (`tenant_id`, `student_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='排课-学生关联表(消课流水前置)';

-- 6.3 课时消耗流水(核心账本)
DROP TABLE IF EXISTS `edu_hours_log`;
CREATE TABLE `edu_hours_log` (
  `id`              bigint        NOT NULL              COMMENT '主键',
  `tenant_id`       varchar(20)   DEFAULT '000000'      COMMENT '租户ID',
  `log_no`          varchar(32)   NOT NULL              COMMENT '流水号',
  `student_id`      bigint        NOT NULL              COMMENT '学生ID',
  `contract_id`     bigint        DEFAULT NULL          COMMENT '合同ID',
  `package_id`      bigint        DEFAULT NULL          COMMENT '课包ID',
  `contract_package_id` bigint    DEFAULT NULL          COMMENT '合同课包明细ID',
  `gift_id`         bigint        DEFAULT NULL          COMMENT '赠送ID(扣赠送课时时)',
  `schedule_id`     bigint        DEFAULT NULL          COMMENT '排课ID',
  `lesson_student_id` bigint      DEFAULT NULL          COMMENT '排课-学生ID',
  `business_type`   varchar(32)   NOT NULL              COMMENT '业务类型 CONSUME/PURCHASE/REFUND/TRANSFER_OUT/TRANSFER_IN/GIFT/EXPIRE/ADJUST',
  `direction`       char(1)       NOT NULL              COMMENT '方向 - =扣减 + =增加',
  `hours`           decimal(10,2) NOT NULL              COMMENT '本次变动课时(正数)',
  `before_hours`    decimal(10,2) NOT NULL              COMMENT '变更前',
  `after_hours`     decimal(10,2) NOT NULL              COMMENT '变更后',
  `rate`            decimal(5,2)  DEFAULT 1.00          COMMENT '消课比例',
  `reason`          varchar(500)  DEFAULT NULL          COMMENT '原因',
  `operator_id`     bigint        DEFAULT NULL          COMMENT '操作人ID',
  `operator_name`   varchar(64)   DEFAULT NULL          COMMENT '操作人姓名',
  `log_time`        datetime      DEFAULT NULL          COMMENT '业务时间',
  `remark`          varchar(500)  DEFAULT NULL          COMMENT '备注',
  `create_dept`     bigint        DEFAULT NULL          COMMENT '创建部门',
  `create_by`       bigint        DEFAULT NULL          COMMENT '创建者',
  `create_time`     datetime      DEFAULT NULL          COMMENT '创建时间',
  `update_by`       bigint        DEFAULT NULL          COMMENT '更新者',
  `update_time`     datetime      DEFAULT NULL          COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_log_no` (`tenant_id`, `log_no`) USING BTREE,
  KEY `idx_tenant_student_biz` (`tenant_id`, `student_id`, `business_type`) USING BTREE,
  KEY `idx_tenant_contract` (`tenant_id`, `contract_id`) USING BTREE,
  KEY `idx_tenant_schedule` (`tenant_id`, `schedule_id`) USING BTREE,
  KEY `idx_tenant_time` (`tenant_id`, `log_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课时账本流水(双向)';

-- =====================================================================
-- 七、操作审计
-- =====================================================================

DROP TABLE IF EXISTS `edu_audit_log`;
CREATE TABLE `edu_audit_log` (
  `id`            bigint        NOT NULL                COMMENT '主键',
  `tenant_id`     varchar(20)   DEFAULT '000000'        COMMENT '租户ID',
  `business_type` varchar(32)   NOT NULL                COMMENT '业务模块 STUDENT/STAFF/PACKAGE/CONTRACT/SCHEDULE',
  `action`        varchar(64)   NOT NULL                COMMENT '动作',
  `entity_id`     bigint        DEFAULT NULL            COMMENT '业务实体ID',
  `entity_no`     varchar(64)   DEFAULT NULL            COMMENT '业务单号',
  `before_json`   text          DEFAULT NULL            COMMENT '变更前快照',
  `after_json`    text          DEFAULT NULL            COMMENT '变更后快照',
  `diff_json`     text          DEFAULT NULL            COMMENT '差异',
  `operator_id`   bigint        DEFAULT NULL            COMMENT '操作人ID',
  `operator_name` varchar(64)   DEFAULT NULL            COMMENT '操作人姓名',
  `client_ip`     varchar(64)   DEFAULT NULL            COMMENT '客户端IP',
  `operate_time`  datetime      DEFAULT NULL            COMMENT '操作时间',
  `cost_ms`       bigint        DEFAULT NULL            COMMENT '耗时ms',
  `success`       char(1)       DEFAULT 'Y'             COMMENT '是否成功 Y/N',
  `error_msg`     varchar(2000) DEFAULT NULL            COMMENT '错误信息',
  `create_dept`   bigint        DEFAULT NULL            COMMENT '创建部门',
  `create_by`     bigint        DEFAULT NULL            COMMENT '创建者',
  `create_time`   datetime      DEFAULT NULL            COMMENT '创建时间',
  `update_by`     bigint        DEFAULT NULL            COMMENT '更新者',
  `update_time`   datetime      DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_tenant_biz_entity` (`tenant_id`, `business_type`, `entity_id`) USING BTREE,
  KEY `idx_tenant_operator_time` (`tenant_id`, `operator_id`, `operate_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='业务审计日志';

-- =====================================================================
-- 八、初始数据：业务字典
-- =====================================================================

INSERT INTO `edu_dict`(`id`,`tenant_id`,`dict_type`,`dict_label`,`dict_value`,`sort_order`,`is_default`,`status`) VALUES
(1,'000000','staff_role','课程顾问','SALES',1,'N','0'),
(2,'000000','staff_role','管家(学管)','HOUSEKEEPER',2,'N','0'),
(3,'000000','staff_role','辅导老师','TUTOR',3,'N','0'),
(4,'000000','staff_role','文书老师','DOC_WRITER',4,'N','0'),
(10,'000000','package_type','体验课','EXPERIENCE',1,'N','0'),
(11,'000000','package_type','课包','PACKAGE',2,'N','0'),
(12,'000000','package_type','单课时','SINGLE',3,'N','0'),
(13,'000000','package_type','全期课程','COURSE',4,'N','0'),
(20,'000000','contract_type','报名合同','ENROLL',1,'N','0'),
(21,'000000','contract_type','续费合同','RENEW',2,'N','0'),
(22,'000000','contract_type','补购合同','ADDON',3,'N','0'),
(23,'000000','contract_type','退费合同','REFUND',4,'N','0'),
(24,'000000','contract_type','转课合同','TRANSFER',5,'N','0'),
(30,'000000','contract_status','草稿','0',1,'Y','0'),
(31,'000000','contract_status','待生效','1',2,'N','0'),
(32,'000000','contract_status','执行中','2',3,'N','0'),
(33,'000000','contract_status','已结清','3',4,'N','0'),
(34,'000000','contract_status','已退费','4',5,'N','0'),
(35,'000000','contract_status','已转课','5',6,'N','0'),
(36,'000000','contract_status','已作废','9',7,'N','0'),
(40,'000000','payment_status','未支付','0',1,'Y','0'),
(41,'000000','payment_status','部分支付','1',2,'N','0'),
(42,'000000','payment_status','已支付','2',3,'N','0'),
(43,'000000','payment_status','已退费','3',4,'N','0'),
(50,'000000','lesson_type','一对一','ONE_ON_ONE',1,'N','0'),
(51,'000000','lesson_type','小班课','SMALL_CLASS',2,'N','0'),
(52,'000000','lesson_type','大班课','LARGE_CLASS',3,'N','0'),
(53,'000000','lesson_type','体验课','EXPERIENCE',4,'N','0'),
(60,'000000','schedule_status','待上课','0',1,'Y','0'),
(61,'000000','schedule_status','已签到','1',2,'N','0'),
(62,'000000','schedule_status','已消课','2',3,'N','0'),
(63,'000000','schedule_status','请假','3',4,'N','0'),
(64,'000000','schedule_status','已取消','4',5,'N','0'),
(65,'000000','schedule_status','旷课','5',6,'N','0'),
(70,'000000','student_status','潜在','0',1,'N','0'),
(71,'000000','student_status','试听','1',2,'N','0'),
(72,'000000','student_status','已报名','2',3,'Y','0'),
(73,'000000','student_status','结业','3',4,'N','0'),
(74,'000000','student_status','流失','4',5,'N','0'),
(80,'000000','payment_method','现金','CASH',1,'N','0'),
(81,'000000','payment_method','微信','WECHAT',2,'N','0'),
(82,'000000','payment_method','支付宝','ALIPAY',3,'N','0'),
(83,'000000','payment_method','银行卡','BANK',4,'N','0'),
(84,'000000','payment_method','信用卡','CARD',5,'N','0'),
(90,'000000','parent_relation','父亲','FATHER',1,'N','0'),
(91,'000000','parent_relation','母亲','MOTHER',2,'N','0'),
(92,'000000','parent_relation','爷爷/外公','GRANDPA',3,'N','0'),
(93,'000000','parent_relation','奶奶/外婆','GRANDMA',4,'N','0'),
(94,'000000','parent_relation','其他','OTHER',5,'N','0'),
(100,'000000','hours_biz_type','购买','PURCHASE',1,'N','0'),
(101,'000000','hours_biz_type','消课','CONSUME',2,'N','0'),
(102,'000000','hours_biz_type','退费','REFUND',3,'N','0'),
(103,'000000','hours_biz_type','转出','TRANSFER_OUT',4,'N','0'),
(104,'000000','hours_biz_type','转入','TRANSFER_IN',5,'N','0'),
(105,'000000','hours_biz_type','赠送','GIFT',6,'N','0'),
(106,'000000','hours_biz_type','过期','EXPIRE',7,'N','0'),
(107,'000000','hours_biz_type','手动调整','ADJUST',8,'N','0'),
(110,'000000','payment_plan_status','待收','0',1,'Y','0'),
(111,'000000','payment_plan_status','已收','1',2,'N','0'),
(112,'000000','payment_plan_status','已作废','4',3,'N','0');

-- =====================================================================
-- 九、菜单与权限（注入 ruoyi 的 sys_menu）
-- =====================================================================

-- 一级菜单：教务管理
INSERT INTO `sys_menu`(`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`remark`)
VALUES (2000,'教务管理',0,5,'edu','Layout',1,0,'M','0','0',NULL,'education','1',NOW(),'教务管理目录')
,(2001,'学生管理',2000,1,'student','edu/student/index',1,0,'C','0','0','edu:student:list','user','1',NOW(),'学生管理菜单')
,(2002,'课包管理',2000,2,'package','edu/package/index',1,0,'C','0','0','edu:package:list','shopping','1',NOW(),'课包管理菜单')
,(2003,'合同管理',2000,3,'contract','edu/contract/index',1,0,'C','0','0','edu:contract:list','document','1',NOW(),'合同管理菜单')
,(2004,'排课消课',2000,4,'schedule','edu/schedule/index',1,0,'C','0','0','edu:schedule:list','calendar','1',NOW(),'排课消课菜单')
,(2005,'员工管理',2000,5,'staff','edu/staff/index',1,0,'C','0','0','edu:staff:list','peoples','1',NOW(),'员工管理菜单')
;

-- 学生管理按钮
INSERT INTO `sys_menu`(`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`remark`) VALUES
(2010,'学生查询',2001,1,'','',1,0,'F','0','0','edu:student:query','#',1,NOW(),''),
(2011,'学生新增',2001,2,'','',1,0,'F','0','0','edu:student:add','#',1,NOW(),''),
(2012,'学生修改',2001,3,'','',1,0,'F','0','0','edu:student:edit','#',1,NOW(),''),
(2013,'学生删除',2001,4,'','',1,0,'F','0','0','edu:student:remove','#',1,NOW(),''),
(2014,'学生导出',2001,5,'','',1,0,'F','0','0','edu:student:export','#',1,NOW(),''),
(2015,'家长管理',2001,6,'','',1,0,'F','0','0','edu:student:parent','#',1,NOW(),'');

-- 课包管理按钮
INSERT INTO `sys_menu`(`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`remark`) VALUES
(2020,'课包查询',2002,1,'','',1,0,'F','0','0','edu:package:query','#',1,NOW(),''),
(2021,'课包新增',2002,2,'','',1,0,'F','0','0','edu:package:add','#',1,NOW(),''),
(2022,'课包修改',2002,3,'','',1,0,'F','0','0','edu:package:edit','#',1,NOW(),''),
(2023,'课包删除',2002,4,'','',1,0,'F','0','0','edu:package:remove','#',1,NOW(),''),
(2024,'课包上架',2002,5,'','',1,0,'F','0','0','edu:package:onSale','#',1,NOW(),''),
(2025,'价格策略',2002,6,'','',1,0,'F','0','0','edu:package:strategy','#',1,NOW(),'');

-- 合同管理按钮
INSERT INTO `sys_menu`(`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`remark`) VALUES
(2030,'合同查询',2003,1,'','',1,0,'F','0','0','edu:contract:query','#',1,NOW(),''),
(2031,'合同新增',2003,2,'','',1,0,'F','0','0','edu:contract:add','#',1,NOW(),''),
(2032,'合同修改',2003,3,'','',1,0,'F','0','0','edu:contract:edit','#',1,NOW(),''),
(2033,'合同删除',2003,4,'','',1,0,'F','0','0','edu:contract:remove','#',1,NOW(),''),
(2034,'合同激活',2003,5,'','',1,0,'F','0','0','edu:contract:activate','#',1,NOW(),''),
(2035,'合同退费',2003,6,'','',1,0,'F','0','0','edu:contract:refund','#',1,NOW(),''),
(2036,'合同转课',2003,7,'','',1,0,'F','0','0','edu:contract:transfer','#',1,NOW(),''),
(2037,'合同续费',2003,8,'','',1,0,'F','0','0','edu:contract:renew','#',1,NOW(),''),
(2038,'合同导出',2003,9,'','',1,0,'F','0','0','edu:contract:export','#',1,NOW(),'');

-- 排课消课按钮
INSERT INTO `sys_menu`(`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`remark`) VALUES
(2040,'排课查询',2004,1,'','',1,0,'F','0','0','edu:schedule:query','#',1,NOW(),''),
(2041,'新增排课',2004,2,'','',1,0,'F','0','0','edu:schedule:add','#',1,NOW(),''),
(2042,'修改排课',2004,3,'','',1,0,'F','0','0','edu:schedule:edit','#',1,NOW(),''),
(2043,'删除排课',2004,4,'','',1,0,'F','0','0','edu:schedule:remove','#',1,NOW(),''),
(2044,'学生签到',2004,5,'','',1,0,'F','0','0','edu:schedule:checkIn','#',1,NOW(),''),
(2045,'课后消课',2004,6,'','',1,0,'F','0','0','edu:schedule:consume','#',1,NOW(),''),
(2046,'学生请假',2004,7,'','',1,0,'F','0','0','edu:schedule:leave','#',1,NOW(),''),
(2047,'导出课表',2004,8,'','',1,0,'F','0','0','edu:schedule:export','#',1,NOW(),'');

-- 员工管理按钮
INSERT INTO `sys_menu`(`menu_id`,`menu_name`,`parent_id`,`order_num`,`path`,`component`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`remark`) VALUES
(2050,'员工查询',2005,1,'','',1,0,'F','0','0','edu:staff:query','#',1,NOW(),''),
(2051,'员工新增',2005,2,'','',1,0,'F','0','0','edu:staff:add','#',1,NOW(),''),
(2052,'员工修改',2005,3,'','',1,0,'F','0','0','edu:staff:edit','#',1,NOW(),''),
(2053,'员工删除',2005,4,'','',1,0,'F','0','0','edu:staff:remove','#',1,NOW(),''),
(2054,'员工导出',2005,5,'','',1,0,'F','0','0','edu:staff:export','#',1,NOW(),''),
(2055,'学生分配',2005,6,'','',1,0,'F','0','0','edu:staff:assign','#',1,NOW(),'');

SET FOREIGN_KEY_CHECKS = 1;
