feat: 实现教师资料更新、操作日志和系统设置功能

新增教师资料更新功能,包括个人信息修改和密码更新
添加操作日志记录系统,记录用户关键操作
实现系统设置模块,支持动态配置系统参数
重构数据库模型,新增教师表和系统设置表
优化成绩录入逻辑,支持平时分、期中和期末成绩计算
添加数据导出功能,支持学生、教师和成绩数据导出
完善管理员后台,增加统计图表和操作日志查看
This commit is contained in:
祀梦
2025-12-22 23:30:01 +08:00
parent 16802c85e5
commit b1da021185
43 changed files with 7860 additions and 2835 deletions

View File

@@ -3,7 +3,42 @@ const router = express.Router();
const AdminController = require('../controllers/adminController');
const { requireAuth, requireRole } = require('../middleware/auth');
router.get('/stats', requireAuth, requireRole(['admin']), AdminController.getStats);
router.get('/users', requireAuth, requireRole(['admin']), AdminController.getUsers);
router.post('/users', requireAuth, requireRole(['admin']), AdminController.createUser);
router.put('/users/:id', requireAuth, requireRole(['admin']), AdminController.updateUser);
router.delete('/users/:id', requireAuth, requireRole(['admin']), AdminController.deleteUser);
// Student Management
router.get('/students', requireAuth, requireRole(['admin']), AdminController.getStudents);
router.post('/students', requireAuth, requireRole(['admin']), AdminController.createStudent);
router.put('/students/:id', requireAuth, requireRole(['admin']), AdminController.updateStudent);
router.delete('/students/:id', requireAuth, requireRole(['admin']), AdminController.deleteStudent);
// Teacher Management
router.get('/teachers', requireAuth, requireRole(['admin']), AdminController.getTeachers);
router.post('/teachers', requireAuth, requireRole(['admin']), AdminController.createTeacher);
router.put('/teachers/:id', requireAuth, requireRole(['admin']), AdminController.updateTeacher);
router.delete('/teachers/:id', requireAuth, requireRole(['admin']), AdminController.deleteTeacher);
// Grade Statistics
router.get('/grade-stats', requireAuth, requireRole(['admin']), AdminController.getGradeStats);
// System Settings
router.get('/settings', requireAuth, requireRole(['admin']), AdminController.getSettings);
router.post('/settings', requireAuth, requireRole(['admin']), AdminController.saveSettings);
// Data Maintenance
router.post('/maintenance/backup', requireAuth, requireRole(['admin']), AdminController.backupDatabase);
router.post('/maintenance/clear-cache', requireAuth, requireRole(['admin']), AdminController.clearCache);
router.post('/maintenance/reset-passwords', requireAuth, requireRole(['admin']), AdminController.resetStudentPasswords);
// Data Export
router.get('/export/students', requireAuth, requireRole(['admin']), AdminController.exportStudents);
router.get('/export/teachers', requireAuth, requireRole(['admin']), AdminController.exportTeachers);
router.get('/export/grades', requireAuth, requireRole(['admin']), AdminController.exportGrades);
// Operation Logs
router.get('/logs', requireAuth, requireRole(['admin']), AdminController.getOperationLogs);
module.exports = router;

View File

@@ -8,5 +8,6 @@ router.post('/register', AuthController.register);
router.post('/logout', AuthController.logout);
router.get('/me', AuthController.getCurrentUser);
router.put('/update-password', requireAuth, AuthController.updatePassword);
router.put('/update-profile', requireAuth, AuthController.updateProfile);
module.exports = router;

View File

@@ -4,6 +4,11 @@ const TeacherController = require('../controllers/teacherController');
const { requireAuth, requireRole } = require('../middleware/auth');
router.get('/courses', requireAuth, requireRole(['teacher']), TeacherController.getCourses);
router.get('/classes', requireAuth, requireRole(['teacher']), TeacherController.getClasses);
router.get('/my-classes', requireAuth, requireRole(['teacher']), TeacherController.getMyClasses);
router.post('/courses', requireAuth, requireRole(['teacher']), TeacherController.createCourse);
router.put('/courses/:id', requireAuth, requireRole(['teacher']), TeacherController.updateCourse);
router.get('/grades', requireAuth, requireRole(['teacher']), TeacherController.getGrades);
router.post('/grades', requireAuth, requireRole(['teacher']), TeacherController.addScore);
module.exports = router;