智能教育平台后端代码说明

发布于:2025-06-12 ⋅ 阅读:(18) ⋅ 点赞:(0)

智能教育平台后端代码说明

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)
        • 实现逻辑:
          1. 调用TeacherDao.findHomeworkByTeacherId(teacherId)获取教师的所有作业
          2. 对每个作业,调用TeacherDao.findStudentHomeworkByHomeworkId(homeworkId)获取提交情况
          3. 组装作业列表响应,包含作业基本信息和提交统计
          4. 返回HomeWorkListResponse对象
      • getHomework(homeworkId)
        • 实现逻辑:
          1. 调用TeacherDao.findHomeworkById(homeworkId)获取作业详情
          2. 调用TeacherDao.findQuestionById(questionId)获取作业包含的题目信息
          3. 组装HomeworkDetail对象,包含作业基本信息和题目列表
          4. 返回作业详情
      • addHomework(AddHomeWorkBody)
        • 实现逻辑:
          1. 验证教师身份和权限
          2. 创建新的Homework对象,设置基本信息
          3. 调用TeacherDao.saveHomework(homework)保存作业
          4. 遍历题目列表,创建HomeworkQuestion关联
          5. 返回成功响应
      • deleteHomework(id)
        • 实现逻辑:
          1. 验证教师身份和权限
          2. 调用TeacherDao.findStudentHomeworkByHomeworkId(id)检查是否有学生提交
          3. 如果有提交,返回错误响应
          4. 调用TeacherDao.deleteHomework(id)删除作业
          5. 返回成功响应
      • endHomework(homeworkId)
        • 实现逻辑:
          1. 验证教师身份和权限
          2. 调用TeacherDao.findHomeworkById(homeworkId)获取作业信息
          3. 更新作业状态为已结束
          4. 调用TeacherDao.findStudentHomeworkByHomeworkId(homeworkId)获取所有学生作业
          5. 对每个未批改的作业,调用AI服务进行自动批改
          6. 更新学生作业状态和分数
          7. 返回成功响应
      • getHomeworkAnalysis(homeworkId, isUpdate)
        • 实现逻辑:
          1. 获取作业详情
          2. 检查是否已有分析结果且不需要更新
          3. 获取学生提交的作业
          4. 准备AI分析请求
          5. 调用AI服务进行分析
          6. 更新作业分析结果
          7. 返回作业分析结果
      • getHomeworkStudentList(homeworkId)
        • 实现逻辑:
          1. 验证教师身份和权限
          2. 调用TeacherDao.findStudentHomeworkByHomeworkId(homeworkId)获取所有学生作业
          3. 对每个学生作业:
            • 获取学生基本信息
            • 计算得分和完成情况
          4. 返回TeacherHomeworkStudentResponse对象
      • gradingStudentHomework(StudentHomework)
        • 实现逻辑:
          1. 验证教师身份和权限
          2. 验证作业状态是否允许批改
          3. 计算作业得分
          4. 更新学生作业状态和分数
          5. 返回成功响应
    • StudentHomeworkService/StudentHomeworkServiceImpl:负责学生端作业列表、详情、提交。

      • getStudentHomeworkPreviewList(studentId)
        • 实现逻辑:
          1. 调用StudentDao.findHomeworkByStudentId(studentId)获取学生的所有作业
          2. 对每个作业:
            • 获取作业基本信息
            • 获取提交状态和得分
          3. 返回List<StudentHomeworkPreviewDTO>
      • getStudentHomeworkDetail(homeworkId)
        • 实现逻辑:
          1. 调用StudentDao.findHomeworkById(homeworkId)获取作业详情
          2. 调用StudentDao.findStudentHomework(homeworkId, studentId)获取学生提交情况
          3. 获取作业包含的题目信息
          4. 组装StudentHomeworkDetailDTO对象
          5. 返回作业详情
      • submitHomework(StudentSubmitHomeworkDTO)
        • 实现逻辑:
          1. 验证作业状态是否允许提交
          2. 创建或更新StudentHomework对象
          3. 保存学生答案
          4. 更新提交状态和时间
          5. 返回成功响应
学生管理模块
  • 主要类TeacherStudentController, TeacherStudentService, TeacherStudentServiceImpl
  • 主要服务接口与实现
    • TeacherStudentService/TeacherStudentServiceImpl:负责教师与学生的关联管理。
      • getStudentList(teacherId)
        • 实现逻辑:
          1. 调用TeacherDao.findStudentsByTeacherId(teacherId)获取教师的学生列表
          2. 对每个学生:
            • 获取基本信息
            • 获取作业完成情况统计
          3. 返回UserListResponse对象
      • addStudent(studentId, teacherId)
        • 实现逻辑:
          1. 验证教师身份和权限
          2. 检查学生是否已存在
          3. 创建TeacherStudentRelation对象
          4. 保存关联关系
          5. 返回成功响应
      • deleteStudent(studentId, teacherId)
        • 实现逻辑:
          1. 验证教师身份和权限
          2. 检查关联关系是否存在
          3. 删除TeacherStudentRelation记录
          4. 返回成功响应
题目管理模块
  • 主要类TeacherQuestionController, TeacherQuestionService, TeacherQuestionServiceImpl
  • 主要服务接口与实现
    • TeacherQuestionService/TeacherQuestionServiceImpl:负责题目的增查。
      • getQuestionList(page, pageSize, stem, label)
        • 实现逻辑:
          1. 构建查询条件
          2. 调用TeacherDao.findQuestions(conditions)获取题目列表
          3. 分页处理
          4. 返回QuestionListResponse对象
      • addQuestion(Question)
        • 实现逻辑:
          1. 验证教师身份和权限
          2. 验证题目信息完整性
          3. 保存题目信息
          4. 返回成功响应
AI模块
  • 主要类StudentAiController, StudentAiService, StudentAiServiceImpl, Ai
  • 主要服务接口与实现
    • StudentAiService/StudentAiServiceImpl:负责学生AI对话、作业分析、学习路径。
      • addNewDialog(studentId)
        • 实现逻辑:
          1. 创建新的Dialog对象
          2. 设置初始状态和创建时间
          3. 保存对话记录
          4. 返回对话ID
      • askQuestionAndGetAnswer(dialogId, questionContent)
        • 实现逻辑:
          1. 验证对话是否存在
          2. 调用AI服务生成回答
          3. 保存问答记录
          4. 返回AI回答
      • getDialogPreviewList(studentId)
        • 实现逻辑:
          1. 调用StudentDao.findDialogsByStudentId(studentId)获取对话列表
          2. 对每个对话:
            • 获取最后一条消息
            • 计算未读消息数
          3. 返回List<DialogPreviewDTO>
      • getDialogDetail(dialogId)
        • 实现逻辑:
          1. 验证对话权限
          2. 获取对话所有消息
          3. 更新未读状态
          4. 返回DialogDetailDTO
      • getAnalysis(studentHomeworkId)
        • 实现逻辑:
          1. 获取学生作业信息
          2. 调用AI服务分析作业
          3. 生成分析报告
          4. 返回分析结果
      • getStudyPath(prompt)
        • 实现逻辑:
          1. 解析学习目标
          2. 调用AI服务生成学习路径
          3. 构建学习节点树
          4. 返回List<StudyPathNodeDTO>
用户与认证模块
  • 主要类UserController, UserService, UserServiceImpl
  • 主要服务接口与实现
    • UserService/UserServiceImpl:用户注册、登录、找回密码、信息管理。
      • register(User)
        • 实现逻辑:
          1. 验证用户信息完整性
          2. 检查账号是否已存在
          3. 加密密码
          4. 保存用户信息
          5. 返回成功响应
      • login(account, password)
        • 实现逻辑:
          1. 验证账号密码
          2. 生成JWT token
          3. 更新登录时间
          4. 返回token和用户信息
      • forgetPassword(account, password)
        • 实现逻辑:
          1. 验证账号存在性
          2. 加密新密码
          3. 更新密码
          4. 返回成功响应
      • deleteUser(userId)
        • 实现逻辑:
          1. 验证用户存在性
          2. 删除用户相关数据
          3. 删除用户记录
          4. 返回成功响应
      • getUser(userId, account)
        • 实现逻辑:
          1. 根据条件查询用户
          2. 获取用户详细信息
          3. 返回用户信息
      • updateUser(...)
        • 实现逻辑:
          1. 验证用户存在性
          2. 更新用户信息
          3. 返回成功响应
      • getAllUsers()
        • 实现逻辑:
          1. 获取所有用户列表
          2. 过滤敏感信息
          3. 返回用户列表
管理员模块
  • 主要类AdminUserController, AdminUserService, AdminUserServiceImpl, AdminStatisticsService, AdminStatisticsServiceImpl
  • 主要服务接口与实现
    • AdminUserService/AdminUserServiceImpl:负责管理员对用户的管理。

      • addUser(User)
        • 实现逻辑:
          1. 验证管理员权限
          2. 验证用户信息完整性
          3. 检查账号唯一性
          4. 加密密码
          5. 保存用户信息
          6. 返回成功响应
      • deleteUser(id)
        • 实现逻辑:
          1. 验证管理员权限
          2. 检查用户存在性
          3. 删除用户相关数据
          4. 删除用户记录
          5. 返回成功响应
      • updateUser(User)
        • 实现逻辑:
          1. 验证管理员权限
          2. 检查用户存在性
          3. 更新用户信息
          4. 返回成功响应
      • getUser(id, account)
        • 实现逻辑:
          1. 验证管理员权限
          2. 根据条件查询用户
          3. 返回用户详细信息
      • getAllUsers()
        • 实现逻辑:
          1. 验证管理员权限
          2. 获取所有用户列表
          3. 返回用户信息列表
    • AdminStatisticsService/AdminStatisticsServiceImpl:负责系统级统计分析。

      • getAllTeacherHomeworks()
        • 实现逻辑:
          1. 验证管理员权限
          2. 获取所有教师作业
          3. 统计作业完成情况
          4. 返回作业统计信息
      • getTeacherHomeworks(teacherId)
        • 实现逻辑:
          1. 验证管理员权限
          2. 获取指定教师作业
          3. 统计作业完成情况
          4. 返回作业统计信息
      • getHomeworkStatistics(homeworkId)
        • 实现逻辑:
          1. 验证管理员权限
          2. 获取作业详细信息
          3. 统计学生完成情况
          4. 计算平均分和通过率
          5. 返回统计信息
      • getAllHomeworkStatistics()
        • 实现逻辑:
          1. 验证管理员权限
          2. 获取所有作业
          3. 统计每个作业的完成情况
          4. 返回统计信息列表
      • getStudentHomeworkStatistics(homeworkId)
        • 实现逻辑:
          1. 验证管理员权限
          2. 获取作业学生列表
          3. 统计每个学生的完成情况
          4. 返回统计信息
      • getQuestionAnalysis(label)
        • 实现逻辑:
          1. 验证管理员权限
          2. 获取题目列表
          3. 统计题目难度和正确率
          4. 返回分析结果
      • getTeacherStudentStatistics()
        • 实现逻辑:
          1. 验证管理员权限
          2. 获取教师学生关系
          3. 统计每个教师的学生数量
          4. 返回统计信息
      • getSystemOverview()
        • 实现逻辑:
          1. 验证管理员权限
          2. 统计用户数量
          3. 统计作业数量
          4. 统计题目数量
          5. 计算系统使用率
          6. 返回系统概览
教师个人资料模块
  • 主要类TeacherProfileController, TeacherProfileService, TeacherProfileServiceImpl
  • 主要服务接口与实现
    • TeacherProfileService/TeacherProfileServiceImpl:负责教师个人资料管理。
      • updateTeacherName(teacherId, newName)
        • 实现逻辑:
          1. 验证教师身份
          2. 检查新名字有效性
          3. 更新教师姓名
          4. 返回成功响应
      • getTeacherProfile(teacherId)
        • 实现逻辑:
          1. 验证教师身份
          2. 获取教师基本信息
          3. 获取教师统计信息
          4. 返回教师资料
学生个人资料模块
  • 主要类StudentProfileController, StudentProfileService, StudentProfileServiceImpl
  • 主要服务接口与实现
    • StudentProfileService/StudentProfileServiceImpl:负责学生个人资料管理。
      • getStudentProfile(studentId)
        • 实现逻辑:
          1. 验证学生身份
          2. 获取学生基本信息
          3. 获取学习统计信息
          4. 返回学生资料
      • updateStudentProfile(Student)
        • 实现逻辑:
          1. 验证学生身份
          2. 验证更新信息有效性
          3. 更新学生信息
          4. 返回成功响应
教师学生关系模块
  • 主要类TeacherStudentRelationController, TeacherStudentService, TeacherStudentServiceImpl
  • 主要服务接口与实现
    • TeacherStudentService/TeacherStudentServiceImpl:负责教师学生关系管理。
      • getTeacherStudentRelations(teacherId)
        • 实现逻辑:
          1. 验证教师身份
          2. 获取教师的学生列表
          3. 获取每个学生的基本信息
          4. 返回关系列表
      • getAllStudents()
        • 实现逻辑:
          1. 验证教师身份
          2. 获取所有学生列表
          3. 过滤已关联的学生
          4. 返回可用学生列表
      • addStudentToTeacher(teacherId, studentId)
        • 实现逻辑:
          1. 验证教师身份
          2. 检查学生是否存在
          3. 检查是否已关联
          4. 创建关联关系
          5. 返回成功响应
      • deleteStudentFromTeacher(teacherId, studentId)
        • 实现逻辑:
          1. 验证教师身份
          2. 检查关联关系是否存在
          3. 删除关联关系
          4. 返回成功响应

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