新增教师资料更新功能,包括个人信息修改和密码更新 添加操作日志记录系统,记录用户关键操作 实现系统设置模块,支持动态配置系统参数 重构数据库模型,新增教师表和系统设置表 优化成绩录入逻辑,支持平时分、期中和期末成绩计算 添加数据导出功能,支持学生、教师和成绩数据导出 完善管理员后台,增加统计图表和操作日志查看
104 lines
3.8 KiB
JavaScript
104 lines
3.8 KiB
JavaScript
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; |