3.9 统计
第 29 节 / 共 46 节
课程:ThinkPHP
菜单的统计,点击进去后计算各章节的练习题得分情况。
前端以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的值,那么下拉菜单就不会显示第几章第几节。
《ThinkPHP》课程目录
介绍PHP框架ThinkPHP6
- 第1章 配置环境
- 1.1 第一个ThinkPHP8项目
- 1.2 Composer项目结构介绍
- 1.3 启动项目
- 1.4 ThinkPHP8项目的部署
- 1.5 idea教育版免费一年获取办法
- 第2章 基本特性
- 2.1 响应HTTP请求
- 2.2 响应html
- 2.3 登录-前端
- 2.4 登录-后台
- 2.5 数据库基本操作
- 2.6 模型支持
- 2.7 登录状态和session
- 2.8 注册
- 2.9 主页文章列表
- 2.10 单篇文章内容
- 2.11 完善文章页面
- 2.12 文件上传
- 第3章 实训
- 3.1 项目准备
- 3.2 登录
- 3.3 数据库登录和json规范返回
- 3.4 注册
- 3.5 查询课程
- 3.6 个人信息
- 3.7 修改昵称
- 3.8 *主页信息
- 3.9 统计
- 3.10 学习-侧边导航
- 3.11 *学习-右边内容
- 3.12 管理-课程
- 3.13 管理-班级
- 3.14 管理-班级-学生换班
- 3.15 管理-班级-查找学生
- 第4章 git代码管理
- 4.1 建立代码库
- 4.2 代码管理提交、推送和拉取
- 4.3 从云克隆代码
- 第5章 项目重构成spirngboot
- 5.1 项目技术介绍
- 5.2 创建一个ThinkPHP8项目
- 5.4 移入网页和PHP代码
- 5.5 模型和服务
- 5.7 测试
- 第6章 nginx