You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.7 KiB
5.7 KiB
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 从模板中解析出的占位符列表
功能用途
主要功能
- 合同基础管理: 存储合同编号、名称、类型、状态等基本信息
- 学员关联管理: 通过member_id关联具体学员信息
- 课程关联管理: 通过course_id关联具体课程信息
- 价格体系管理: 管理合同总价、已付金额、优惠金额等财务信息
- 课时管理系统: 管理总课时、已消耗课时、剩余课时等课时信息
- 合同周期管理: 管理合同开始和结束时间
- 合同状态控制: 管理合同的各种状态(待审核、生效、暂停、结束等)
- 校区归属管理: 通过campus_id关联所属校区
- 销售跟踪管理: 记录销售人员和签约信息
业务场景
- 合同签署: 学员报名时创建合同,记录课程和价格信息
- 课时消耗: 学员上课时扣减合同中的剩余课时
- 财务结算: 根据合同进行学费收取和退费处理
- 合同变更: 修改合同内容、延期、转课等操作
- 课时预警: 当剩余课时不足时进行提醒
- 合同续费: 合同到期时进行续费操作
- 数据统计: 统计合同收入、课时消耗等业务数据
- 合同审核: 合同创建后的审核流程管理
关联关系
主要关联表
- school_member: 会员表(member_id字段关联)
- school_course: 课程表(course_id字段关联)
- school_campus: 校区表(campus_id字段关联)
- school_personnel: 人员表(销售人员关联)
- school_order: 订单表(合同支付关联)
- school_class_member: 班级学员表(合同对应班级)
- school_schedule: 排课表(课时消耗关联)
- school_refund: 退费表(合同退费关联)
- school_contract_log: 合同变更日志表
- school_payment: 付款记录表
关联说明
- 学员关联: 通过member_id与会员表关联,确定合同所属学员
- 课程关联: 通过course_id与课程表关联,确定合同对应的课程
- 校区关联: 通过campus_id关联校区,实现多校区合同管理
- 财务关联: 与订单、付款、退费等财务数据关联
- 教学关联: 与班级、排课等教学管理功能关联
- 销售关联: 记录销售人员的业绩和跟进情况
索引建议
- 主键索引: id(已存在)
- 外键索引:
- member_id(学员关联查询)
- course_id(课程关联查询)
- campus_id(校区关联查询)
- 唯一索引:
- contract_no(合同编号唯一)
- 普通索引:
- contract_name(合同名称搜索)
- status(状态筛选)
- start_time(开始时间排序)
- end_time(结束时间排序)
- create_time(创建时间排序)
- 复合索引:
- (member_id, status)(学员+状态查询)
- (campus_id, status)(校区+状态查询)
- (course_id, status)(课程+状态查询)
- (status, end_time)(状态+到期时间查询)
注意事项
- 财务精度: 价格相关字段使用decimal类型,避免浮点数精度问题
- 课时逻辑: used_class_hour不能超过total_class_hour
- 时间逻辑: start_time不能晚于end_time
- 合同编号: contract_no需要保证全局唯一性
- 状态流转: 合同状态变更需要记录操作日志
- 软删除: 使用deleted_at字段实现软删除,保护历史数据
- 课时扣减: 课时消耗需要原子性操作,避免并发问题
- 合同变更: 重要字段变更需要审核流程
- 到期提醒: 需要定时任务检查合同到期情况
- 数据一致性: 合同删除时需要处理相关的课时、付款等数据
- 权限控制: 不同角色对合同的操作权限不同
- 审计追踪: 重要操作需要记录操作人和操作时间