第一版提交,答题功能OK,题库管理待完善

This commit is contained in:
2025-12-18 19:07:21 +08:00
parent e5600535be
commit ba252b2f56
93 changed files with 20431 additions and 1 deletions

View File

@@ -0,0 +1,118 @@
import { Request, Response } from 'express';
import { UserModel } from '../models/user';
export class UserController {
static async createUser(req: Request, res: Response) {
try {
const { name, phone, password } = req.body;
if (!name || !phone) {
return res.status(400).json({
success: false,
message: '姓名和手机号不能为空'
});
}
const errors = UserModel.validateUserData({ name, phone, password });
if (errors.length > 0) {
return res.status(400).json({
success: false,
message: '数据验证失败',
errors
});
}
const user = await UserModel.create({ name, phone, password });
res.json({
success: true,
data: user
});
} catch (error: any) {
console.error('创建用户失败:', error);
res.status(500).json({
success: false,
message: error.message || '创建用户失败'
});
}
}
static async getUser(req: Request, res: Response) {
try {
const { id } = req.params;
const user = await UserModel.findById(id);
if (!user) {
return res.status(404).json({
success: false,
message: '用户不存在'
});
}
res.json({
success: true,
data: user
});
} catch (error: any) {
console.error('获取用户信息失败:', error);
res.status(500).json({
success: false,
message: error.message || '获取用户信息失败'
});
}
}
static async validateUserInfo(req: Request, res: Response) {
try {
const { name, phone, password } = req.body;
if (!name || !phone) {
return res.status(400).json({
success: false,
message: '姓名和手机号不能为空'
});
}
const errors = UserModel.validateUserData({ name, phone, password });
if (errors.length > 0) {
return res.status(400).json({
success: false,
message: '数据验证失败',
errors
});
}
const existingUser = await UserModel.findByPhone(phone);
if (existingUser) {
if (existingUser.password && existingUser.password !== password) {
return res.status(400).json({
success: false,
message: '密码错误'
});
}
if (!existingUser.password && password) {
await UserModel.updatePasswordById(existingUser.id, password);
}
res.json({
success: true,
data: existingUser
});
} else {
const newUser = await UserModel.create({ name, phone, password });
res.json({
success: true,
data: newUser
});
}
} catch (error: any) {
console.error('验证用户信息失败:', error);
res.status(500).json({
success: false,
message: error.message || '验证用户信息失败'
});
}
}
}