题库导入功能完成,考试计划功能完成。

This commit is contained in:
2025-12-19 00:58:58 +08:00
parent ba252b2f56
commit 465d4d7b4a
27 changed files with 1851 additions and 177 deletions

View File

@@ -83,6 +83,67 @@ export class AdminUserController {
}
}
// 更新用户信息
static async updateUser(req: Request, res: Response) {
try {
const { id } = req.params;
const { name, phone, password } = req.body;
const user = await UserModel.findById(id);
if (!user) {
return res.status(404).json({
success: false,
message: '用户不存在'
});
}
// 准备更新数据
const updateData: Partial<{ name: string; phone: string; password: string }> = {};
if (name !== undefined) updateData.name = name;
if (phone !== undefined) updateData.phone = phone;
if (password !== undefined) updateData.password = password;
// 更新用户
const updatedUser = await UserModel.update(id, updateData);
res.json({
success: true,
data: updatedUser
});
} catch (error: any) {
// 处理手机号已存在的错误
if (error.message === '手机号已存在') {
return res.status(400).json({
success: false,
message: '手机号已存在'
});
}
// 处理SQLITE_CONSTRAINT_UNIQUE错误
if (error.code === 'SQLITE_CONSTRAINT_UNIQUE') {
return res.status(400).json({
success: false,
message: '手机号已存在'
});
}
// 处理数据验证错误
if (error.message.includes('姓名长度必须在2-20个字符之间') ||
error.message.includes('手机号格式不正确')) {
return res.status(400).json({
success: false,
message: error.message
});
}
// 处理其他错误
res.status(500).json({
success: false,
message: error.message || '更新用户失败'
});
}
}
static async importUsers(req: Request, res: Response) {
try {
const file = (req as any).file;