# school_contract 表文档 ## 表概述 **表名**: school_contract **功能**: 合同信息管理表,存储教务系统中所有学员合同的基本信息、课程关联、价格体系、课时管理等核心数据 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int NULL NO PRI NULL auto_increment select,insert,update,references 合同编号 contract_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 合同名称 contract_template text utf8mb4_general_ci NO NULL select,insert,update,references 合同模板 contract_content longtext utf8mb4_general_ci YES NULL select,insert,update,references 合同内容(Word解析后的内容) contract_status varchar(50) utf8mb4_general_ci NO NULL select,insert,update,references 合同状态 contract_type varchar(50) utf8mb4_general_ci NO NULL select,insert,update,references 合同类型 remarks text utf8mb4_general_ci YES NULL select,insert,update,references 合同备注 created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 deleted_at int NULL NO 0 select,insert,update,references 逻辑删除时间 placeholder text utf8mb4_general_ci YES NULL select,insert,update,references 占位符配置 placeholder_config json NULL YES NULL select,insert,update,references 占位符配置 original_filename varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 原始文件名 file_size int NULL YES 0 select,insert,update,references 文件大小(字节) file_hash varchar(64) utf8mb4_general_ci YES NULL select,insert,update,references 文件hash值,用于防重复 placeholders json NULL YES NULL select,insert,update,references 从模板中解析出的占位符列表 ``` ## 功能用途 ### 主要功能 1. **合同基础管理**: 存储合同编号、名称、类型、状态等基本信息 2. **学员关联管理**: 通过member_id关联具体学员信息 3. **课程关联管理**: 通过course_id关联具体课程信息 4. **价格体系管理**: 管理合同总价、已付金额、优惠金额等财务信息 5. **课时管理系统**: 管理总课时、已消耗课时、剩余课时等课时信息 6. **合同周期管理**: 管理合同开始和结束时间 7. **合同状态控制**: 管理合同的各种状态(待审核、生效、暂停、结束等) 8. **校区归属管理**: 通过campus_id关联所属校区 9. **销售跟踪管理**: 记录销售人员和签约信息 ### 业务场景 1. **合同签署**: 学员报名时创建合同,记录课程和价格信息 2. **课时消耗**: 学员上课时扣减合同中的剩余课时 3. **财务结算**: 根据合同进行学费收取和退费处理 4. **合同变更**: 修改合同内容、延期、转课等操作 5. **课时预警**: 当剩余课时不足时进行提醒 6. **合同续费**: 合同到期时进行续费操作 7. **数据统计**: 统计合同收入、课时消耗等业务数据 8. **合同审核**: 合同创建后的审核流程管理 ## 关联关系 ### 主要关联表 1. **school_member**: 会员表(member_id字段关联) 2. **school_course**: 课程表(course_id字段关联) 3. **school_campus**: 校区表(campus_id字段关联) 4. **school_personnel**: 人员表(销售人员关联) 5. **school_order**: 订单表(合同支付关联) 6. **school_class_member**: 班级学员表(合同对应班级) 7. **school_schedule**: 排课表(课时消耗关联) 8. **school_refund**: 退费表(合同退费关联) 9. **school_contract_log**: 合同变更日志表 10. **school_payment**: 付款记录表 ### 关联说明 1. **学员关联**: 通过member_id与会员表关联,确定合同所属学员 2. **课程关联**: 通过course_id与课程表关联,确定合同对应的课程 3. **校区关联**: 通过campus_id关联校区,实现多校区合同管理 4. **财务关联**: 与订单、付款、退费等财务数据关联 5. **教学关联**: 与班级、排课等教学管理功能关联 6. **销售关联**: 记录销售人员的业绩和跟进情况 ## 索引建议 1. **主键索引**: id(已存在) 2. **外键索引**: - member_id(学员关联查询) - course_id(课程关联查询) - campus_id(校区关联查询) 3. **唯一索引**: - contract_no(合同编号唯一) 4. **普通索引**: - contract_name(合同名称搜索) - status(状态筛选) - start_time(开始时间排序) - end_time(结束时间排序) - create_time(创建时间排序) 5. **复合索引**: - (member_id, status)(学员+状态查询) - (campus_id, status)(校区+状态查询) - (course_id, status)(课程+状态查询) - (status, end_time)(状态+到期时间查询) ## 注意事项 1. **财务精度**: 价格相关字段使用decimal类型,避免浮点数精度问题 2. **课时逻辑**: used_class_hour不能超过total_class_hour 3. **时间逻辑**: start_time不能晚于end_time 4. **合同编号**: contract_no需要保证全局唯一性 5. **状态流转**: 合同状态变更需要记录操作日志 6. **软删除**: 使用deleted_at字段实现软删除,保护历史数据 7. **课时扣减**: 课时消耗需要原子性操作,避免并发问题 8. **合同变更**: 重要字段变更需要审核流程 9. **到期提醒**: 需要定时任务检查合同到期情况 10. **数据一致性**: 合同删除时需要处理相关的课时、付款等数据 11. **权限控制**: 不同角色对合同的操作权限不同 12. **审计追踪**: 重要操作需要记录操作人和操作时间