feat: 实现成绩管理系统核心功能

添加响应工具、错误处理中间件和数据库模型
创建用户、学生、课程和成绩相关服务
实现管理员、教师和学生控制器的基本功能
重构路由处理并优化数据库查询
This commit is contained in:
祀梦
2025-12-21 22:10:48 +08:00
parent bcf2c71fad
commit b9a975004b
20 changed files with 659 additions and 937 deletions

View File

@@ -0,0 +1,42 @@
const TeacherService = require('../services/teacherService');
const { success, error } = require('../utils/response');
class TeacherController {
static async getCourses(req, res) {
try {
const teacherId = req.session.user.id; // 注意:这里假设 user.id 就是 teacher_id需要根据 users 表设计确认
// 在之前的 SQL 中courses.teacher_id 是 INT而 users.id 是 VARCHAR。
// 这里可能存在类型不匹配的问题。
// 假设 users 表中 id 既是学号/工号,也是关联键。
// 实际上,之前的 teacher.js 中是直接用 req.session.user.id 查询。
const courses = await TeacherService.getCourses(teacherId);
success(res, { courses });
} catch (err) {
console.error('Get Courses Error:', err);
error(res, '服务器错误');
}
}
static async addScore(req, res) {
try {
const teacherId = req.session.user.id;
const { studentId, courseId, score } = req.body;
if (!studentId || !courseId || score === undefined) {
return error(res, '请填写必填字段', 400);
}
const gradeId = await TeacherService.addScore(teacherId, req.body);
success(res, { gradeId }, '成绩录入成功');
} catch (err) {
if (err.message === '学生不存在' || err.message === '该学生此课程成绩已存在') {
return error(res, err.message, 400);
}
console.error('Add Score Error:', err);
error(res, '服务器错误');
}
}
}
module.exports = TeacherController;