智能教育平台后端代码说明
1. 代码文件结构
src/
main/
java/
com/runawaywithbucket/smartlearning/
ai/ # AI相关接口与Feign客户端
body/ # 请求体对象
common/ # 通用类(如状态码、分页等)
config/ # Spring配置类
constants/ # 常量定义
controller/ # 教师/管理员等主控制器
dao/ # 数据访问层
dto/ # 数据传输对象
interceptor/ # 拦截器
model/ # 数据模型
response/ # 响应对象
service/ # 业务接口
service/impl/ # 业务实现
studentController/ # 学生相关控制器
utils/ # 工具类
SmartLearningApplication.java # 启动类
resources/
application.yml # Spring Boot配置
pom.xml # Maven依赖与构建配置
2. 代码模块说明
2.1 模块划分
作业管理模块
- 教师作业管理:作业的创建、删除、查看和统计分析(TeacherHomeworkController)
- 学生作业管理:作业查看、提交和状态查询(StudentHomeworkController)
- 管理员作业管理:全局作业管理、统计和分析(AdminHomeworkController)
学生管理模块
- 教师学生管理:学生列表查看、添加和删除(TeacherStudentController)
- 教师学生关系管理:教师与学生关联关系的管理(TeacherStudentRelationController)
- 学生个人信息管理:学生信息的查看和更新(StudentProfileController)
题目管理模块
- 题目管理:题目的添加、查看和筛选(TeacherQuestionController)
- 题目分析:题目难度、正确率等统计分析(AdminStatisticsController)
AI模块
- 作业批改:自动批改作业(Ai)
- 作业分析:生成作业分析报告(Ai)
- 学习路径:推荐个性化学习路径(StudentAiController)
- 智能对话:学生与AI的交互问答(StudentAiController)
用户与认证模块
- 用户管理:用户注册、登录、密码找回(UserController)
- 用户信息管理:用户信息的查看和更新(UserController)
管理员模块
- 用户管理:用户列表查看、添加和删除(AdminUserController)
- 统计分析:系统级数据统计和分析(AdminStatisticsController)
- 系统管理:系统整体运行状态监控(AdminStatisticsController)
2.2 模块接口
TeacherHomeworkController
教师作业管理控制器,负责处理教师对作业的管理操作,包括作业的创建、删除、查看和统计分析等功能。
getHomeworkList
- 参数:token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:获取作业列表
getHomework
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:获取作业详情
deleteHomework
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:删除作业
endHomework
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:结束作业
addHomework
- 参数:homework(AddHomeWorkBody), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:发布作业
getHomeworkAnalysis
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:获取作业分析
updateHomeworkAnalysis
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:更新作业分析
getHomeworkStudentList
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:获取作业学生列表
gradingStudentHomework
- 参数:studentHomework(StudentHomework), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:批改学生作业
TeacherStudentController
教师学生管理控制器,负责处理教师对学生信息的管理,包括查看学生列表、添加和删除学生等功能。
getStudentList
- 参数:account(String, optional), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:获取学生列表
addStudent
- 参数:studentId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:添加学生
deleteStudent
- 参数:studentId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:删除学生
TeacherQuestionController
教师题目管理控制器,负责处理教师对题目的管理,包括题目的添加、查看和筛选等功能。
getQuestionList
- 参数:page(Integer), pageSize(Integer), stem(String, optional), label(String, optional), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:获取题目列表
addQuestion
- 参数:question(Question), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:添加题目
Ai
AI功能控制器,提供智能化的作业批改、分析和学习路径推荐等功能,支持学生与AI的交互。
correctHomework
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:批改作业
getAnalysis
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:获取作业分析
UserController
用户管理控制器,处理用户的基本操作,包括注册、登录、密码找回和用户信息管理等功能。
register
- 参数:user(User)
- 返回值:Result
- 异常处理:无
- 描述:用户注册
login
- 参数:account(String), password(String)
- 返回值:Result<Map<String, String>>
- 异常处理:无
- 描述:用户登录
forgetPassword
- 参数:account(String), password(String)
- 返回值:Result
- 异常处理:无
- 描述:用户找回密码
deleteUser
- 参数:userId(Integer)
- 返回值:Result
- 异常处理:无
- 描述:删除用户
getUser
- 参数:userId(String, optional), account(String, optional)
- 返回值:Result<Map<String, List>>
- 异常处理:无
- 描述:获取用户信息
updateUser
- 参数:userId(String), account(String, optional), name(String, optional), type(Integer, optional), password(String, optional), token(String)
- 返回值:Result
- 异常处理:无
- 描述:修改用户信息
AdminUserController
管理员用户控制器,负责处理管理员对用户的管理操作,包括用户的添加、删除、更新和查询等功能。
addUser
- 参数:user(User), token(String)
- 返回值:Result
- 异常处理:无权限执行此操作返回403
- 描述:添加用户
deleteUser
- 参数:id(String), token(String)
- 返回值:Result
- 异常处理:无权限执行此操作返回403
- 描述:删除用户
updateUser
- 参数:user(User), token(String)
- 返回值:Result
- 异常处理:无权限执行此操作返回403
- 描述:更新用户
getUser
- 参数:id(String, optional), account(String, optional), token(String)
- 返回值:Result
- 异常处理:无权限执行此操作返回403
- 描述:获取用户信息
getAllUsers
- 参数:token(String)
- 返回值:Result<List>
- 异常处理:无权限执行此操作返回403
- 描述:获取所有用户
StudentHomeworkController
学生作业控制器,处理学生与作业相关的操作,包括查看作业列表、作业详情和提交作业等功能。
getHomeworkList
- 参数:无
- 返回值:Result<List>
- 异常处理:无
- 描述:获取作业列表
getHomeworkDetail
- 参数:homeworkId(String)
- 返回值:Result
- 异常处理:无
- 描述:获取作业详情
submitHomework
- 参数:homework(StudentSubmitHomeworkDTO)
- 返回值:Result
- 异常处理:无
- 描述:提交作业
StudentProfileController
学生个人信息控制器,负责处理学生个人信息的查看和更新操作。
getStudentProfile
- 参数:无
- 返回值:Result
- 异常处理:无
- 描述:获取学生个人信息
updateStudentProfile
- 参数:student(Student)
- 返回值:Result
- 异常处理:无
- 描述:更新学生个人信息
TeacherProfileController
- updateTeacherName
- 参数:newName(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:修改教师姓名
AdminHomeworkController
管理员作业管理控制器,提供管理员对作业的全局管理功能,包括查看所有作业、删除作业、结束作业和统计分析等功能。
getAllHomeworkSubmissions
- 参数:page(Integer), size(Integer), token(String)
- 返回值:Result<List>
- 异常处理:Token验证失败返回未授权访问
- 描述:获取所有教师发布的作业及学生作答情况
deleteHomework
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:删除作业
endHomework
- 参数:homeworkId(String), token(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:结束作业
getHomeworkStatistics
- 参数:homeworkId(String, optional), token(String)
- 返回值:Result<Map<String, Object>>
- 异常处理:Token验证失败返回未授权访问
- 描述:获取作业统计信息
getAllHomeworkStatistics
- 参数:token(String)
- 返回值:Result<List<Map<String, Object>>>
- 异常处理:Token验证失败返回未授权访问
- 描述:获取所有作业的统计信息
TeacherStudentRelationController
教师学生关系管理控制器,负责管理教师与学生之间的关联关系,包括查看关系列表、添加和删除关联等功能。
getTeacherStudentRelations
- 参数:token(String)
- 返回值:Result<List<Map<String, Object>>>
- 异常处理:Token验证失败返回未授权访问
- 描述:获取所有教师及其学生关系
getAllStudents
- 参数:token(String)
- 返回值:Result<List<Map<String, String>>>
- 异常处理:Token验证失败返回未授权访问
- 描述:获取所有学生列表
addStudentToTeacher
- 参数:token(String), addStudentBody(AddStudentBody)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:将学生添加到教师的学生列表中
deleteStudentFromTeacher
- 参数:token(String), studentAccount(String), teacherId(String)
- 返回值:Result
- 异常处理:Token验证失败返回未授权访问
- 描述:从教师的学生列表中删除学生
AdminStatisticsController
管理员统计控制器,提供系统级的统计分析功能,包括作业统计、题目分析、教师学生关系统计和系统概览等功能。
getAllTeacherHomeworks
- 参数:token(String)
- 返回值:Result
- 异常处理:无权限执行此操作
- 描述:获取所有教师的作业列表
getTeacherHomeworks
- 参数:teacherId(String), token(String)
- 返回值:Result
- 异常处理:无权限执行此操作
- 描述:获取指定教师的作业列表
getHomeworkStatistics
- 参数:homeworkId(String), token(String)
- 返回值:Result<Map<String, Object>>
- 异常处理:无权限执行此操作
- 描述:获取作业统计信息
getAllHomeworkStatistics
- 参数:token(String)
- 返回值:Result<List<Map<String, Object>>>
- 异常处理:无权限执行此操作
- 描述:获取所有作业的统计信息
getStudentHomeworkStatistics
- 参数:homeworkId(String), token(String)
- 返回值:Result<Map<String, Object>>
- 异常处理:无权限执行此操作
- 描述:获取学生作业完成情况统计
getQuestionAnalysis
- 参数:label(String, optional), token(String)
- 返回值:Result<Map<String, Object>>
- 异常处理:无权限执行此操作
- 描述:获取题目分析统计
getTeacherStudentStatistics
- 参数:token(String)
- 返回值:Result<Map<String, Object>>
- 异常处理:无权限执行此操作
- 描述:获取教师-学生关系统计
getSystemOverview
- 参数:token(String)
- 返回值:Result<Map<String, Object>>
- 异常处理:无权限执行此操作
- 描述:获取系统总体统计信息
StudentAiController
学生AI交互控制器,提供学生与AI系统的交互功能,包括创建对话、提问、查看对话历史、获取学习路径和作业分析等功能。
newDialog
- 参数:无
- 返回值:Result<Map<String, String>>
- 异常处理:无
- 描述:创建新的对话
askQuestion
- 参数:dialogId(String), questionContent(String)
- 返回值:Result<Map<String, String>>
- 异常处理:无
- 描述:提问并获取回答
getDialogList
- 参数:无
- 返回值:Result<List>
- 异常处理:无
- 描述:获取对话列表
getDialogDetail
- 参数:dialogId(String)
- 返回值:Result
- 异常处理:无
- 描述:获取对话详情
getStudyPath
- 参数:prompt(String)
- 返回值:Result<List>
- 异常处理:无
- 描述:获取学习路径
getAnalysis
- 参数:studentHomeworkId(String)
- 返回值:Result<Map<String, String>>
- 异常处理:无
- 描述:生成作业分析
2.3 模块内部逻辑
作业管理模块
- 主要类:
TeacherHomeworkController
,TeacherHomeworkService
,TeacherHomeworkServiceImpl
,StudentHomeworkService
,StudentHomeworkServiceImpl
- 主要服务接口与实现:
TeacherHomeworkService
/TeacherHomeworkServiceImpl
:负责教师作业的增删查改、作业分析、学生作业列表、批改作业等。getHomeworkList(teacherId)
- 实现逻辑:
- 调用
TeacherDao.findHomeworkByTeacherId(teacherId)
获取教师的所有作业 - 对每个作业,调用
TeacherDao.findStudentHomeworkByHomeworkId(homeworkId)
获取提交情况 - 组装作业列表响应,包含作业基本信息和提交统计
- 返回
HomeWorkListResponse
对象
- 调用
- 实现逻辑:
getHomework(homeworkId)
- 实现逻辑:
- 调用
TeacherDao.findHomeworkById(homeworkId)
获取作业详情 - 调用
TeacherDao.findQuestionById(questionId)
获取作业包含的题目信息 - 组装
HomeworkDetail
对象,包含作业基本信息和题目列表 - 返回作业详情
- 调用
- 实现逻辑:
addHomework(AddHomeWorkBody)
- 实现逻辑:
- 验证教师身份和权限
- 创建新的
Homework
对象,设置基本信息 - 调用
TeacherDao.saveHomework(homework)
保存作业 - 遍历题目列表,创建
HomeworkQuestion
关联 - 返回成功响应
- 实现逻辑:
deleteHomework(id)
- 实现逻辑:
- 验证教师身份和权限
- 调用
TeacherDao.findStudentHomeworkByHomeworkId(id)
检查是否有学生提交 - 如果有提交,返回错误响应
- 调用
TeacherDao.deleteHomework(id)
删除作业 - 返回成功响应
- 实现逻辑:
endHomework(homeworkId)
- 实现逻辑:
- 验证教师身份和权限
- 调用
TeacherDao.findHomeworkById(homeworkId)
获取作业信息 - 更新作业状态为已结束
- 调用
TeacherDao.findStudentHomeworkByHomeworkId(homeworkId)
获取所有学生作业 - 对每个未批改的作业,调用AI服务进行自动批改
- 更新学生作业状态和分数
- 返回成功响应
- 实现逻辑:
getHomeworkAnalysis(homeworkId, isUpdate)
- 实现逻辑:
- 获取作业详情
- 检查是否已有分析结果且不需要更新
- 获取学生提交的作业
- 准备AI分析请求
- 调用AI服务进行分析
- 更新作业分析结果
- 返回作业分析结果
- 实现逻辑:
getHomeworkStudentList(homeworkId)
- 实现逻辑:
- 验证教师身份和权限
- 调用
TeacherDao.findStudentHomeworkByHomeworkId(homeworkId)
获取所有学生作业 - 对每个学生作业:
- 获取学生基本信息
- 计算得分和完成情况
- 返回
TeacherHomeworkStudentResponse
对象
- 实现逻辑:
gradingStudentHomework(StudentHomework)
- 实现逻辑:
- 验证教师身份和权限
- 验证作业状态是否允许批改
- 计算作业得分
- 更新学生作业状态和分数
- 返回成功响应
- 实现逻辑:
StudentHomeworkService
/StudentHomeworkServiceImpl
:负责学生端作业列表、详情、提交。getStudentHomeworkPreviewList(studentId)
- 实现逻辑:
- 调用
StudentDao.findHomeworkByStudentId(studentId)
获取学生的所有作业 - 对每个作业:
- 获取作业基本信息
- 获取提交状态和得分
- 返回
List<StudentHomeworkPreviewDTO>
- 调用
- 实现逻辑:
getStudentHomeworkDetail(homeworkId)
- 实现逻辑:
- 调用
StudentDao.findHomeworkById(homeworkId)
获取作业详情 - 调用
StudentDao.findStudentHomework(homeworkId, studentId)
获取学生提交情况 - 获取作业包含的题目信息
- 组装
StudentHomeworkDetailDTO
对象 - 返回作业详情
- 调用
- 实现逻辑:
submitHomework(StudentSubmitHomeworkDTO)
- 实现逻辑:
- 验证作业状态是否允许提交
- 创建或更新
StudentHomework
对象 - 保存学生答案
- 更新提交状态和时间
- 返回成功响应
- 实现逻辑:
学生管理模块
- 主要类:
TeacherStudentController
,TeacherStudentService
,TeacherStudentServiceImpl
- 主要服务接口与实现:
TeacherStudentService
/TeacherStudentServiceImpl
:负责教师与学生的关联管理。getStudentList(teacherId)
- 实现逻辑:
- 调用
TeacherDao.findStudentsByTeacherId(teacherId)
获取教师的学生列表 - 对每个学生:
- 获取基本信息
- 获取作业完成情况统计
- 返回
UserListResponse
对象
- 调用
- 实现逻辑:
addStudent(studentId, teacherId)
- 实现逻辑:
- 验证教师身份和权限
- 检查学生是否已存在
- 创建
TeacherStudentRelation
对象 - 保存关联关系
- 返回成功响应
- 实现逻辑:
deleteStudent(studentId, teacherId)
- 实现逻辑:
- 验证教师身份和权限
- 检查关联关系是否存在
- 删除
TeacherStudentRelation
记录 - 返回成功响应
- 实现逻辑:
题目管理模块
- 主要类:
TeacherQuestionController
,TeacherQuestionService
,TeacherQuestionServiceImpl
- 主要服务接口与实现:
TeacherQuestionService
/TeacherQuestionServiceImpl
:负责题目的增查。getQuestionList(page, pageSize, stem, label)
- 实现逻辑:
- 构建查询条件
- 调用
TeacherDao.findQuestions(conditions)
获取题目列表 - 分页处理
- 返回
QuestionListResponse
对象
- 实现逻辑:
addQuestion(Question)
- 实现逻辑:
- 验证教师身份和权限
- 验证题目信息完整性
- 保存题目信息
- 返回成功响应
- 实现逻辑:
AI模块
- 主要类:
StudentAiController
,StudentAiService
,StudentAiServiceImpl
,Ai
- 主要服务接口与实现:
StudentAiService
/StudentAiServiceImpl
:负责学生AI对话、作业分析、学习路径。addNewDialog(studentId)
- 实现逻辑:
- 创建新的
Dialog
对象 - 设置初始状态和创建时间
- 保存对话记录
- 返回对话ID
- 创建新的
- 实现逻辑:
askQuestionAndGetAnswer(dialogId, questionContent)
- 实现逻辑:
- 验证对话是否存在
- 调用AI服务生成回答
- 保存问答记录
- 返回AI回答
- 实现逻辑:
getDialogPreviewList(studentId)
- 实现逻辑:
- 调用
StudentDao.findDialogsByStudentId(studentId)
获取对话列表 - 对每个对话:
- 获取最后一条消息
- 计算未读消息数
- 返回
List<DialogPreviewDTO>
- 调用
- 实现逻辑:
getDialogDetail(dialogId)
- 实现逻辑:
- 验证对话权限
- 获取对话所有消息
- 更新未读状态
- 返回
DialogDetailDTO
- 实现逻辑:
getAnalysis(studentHomeworkId)
- 实现逻辑:
- 获取学生作业信息
- 调用AI服务分析作业
- 生成分析报告
- 返回分析结果
- 实现逻辑:
getStudyPath(prompt)
- 实现逻辑:
- 解析学习目标
- 调用AI服务生成学习路径
- 构建学习节点树
- 返回
List<StudyPathNodeDTO>
- 实现逻辑:
用户与认证模块
- 主要类:
UserController
,UserService
,UserServiceImpl
- 主要服务接口与实现:
UserService
/UserServiceImpl
:用户注册、登录、找回密码、信息管理。register(User)
- 实现逻辑:
- 验证用户信息完整性
- 检查账号是否已存在
- 加密密码
- 保存用户信息
- 返回成功响应
- 实现逻辑:
login(account, password)
- 实现逻辑:
- 验证账号密码
- 生成JWT token
- 更新登录时间
- 返回token和用户信息
- 实现逻辑:
forgetPassword(account, password)
- 实现逻辑:
- 验证账号存在性
- 加密新密码
- 更新密码
- 返回成功响应
- 实现逻辑:
deleteUser(userId)
- 实现逻辑:
- 验证用户存在性
- 删除用户相关数据
- 删除用户记录
- 返回成功响应
- 实现逻辑:
getUser(userId, account)
- 实现逻辑:
- 根据条件查询用户
- 获取用户详细信息
- 返回用户信息
- 实现逻辑:
updateUser(...)
- 实现逻辑:
- 验证用户存在性
- 更新用户信息
- 返回成功响应
- 实现逻辑:
getAllUsers()
- 实现逻辑:
- 获取所有用户列表
- 过滤敏感信息
- 返回用户列表
- 实现逻辑:
管理员模块
- 主要类:
AdminUserController
,AdminUserService
,AdminUserServiceImpl
,AdminStatisticsService
,AdminStatisticsServiceImpl
- 主要服务接口与实现:
AdminUserService
/AdminUserServiceImpl
:负责管理员对用户的管理。addUser(User)
- 实现逻辑:
- 验证管理员权限
- 验证用户信息完整性
- 检查账号唯一性
- 加密密码
- 保存用户信息
- 返回成功响应
- 实现逻辑:
deleteUser(id)
- 实现逻辑:
- 验证管理员权限
- 检查用户存在性
- 删除用户相关数据
- 删除用户记录
- 返回成功响应
- 实现逻辑:
updateUser(User)
- 实现逻辑:
- 验证管理员权限
- 检查用户存在性
- 更新用户信息
- 返回成功响应
- 实现逻辑:
getUser(id, account)
- 实现逻辑:
- 验证管理员权限
- 根据条件查询用户
- 返回用户详细信息
- 实现逻辑:
getAllUsers()
- 实现逻辑:
- 验证管理员权限
- 获取所有用户列表
- 返回用户信息列表
- 实现逻辑:
AdminStatisticsService
/AdminStatisticsServiceImpl
:负责系统级统计分析。getAllTeacherHomeworks()
- 实现逻辑:
- 验证管理员权限
- 获取所有教师作业
- 统计作业完成情况
- 返回作业统计信息
- 实现逻辑:
getTeacherHomeworks(teacherId)
- 实现逻辑:
- 验证管理员权限
- 获取指定教师作业
- 统计作业完成情况
- 返回作业统计信息
- 实现逻辑:
getHomeworkStatistics(homeworkId)
- 实现逻辑:
- 验证管理员权限
- 获取作业详细信息
- 统计学生完成情况
- 计算平均分和通过率
- 返回统计信息
- 实现逻辑:
getAllHomeworkStatistics()
- 实现逻辑:
- 验证管理员权限
- 获取所有作业
- 统计每个作业的完成情况
- 返回统计信息列表
- 实现逻辑:
getStudentHomeworkStatistics(homeworkId)
- 实现逻辑:
- 验证管理员权限
- 获取作业学生列表
- 统计每个学生的完成情况
- 返回统计信息
- 实现逻辑:
getQuestionAnalysis(label)
- 实现逻辑:
- 验证管理员权限
- 获取题目列表
- 统计题目难度和正确率
- 返回分析结果
- 实现逻辑:
getTeacherStudentStatistics()
- 实现逻辑:
- 验证管理员权限
- 获取教师学生关系
- 统计每个教师的学生数量
- 返回统计信息
- 实现逻辑:
getSystemOverview()
- 实现逻辑:
- 验证管理员权限
- 统计用户数量
- 统计作业数量
- 统计题目数量
- 计算系统使用率
- 返回系统概览
- 实现逻辑:
教师个人资料模块
- 主要类:
TeacherProfileController
,TeacherProfileService
,TeacherProfileServiceImpl
- 主要服务接口与实现:
TeacherProfileService
/TeacherProfileServiceImpl
:负责教师个人资料管理。updateTeacherName(teacherId, newName)
- 实现逻辑:
- 验证教师身份
- 检查新名字有效性
- 更新教师姓名
- 返回成功响应
- 实现逻辑:
getTeacherProfile(teacherId)
- 实现逻辑:
- 验证教师身份
- 获取教师基本信息
- 获取教师统计信息
- 返回教师资料
- 实现逻辑:
学生个人资料模块
- 主要类:
StudentProfileController
,StudentProfileService
,StudentProfileServiceImpl
- 主要服务接口与实现:
StudentProfileService
/StudentProfileServiceImpl
:负责学生个人资料管理。getStudentProfile(studentId)
- 实现逻辑:
- 验证学生身份
- 获取学生基本信息
- 获取学习统计信息
- 返回学生资料
- 实现逻辑:
updateStudentProfile(Student)
- 实现逻辑:
- 验证学生身份
- 验证更新信息有效性
- 更新学生信息
- 返回成功响应
- 实现逻辑:
教师学生关系模块
- 主要类:
TeacherStudentRelationController
,TeacherStudentService
,TeacherStudentServiceImpl
- 主要服务接口与实现:
TeacherStudentService
/TeacherStudentServiceImpl
:负责教师学生关系管理。getTeacherStudentRelations(teacherId)
- 实现逻辑:
- 验证教师身份
- 获取教师的学生列表
- 获取每个学生的基本信息
- 返回关系列表
- 实现逻辑:
getAllStudents()
- 实现逻辑:
- 验证教师身份
- 获取所有学生列表
- 过滤已关联的学生
- 返回可用学生列表
- 实现逻辑:
addStudentToTeacher(teacherId, studentId)
- 实现逻辑:
- 验证教师身份
- 检查学生是否存在
- 检查是否已关联
- 创建关联关系
- 返回成功响应
- 实现逻辑:
deleteStudentFromTeacher(teacherId, studentId)
- 实现逻辑:
- 验证教师身份
- 检查关联关系是否存在
- 删除关联关系
- 返回成功响应
- 实现逻辑:
3. 关键代码片段
3.1 核心算法
作业分析算法 (getHomeworkAnalysis)
// TeacherHomeworkServiceImpl.java
public Result<String> getHomeworkAnalysis(String homeworkId, Boolean isUpdate) {
try {
// 1. 获取作业详情
Result<List<HomeworkDetail>> homeworkResult = teacherDao.getHomeworkById(homeworkId);
if (homeworkResult.getCode() != Code.CODE_SUCCESS || homeworkResult.getData() == null || homeworkResult.getData().isEmpty()) {
return Result.fail(Code.CODE_PARAM_ERROR, "作业不存在");
}
HomeworkDetail homework = homeworkResult.getData().get(0);
// 2. 如果作业已经有分析结果且不需要更新,直接返回
if (!isUpdate && homework.getAnalysis() != null && !homework.getAnalysis().trim().isEmpty()) {
return Result.success(homework.getAnalysis());
}
// 3. 获取学生作业列表
Result<List<StudentHomework>> studentHomeworkResult = teacherDao.getStudentHomework(homeworkId);
if (studentHomeworkResult.getCode() != Code.CODE_SUCCESS || studentHomeworkResult.getData() == null) {
return Result.fail(Code.CODE_SERVER_ERROR, "获取学生作业失败");
}
List<StudentHomework> studentHomeworks = studentHomeworkResult.getData();
if (studentHomeworks.isEmpty()) {
return Result.fail(Code.CODE_PARAM_ERROR, "没有学生提交作业");
}
// 4. 准备AI分析请求数据
HomeworkAnalysisBody request = new HomeworkAnalysisBody();
// 4.1 设置作业信息
HomeworkAnalysisBody.Homework homeworkInfo = new HomeworkAnalysisBody.Homework();
homeworkInfo.setQuestions(homework.getQuestions());
// 4.2 转换统计信息
HomeworkAnalysisBody.Statistics aiStatistics = new HomeworkAnalysisBody.Statistics();
aiStatistics.setAverage(homework.getStatistics().getAverage());
aiStatistics.setMostIncorrects(homework.getStatistics().getMostIncorrects());
homeworkInfo.setStatistics(aiStatistics);
request.setHomework(homeworkInfo);
// 4.3 设置学生作业信息
List<HomeworkAnalysisBody.StudentHomework> studentHomeworkList = studentHomeworks.stream()
.map(hw -> {
HomeworkAnalysisBody.StudentHomework sh = new HomeworkAnalysisBody.StudentHomework();
sh.setScores(hw.getScores().stream()
.map(Double::parseDouble)
.collect(Collectors.toList()));
sh.setAnswers(hw.getAnswers());
return sh;
})
.collect(Collectors.toList());
request.setStudentHomeworks(studentHomeworkList);
// 5. 调用AI服务进行作业分析
Result<Ai.HomeworkAnalysisResponse> analysisResult = aiService.homeworkAnalysis(request);
if (analysisResult.getCode() != Code.CODE_SUCCESS) {
return Result.fail(analysisResult.getCode(), analysisResult.getMessage());
}
// 6. 更新作业分析
homework.setAnalysis(analysisResult.getData().getAnalysis());
Homework homework1 = new Homework();
homework1.setId(homework.getId());
homework1.setTeacherId(homework.getTeacherId());
homework1.setDate(homework.getDate());
homework1.setStatus(homework.getStatus());
homework1.setQuestions(homework.getQuestions().stream()
.map(Question::getId)
.collect(Collectors.toList()));
homework1.setAnalysis(analysisResult.getData().getAnalysis());
homework1.setStatistics(homework.getStatistics());
// 7. 更新作业
Result<Void> updateResult = teacherDao.updateHomeworkStatus(homework1);
if (updateResult.getCode() != Code.CODE_SUCCESS) {
return Result.fail(updateResult.getCode(), updateResult.getMessage());
}
return Result.success(analysisResult.getData().getAnalysis());
} catch (Exception e) {
log.error("获取作业分析失败", e);
return Result.fail(Code.CODE_SERVER_ERROR, "获取作业分析失败");
}
}
AI对话分析算法 (getAnalysis)
// StudentAiServiceImpl.java
public String getAnalysis(String studentHomeworkId) {
// 1. 获取学生作业详情
StudentHomeworkDetailDTO studentHomeworkDetail = studentHomeworkService.getStudentHomeworkDetail(studentHomeworkId);
// 2. 准备分析请求数据
StudentHomeworkForAnalysisDTO studentHomeworkForAnalysis = new StudentHomeworkForAnalysisDTO(
studentHomeworkDetail.getScores(),
studentHomeworkDetail.getAnswers(),
studentHomeworkDetail.getHomeworkContent().getQuestions()
);
// 3. 调用AI服务进行分析
Result<Map<String, String>> result = studentAiFeign.getHomeworkAnalysis(studentHomeworkForAnalysis);
if(result.getCode() != ResponseConstants.SUCCESS) {
throw new RuntimeException("获取作业分析失败");
}
// 4. 获取分析结果
String analysis = result.getData().get("analysis");
// 5. 更新作业分析
studentHomeworkDao.updateHomework(Map.of(
"id", studentHomeworkId,
"analysis", analysis
));
return analysis;
}
学习路径生成算法 (getStudyPath)
// StudentAiServiceImpl.java
public List<StudyPathNodeDTO> getStudyPath(String prompt) {
// 1. 调用AI服务生成学习路径
Result<List<StudyPathNodeDTO>> studyPathResult = studentAiFeign.getStudyPath(prompt);
if(studyPathResult.getCode() != ResponseConstants.SUCCESS) {
throw new RuntimeException("获取学习路径失败");
}
return studyPathResult.getData();
}
3.2 复杂逻辑
系统统计分析流程
// AdminStatisticsServiceImpl.java
public Result<Map<String, Object>> getSystemOverview() {
Map<String, Object> overview = new HashMap<>();
// 1. 用户统计
Result<UserListResponse> userResult = userDao.getUserList();
if (userResult != null && userResult.getData() != null) {
List<User> users = userResult.getData().getUserList();
Map<Integer, Integer> userTypeCount = new HashMap<>();
int totalUsers = 0;
for (User user : users) {
userTypeCount.merge(user.getType(), 1, Integer::sum);
totalUsers++;
}
Map<String, Object> userStats = new HashMap<>();
userStats.put("total", totalUsers);
userStats.put("typeDistribution", userTypeCount);
overview.put("userStatistics", userStats);
}
// 2. 教学统计
Map<String, Object> teachingStats = new HashMap<>();
int teacherCount = 0;
int studentCount = 0;
if (userResult != null && userResult.getData() != null) {
for (User user : userResult.getData().getUserList()) {
if (user.getType() == 2) { // 教师
teacherCount++;
} else if (user.getType() == 1) { // 学生
studentCount++;
}
}
}
teachingStats.put("teacherCount", teacherCount);
teachingStats.put("studentCount", studentCount);
teachingStats.put("teacherStudentRatio", teacherCount > 0 ? (double)studentCount/teacherCount : 0);
overview.put("teachingStatistics", teachingStats);
// 3. 作业统计
Map<String, Object> homeworkStats = getHomeworkOverview().getData();
if (homeworkStats != null) {
overview.put("homeworkStatistics", homeworkStats);
}
return Result.success(overview);
}
4. 其他代码模块
4.1 AI模块 (ai)
- StudentAiFeign.java:AI服务调用接口
- Ai.java:AI功能基础类
4.2 请求体模块 (body)
- AddHomeWorkBody.java:添加作业请求体
- AddStudentBody.java:添加学生请求体
- GetStudentHomeworksBody.java:获取学生作业请求体
- HomeworkAnalysisBody.java:作业分析请求体
4.3 公共模块 (common)
- Code.java:系统状态码定义
- DateRange.java:日期范围工具类
- Pagination.java:分页工具类
4.4 配置模块 (config)
- WebConfiguration.java:Web配置类,处理跨域等配置
4.5 常量模块 (constants)
- ResponseConstants.java:响应常量定义
- UserConstants.java:用户相关常量定义
4.6 数据访问模块 (dao)
- StudentDao.java:学生数据访问接口
- StudentHomeworkDao.java:学生作业数据访问接口
- TeacherDao.java:教师数据访问接口
- UserDao.java:用户数据访问接口
4.7 数据传输模块 (dto)
- DialogDetailDTO.java:对话详情传输对象
- DialogPreviewDTO.java:对话预览传输对象
- StudentDTO.java:学生信息传输对象
- StudentHomeworkDetailDTO.java:学生作业详情传输对象
- StudentHomeworkForAnalysisDTO.java:作业分析传输对象
- StudentHomeworkPreviewDTO.java:作业预览传输对象
- StudentSubmitHomeworkDTO.java:作业提交传输对象
- StudyPathNodeDTO.java:学习路径节点传输对象
- UserDTO.java:用户信息传输对象
4.8 拦截器模块 (interceptor)
- StudentInterceptor.java:学生请求拦截器,处理权限验证
4.9 数据模型模块 (model)
- Homework.java:作业实体类
- HomeworkDetail.java:作业详情实体类
- Question.java:题目实体类
- Student.java:学生实体类
- StudentHomework.java:学生作业实体类
- StudentHomeworkDetail.java:学生作业详情实体类
- StudentHomeworkList.java:学生作业列表实体类
- Teacher.java:教师实体类
- User.java:用户实体类
4.10 响应模块 (response)
- HomeWorkListResponse.java:作业列表响应类
- QuestionListResponse.java:题目列表响应类
- StudentListResponse.java:学生列表响应类
- TeacherHomeworkStudentResponse.java:教师作业学生响应类
- UserListResponse.java:用户列表响应类
4.11 工具模块 (utils)
- HttpClientUtil.java:HTTP客户端工具类
- JWTUtil.java:JWT工具类
- PasswordUtil.java:密码工具类
- Result.java:统一响应结果工具类
- ThreadLocalUtil.java:线程本地变量工具类
5. 项目依赖
5.1 核心依赖
- Spring Boot 3.2.3
- spring-boot-starter-web:Web应用开发
- spring-boot-starter-actuator:应用监控
- spring-boot-devtools:开发工具
- spring-boot-configuration-processor:配置处理
- spring-boot-starter-test:测试框架
5.2 微服务相关
- Spring Cloud 2023.0.0
- spring-cloud-starter-openfeign:服务调用
5.3 安全认证
- JWT相关
- jjwt-api:JWT核心API
- jjwt-impl:JWT实现
- jjwt-jackson:JWT Jackson支持
5.4 开发工具
- Lombok:简化Java代码
- SLF4J 2.0.0:日志门面
- Logback 1.4.7:日志实现
5.5 构建工具
- Maven
- maven-compiler-plugin 3.11.0:Java编译
- spring-boot-maven-plugin:Spring Boot打包
5.6 环境要求
- Java 17
- Maven 3.x