3.9 统计

菜单的统计,点击进去后计算各章节的练习题得分情况。

修改前端bug,在codessp_front/src/Statistic.vue,第70行
改成:
                :max="chapter.score"

前端以post方式发送username(用户名)和courseId(章节id)或者chapterId(章节id)到chapterStudy,后台根据这两个值查询chapter_study表并返回,json如下:
data返回了两个数组,第一个是各章节学习情况,第二个是章节信息。

特别注意
如果chapterId为-1,那么使用courseId在chapter表查询所有code为0000结尾的章节的id(0000结尾的表示是第一章、第二章这种,不包括1.2,2.3这类子章节)
如果chapterId不为-1,那么使用chapterId查询此章节,以及它的所有子章节
只涉及chapterStudy和chapters两个请求

一. 各章节学习情况:
各章节学习情况ChapterStudy:
如果chapterId为-1,那么使用courseId在chapter表查询所有code为0000结尾的章节的id(0000结尾的表示是第一章、第二章这种,不包括1.2,2.3这类子章节)
具体SQL怎么写可问AI工具。

如果chapterId不为-1,那么使用chapterId查询此章节,以及它的所有子章节。具体分两步:
1.根据id查询章节
2.根据课程id以及父章节码parentCode查询子章节。下面的chapter数据,它们的parentCode都是040000,说明都是第四章下面的子章节,如下表所示:
3.然后组合1和2查询到的章节,返回,可使用List的add和addAll函数

二. 章节信息:
根据courseId(章节id)以及chapterId(章节id,如果为-1表示查询所有章节)查询章节信息,需要和上面查询的章节id一致。
下面是chapter表的字段
1.code、id、name、parent_code、score直接从数据库取出
2.serial数据库里并没有,而是通过code计算出来的,例如010000就是第一章,010100就是1.1

三.下拉菜单的章节信息
chapterStudy的请求正常响应后,前端会以post方式发送courseId(章节id)到chapters,返回的json和上面的chapter一样,但是需要查找此课程的所有大小章节:
和上面的区别在于,上面的章节信息要根据章节id查询,它有可能是第一章的id(根据点击或者下拉查询),然后得到第一章的章节信息信息,而这里的章节信息是所有章节。

如果没有serial的值,那么下拉菜单就不会显示第几章第几节。