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 getClasses(req, res) { try { const classes = await TeacherService.getClasses(); success(res, { classes }); } catch (err) { console.error('Get Classes Error:', err); error(res, '服务器错误'); } } static async getMyClasses(req, res) { try { const teacherId = req.session.user.id; const classes = await TeacherService.getTeacherClasses(teacherId); success(res, { classes }); } catch (err) { console.error('Get My Classes Error:', err); error(res, '服务器错误'); } } static async createCourse(req, res) { try { const teacherId = req.session.user.id; const courseId = await TeacherService.createCourse(teacherId, req.body); success(res, { courseId }, '课程创建成功'); } catch (err) { console.error('Create Course Error:', err); error(res, '服务器错误'); } } static async updateCourse(req, res) { try { const teacherId = req.session.user.id; const courseId = req.params.id; await TeacherService.updateCourse(teacherId, courseId, req.body); success(res, null, '课程更新成功'); } catch (err) { if (err.message === '无权修改该课程或课程不存在') { return error(res, err.message, 403); } console.error('Update Course Error:', err); error(res, '服务器错误'); } } static async getGrades(req, res) { try { const teacherId = req.session.user.id; const filters = { courseId: req.query.courseId, studentName: req.query.studentName }; const grades = await TeacherService.getGrades(teacherId, filters); success(res, { grades }); } catch (err) { console.error('Get Grades 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;