Files
WebWork/backend/models/Score.js
祀梦 b9a975004b feat: 实现成绩管理系统核心功能
添加响应工具、错误处理中间件和数据库模型
创建用户、学生、课程和成绩相关服务
实现管理员、教师和学生控制器的基本功能
重构路由处理并优化数据库查询
2025-12-21 22:10:48 +08:00

55 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;