Tlias智能学习辅助系统
数据准备
在数据库中,创建学生表 clazz , student,SQL如下:
|
|
表结构关系说明:

实体类Clazz:
|
|
实体类Student:
|
|
需求:班级管理
需要开发如下几个接口,且开发的时候建议按照如下顺序开发 :
条件分页查询接口
地址:接口文档 - 飞书云文档
参照接口文档 班级管理 -> 班级列表查询

注意:班级状态,显示为:未开班、已结课、在读中 这三种。
如果:
- 当前时间 > 结课时间:状态未 已结课。
- 当前时间 < 开课时间:状态未 未开班。
- 否则,就是 在读中。
1).准备Clazz表对应的基础结构,包括Controller、Server、Mapper:
ClazzController:
|
|
ClazzService:
|
|
ClazzServiceImpl:
|
|
ClazzMapper:
|
|
将对应的查询语句写在映射文件中
ClazzMapper.xml:
|
|
XML 常用的转义字符:
<:<
>::>
&::&
"e;:"
':'
功能测试

前后端联调测试

(此处页面展示不同是因为前面代码写错了,没有将班主任和状态展示出来,这是修改以后的图,下面几张是修改前的图)
查询所有员工接口
那其实,对于培训机构来说,班主任就是这个企业的员工。所以,班主任下拉列表中展示的就是所有的员工数据。
地址:接口文档 - 飞书云文档
参照接口文档 员工管理 -> 查询全部员工

EmpController:
|
|
EmpService:
|
|
EmpServiceImpl:
|
|
EmpMapper:
|
|
EmpMapper.xml:
|
|
功能测试

前后端联调测试

新增班级信息接口
参照接口文档 班级管理 -> 添加班级

功能测试

前后端联调测试


根据ID查询班级接口
参照接口文档 班级管理 -> 根据ID查询
ClazzController:
|
|
ClazzService:
|
|
ClazzServiceImpl:
|
|
ClazzMapper:
|
|
ClazzMapper.xml:
|
|
功能测试

前后端联调测试
选择与我们刚刚查询id相同的班级信息,点击编辑,发现班级的信息都展示出来了

修改班级信息接口
参照接口文档 班级管理 -> 修改班级
ClazzController:
|
|
ClazzService:
|
|
ClazzServiceImpl:
|
|
ClazzMapper:
|
|
功能测试

前后端联调测试
修改前:

修改后:


删除班级信息接口
参照接口文档 班级管理 -> 删除班级
ClazzController:
|
|
ClazzService:
|
|
ClazzServiceImpl:
|
|
ClazzMapper:
|
|
ClazzMapper.xml:
|
|
自定义异常处理器:ClassHasStudentsException
|
|
全局异常处理器:GlobalExceptionHandler
|
|
功能测试

前后端联调测试
删除无学生班级:

删除有学生班级:

需求:学员管理
由于该部分为学习了后面知识后回来补充的,而后面有些功能会影响到这个部分的测试(如测试时无Token令牌会导致报错,测试起来比较麻烦),所以该部分就不进行前后端联调测试了,仅为完成功能实现
需要开发如下几个接口,建议按照如下顺序开发接口:
查询所有班级接口
地址:接口文档 - 飞书云文档
参照接口文档 班级管理 -> 查询所有班级
在新增学员的时候,要展示出所有的班级信息。
ClazzController:新增 @GetMapping("/list") 端点,返回所有班级
|
|
ClazzService:新增 List
|
|
ClazzServiceImpl:
|
|
由于ClazzMapper.findall() 已经存在(@Select(“select * from clazz;")),所以 Mapper 层无需改动。

条件分页查询接口
接口描述:


在pojo层创建StudentQueryParam.java :
|
|
在mapper层创建StudentMapper.java
|
|
在resource目录下的mapper层创建StudentMapper.xml ,基于动态SQL,通过left join clazz 表获取班级名称
|
|
在service层创建StudentService.java :
|
|
在service层创建StudentServiceImpl.java :
|
|
在controller层创建StudentController.java
|
|

新增学生信息接口
接口文档:


StudentController:
|
|
StudentService:
|
|
StudentServiceImpl:
|
|
StudentMapper:
|
|


根据ID查询学生接口
接口文档:


StudentController:
|
|
StudentService:
|
|
StudentServiceImpl:
|
|
StudentMapper.java:
|
|
StudentMapper.xml:
|
|

修改学生信息接口
接口文档:


StudentController:
|
|
StudentService:
|
|
StudentServiceImpl:
|
|
StudentMapper:
|
|
修改前:

修改后:

删除学生信息接口
接口文档:

StudentController:
|
|
StudentService:
|
|
StudentServiceImpl:
|
|
StudentMapper:
|
|
删除前:

删除后:

违纪处理接口
接口文档:

违纪处理一次,需要将违纪次数+1,违纪扣分+前端输入的分数。
StudentController:
|
|
StudentService:
|
|
StudentServiceImpl:
|
|
StudentMapper:
|
|


再添加一次违纪记录,分值为1分

到此,关于学生管理的增删改查功能,我们就已经全部实现了。
需求:学员信息统计
需要开发如下几个接口:
- 班级人数统计接口开发:参照接口文档 数据统计 -> 班级人数统计
- 学员学历信息统计接口开发:参照接口文档 数据统计 -> 学员学历统计
班级人数统计接口:

ClazzOption:
|
|
ReportController:
|
|
ReportService:
|
|
ReportServiceImpl:
|
|
StudentMapper.java:
|
|
StudentMapper.xml:
|
|
结果与学历统计一起放在下面了
学员学历信息统计接口:
ReportController:
|
|
ReportService:
|
|
ReportServiceImpl:
|
|
StudentMapper.java:
|
|
StudentMapper.xml:
|
|

需求:功能完善
- 删除部门时:如果部门下有员工,则不允许删除该部门,并给前端提示错误信息:对不起,当前部门下有员工,不能直接删除!
DeptHasEmployeesException.java:新建,RuntimeException,提示消息:“对不起,当前部门下有员工,不能直接删除!”
|
|
GlobalExceptionHandler.java:新增 handleDeptHasEmployeesException() 处理器
|
|
DeptMapper.java:新增 countEmployeesByDeptId(Integer deptId)
|
|
DeptServiceImpl.java:deleteById() 中新增检查逻辑
|
|
