新增教师资料更新功能,包括个人信息修改和密码更新 添加操作日志记录系统,记录用户关键操作 实现系统设置模块,支持动态配置系统参数 重构数据库模型,新增教师表和系统设置表 优化成绩录入逻辑,支持平时分、期中和期末成绩计算 添加数据导出功能,支持学生、教师和成绩数据导出 完善管理员后台,增加统计图表和操作日志查看
61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
const db = require('../config/database');
|
|
const bcrypt = require('bcryptjs');
|
|
|
|
class User {
|
|
static async findById(id) {
|
|
const users = await db.query('SELECT * FROM users WHERE id = ?', [id]);
|
|
return users[0];
|
|
}
|
|
|
|
static async findByIdAndRole(id, role) {
|
|
const users = await db.query('SELECT * FROM users WHERE id = ? AND role = ?', [id, role]);
|
|
return users[0];
|
|
}
|
|
|
|
static async create(userData) {
|
|
const { id, name, password, role, className } = userData;
|
|
const salt = await bcrypt.genSalt(10);
|
|
const hashedPassword = await bcrypt.hash(password, salt);
|
|
|
|
await db.query(
|
|
'INSERT INTO users (id, name, password, role, class) VALUES (?, ?, ?, ?, ?)',
|
|
[id, name, hashedPassword, role, className || null]
|
|
);
|
|
|
|
return { id, name, role, class: className };
|
|
}
|
|
|
|
static async verifyPassword(plainPassword, hashedPassword) {
|
|
return await bcrypt.compare(plainPassword, hashedPassword);
|
|
}
|
|
|
|
static async updatePassword(id, newPassword) {
|
|
const salt = await bcrypt.genSalt(10);
|
|
const hashedPassword = await bcrypt.hash(newPassword, salt);
|
|
await db.query('UPDATE users SET password = ? WHERE id = ?', [hashedPassword, id]);
|
|
return true;
|
|
}
|
|
|
|
static async updateProfile(id, updateData) {
|
|
const fields = [];
|
|
const params = [];
|
|
|
|
if (updateData.name) {
|
|
fields.push('name = ?');
|
|
params.push(updateData.name);
|
|
}
|
|
if (updateData.class !== undefined) {
|
|
fields.push('class = ?');
|
|
params.push(updateData.class);
|
|
}
|
|
|
|
if (fields.length === 0) return false;
|
|
|
|
params.push(id);
|
|
const sql = `UPDATE users SET ${fields.join(', ')} WHERE id = ?`;
|
|
await db.query(sql, params);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
module.exports = User; |