Files
WebWork/backend/models/Score.js
祀梦 e5a2a9d042 feat: 添加学生个人中心页面和数据库备份功能
refactor(auth): 重构认证模块适配Bootstrap 5样式
feat(controller): 在登录响应中返回用户对象
feat(server): 添加学生个人中心路由
refactor(models): 重构学生和成绩模型结构
style: 更新登录和注册页面UI设计
chore: 添加数据库备份脚本和空备份文件
2025-12-21 22:34:29 +08:00

61 lines
2.5 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.id, s.student_id, s.course_id, s.teacher_id,
s.total_score as score, s.grade_point, s.grade_level, s.created_at,
c.course_code, c.course_name, c.credit,
u.name as teacher_name
FROM grades 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.id, s.student_id, s.course_id, s.teacher_id,
s.usual_score, s.midterm_score, s.final_score, s.total_score as score,
s.grade_point, s.grade_level, s.created_at, s.remark,
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 grades 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, remark } = scoreData;
// 既然TeacherService只传了score我们默认把它作为 final_score 和 total_score
// 如果需要支持平时分/期中分需要修改前端和Controller
const sql = `
INSERT INTO grades (student_id, course_id, teacher_id, final_score, total_score,
grade_point, grade_level, created_at, remark)
VALUES (?, ?, ?, ?, ?, ?, ?, NOW(), ?)
`;
const result = await db.pool.execute(sql, [
studentId, courseId, teacherId, score, score, gradePoint, gradeLevel, remark
]);
return result[0].insertId;
}
static async findByStudentAndCourse(studentId, courseId) {
const rows = await db.query(
'SELECT * FROM grades WHERE student_id = ? AND course_id = ?',
[studentId, courseId]
);
return rows[0];
}
}
module.exports = Score;