feat: 实现成绩管理系统核心功能
添加响应工具、错误处理中间件和数据库模型 创建用户、学生、课程和成绩相关服务 实现管理员、教师和学生控制器的基本功能 重构路由处理并优化数据库查询
This commit is contained in:
33
backend/models/User.js
Normal file
33
backend/models/User.js
Normal file
@@ -0,0 +1,33 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = User;
|
||||
Reference in New Issue
Block a user