const db = require('../config/database'); class Score { static async findByStudentId(studentId) { const sql = ` SELECT s.*, c.course_code, c.course_name, c.credit, u.name as teacher_name FROM scores s JOIN courses c ON s.course_id = c.id JOIN users u ON s.teacher_id = u.id WHERE s.student_id = ? ORDER BY s.created_at DESC `; return await db.query(sql, [studentId]); } static async findDetailsById(scoreId, studentId) { const sql = ` SELECT s.*, c.course_code, c.course_name, c.credit, c.semester, u.name as teacher_name, u.email as teacher_email, st.id as student_number, st.class as class_name FROM scores s JOIN courses c ON s.course_id = c.id JOIN users u ON s.teacher_id = u.id JOIN students st ON s.student_id = st.id WHERE s.id = ? AND st.id = ? `; const rows = await db.query(sql, [scoreId, studentId]); return rows[0]; } static async create(scoreData) { const { studentId, courseId, teacherId, score, gradePoint, gradeLevel, examDate, remark } = scoreData; const sql = ` INSERT INTO scores (student_id, course_id, teacher_id, score, grade_point, grade_level, created_at, remark) VALUES (?, ?, ?, ?, ?, ?, NOW(), ?) `; // 注意:这里用 created_at 替代了 examDate,如果数据库有 examDate 列可以改回去 const result = await db.pool.execute(sql, [ studentId, courseId, teacherId, score, gradePoint, gradeLevel, remark ]); return result[0].insertId; } static async findByStudentAndCourse(studentId, courseId) { const rows = await db.query( 'SELECT * FROM scores WHERE student_id = ? AND course_id = ?', [studentId, courseId] ); return rows[0]; } } module.exports = Score;