feat(学生): 添加成绩分析功能及密码修改功能

- 新增成绩分析页面,包含GPA趋势图、成绩分布图和学分进度
- 实现学生密码修改功能,包括前端表单和后端验证逻辑
- 添加课程类别分析功能,展示不同类别课程的GPA表现
- 优化学生仪表板和课程页面导航链接
- 增加数据加载状态提示和错误处理
This commit is contained in:
祀梦
2025-12-22 21:07:21 +08:00
parent ac6029dac8
commit 16802c85e5
13 changed files with 819 additions and 14 deletions

View File

@@ -65,6 +65,26 @@ class AuthController {
res.json({ success: false, message: '未登录' });
}
}
static async updatePassword(req, res) {
try {
const userId = req.session.user.id;
const { oldPassword, newPassword } = req.body;
if (!oldPassword || !newPassword) {
return error(res, '请提供原密码和新密码', 400);
}
await AuthService.updatePassword(userId, oldPassword, newPassword);
success(res, null, '密码修改成功');
} catch (err) {
if (err.message === '原密码错误' || err.message === '用户不存在') {
return error(res, err.message, 400);
}
console.error('Update Password Error:', err);
error(res, '服务器错误');
}
}
}
module.exports = AuthController;

View File

@@ -58,6 +58,20 @@ class StudentController {
error(res, '服务器错误');
}
}
static async getGradeStatistics(req, res) {
try {
const userId = req.session.user.id;
const data = await StudentService.getGradeStatistics(userId);
success(res, data);
} catch (err) {
if (err.message === '学生信息不存在') {
return error(res, err.message, 404);
}
console.error('Get Grade Statistics Error:', err);
error(res, '服务器错误');
}
}
}
module.exports = StudentController;