新增教师资料更新功能,包括个人信息修改和密码更新 添加操作日志记录系统,记录用户关键操作 实现系统设置模块,支持动态配置系统参数 重构数据库模型,新增教师表和系统设置表 优化成绩录入逻辑,支持平时分、期中和期末成绩计算 添加数据导出功能,支持学生、教师和成绩数据导出 完善管理员后台,增加统计图表和操作日志查看
70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
const db = require('../config/database');
|
|
|
|
class Course {
|
|
static async findByTeacherId(teacherId) {
|
|
const sql = `
|
|
SELECT c.*, cl.class_name,
|
|
(SELECT COUNT(*) FROM students s WHERE s.class = cl.class_name) as student_count
|
|
FROM courses c
|
|
LEFT JOIN classes cl ON c.class_id = cl.id
|
|
WHERE c.teacher_id = ?
|
|
ORDER BY c.course_code
|
|
`;
|
|
return await db.query(sql, [teacherId]);
|
|
}
|
|
|
|
static async findById(id) {
|
|
const rows = await db.query('SELECT * FROM courses WHERE id = ?', [id]);
|
|
return rows[0];
|
|
}
|
|
|
|
static async findDetailsById(id) {
|
|
const sql = `
|
|
SELECT c.*, u.name as teacher_name, cl.class_name
|
|
FROM courses c
|
|
JOIN users u ON c.teacher_id = u.id
|
|
JOIN classes cl ON c.class_id = cl.id
|
|
WHERE c.id = ?
|
|
`;
|
|
const rows = await db.query(sql, [id]);
|
|
return rows[0];
|
|
}
|
|
|
|
static async findByStudentId(studentId) {
|
|
const sql = `
|
|
SELECT c.*, u.name as teacher_name
|
|
FROM courses c
|
|
JOIN classes cl ON c.class_id = cl.id
|
|
JOIN students s ON cl.class_name = s.class
|
|
JOIN users u ON c.teacher_id = u.id
|
|
WHERE s.id = ?
|
|
ORDER BY c.course_code
|
|
`;
|
|
return await db.query(sql, [studentId]);
|
|
}
|
|
|
|
static async getClasses() {
|
|
return await db.query('SELECT * FROM classes');
|
|
}
|
|
|
|
static async create(data) {
|
|
const { course_name, course_code, credit, teacher_id, semester, class_id, category } = data;
|
|
const sql = `INSERT INTO courses (course_name, course_code, credit, teacher_id, semester, class_id, category) VALUES (?, ?, ?, ?, ?, ?, ?)`;
|
|
const result = await db.query(sql, [course_name, course_code, credit, teacher_id, semester, class_id, category]);
|
|
return result.insertId;
|
|
}
|
|
|
|
static async update(id, data) {
|
|
const { course_name, course_code, credit, semester, class_id } = data;
|
|
const sql = `
|
|
UPDATE courses
|
|
SET course_name = ?, course_code = ?, credit = ?, semester = ?, class_id = ?
|
|
WHERE id = ?
|
|
`;
|
|
const result = await db.query(sql, [course_name, course_code, credit, semester, class_id, id]);
|
|
return result.affectedRows > 0;
|
|
}
|
|
}
|
|
|
|
module.exports = Course;
|