负责的功能

 

课程模块

 

主要包括老师的课程和学生的课程管理,因为数据库有老师和学生的数据

老师需要安排学生上课

所以会有一个课程表,可能会问到数据库表是怎么设计的,简单列一下主要的字段

 

课程表(从开发的角度来看,课程表不应该跟老师、班级、学生绑定,仅仅属于一个单独的表,不受老师、班级、学生的改变而改变),

 

老师表(一般不会问到,就是一些老师的基本信息)

 

学生表(一般不会问到学生的基本信息)

 

班级表(一般不会问到)

 

课程表:

课程id
课程名称
课程的价格
录入的时间
修改的时间
课程的状态(是否下架)

 

老师教学表

主键id
课程id
班级id
教学时间

学生课程表

老师id
班级id
学生id
课程id

 

学生购买课程表

主键id
课程id
渠道:   (可以分为 现金、微信、支付宝、网上购买、或者优惠购买等)可以作为工厂+策略模式 使用的点
金额:  购买课程所需金额
课程使用时间:  用于后面rocketMQ进行消息提醒给老师

 

主要工作:业务

老师教学课程安排的增删改查:

主要是创建老师课程,创建班级,录入学生课程表信息,然后通过多表关联

可以查询出老师自己个人所关联的班级,以及教学的课程

老师点击某个班,通过多表联查可以查询自己班内的学生人数,学生的到课状态,学生课程到期时间等等

 

技术描述:

一、使用多线程,为什么要用到多线程?

因为需要统计的报表数据量大,导出的数据报表的sheet表有多张,而每张sheet都是不同的数据,查询不同的mysql表,如果一个线程去处理,会出现耗时很久的情况,所以使用多线程,每个线程负责处理一个sheet表包含的mysql数据的查询,最后在主线程中将多个sheet导出到excel中

 

二、为什么要用策略模式

 

因为不同的学生购买课程的渠道不同,有些渠道会有价格上的出入,而导出报表的时候需要对不同的渠道的学生进行汇总统计,所以对于这个场景,使用了策略模式,以后,就算再增加一个渠道,我也只是再增加一个策略类来处理,而不会动到业务的主逻辑,大概就是什么对修改关闭对扩展开放之类的,吹一下就行

 

三、因为学生购买的课程是有限时间限制的,对于学生即将到期的课程,老师可以设置一天或者前几天即将到期的学生,通过消息提醒自己,,使用定时任务查询每个即将到期的学生,通过RocketMQ的延时功能提醒老师