first commit
This commit is contained in:
156
mock/user.ts
Normal file
156
mock/user.ts
Normal file
@@ -0,0 +1,156 @@
|
||||
/**
|
||||
* 用户相关 Mock
|
||||
*
|
||||
* 认证接口(登录、验证码登录、发送验证码)已接入真实后端 192.168.0.55:8080,
|
||||
* 通过 .umirc.ts 的 proxy 代理转发,不再 mock。
|
||||
*
|
||||
* 以下仅保留尚未对接真实接口的 mock。
|
||||
*/
|
||||
|
||||
const mockUsers = [
|
||||
{
|
||||
userId: 1,
|
||||
username: 'admin',
|
||||
realName: '管理员',
|
||||
phone: '13800138000',
|
||||
avatar: null,
|
||||
userType: 1,
|
||||
password: '123456',
|
||||
},
|
||||
{
|
||||
userId: 2,
|
||||
username: 'teacher001',
|
||||
realName: '李老师',
|
||||
phone: '13800138002',
|
||||
avatar: null,
|
||||
userType: 2,
|
||||
password: '123456',
|
||||
},
|
||||
{
|
||||
userId: 3,
|
||||
username: 'student001',
|
||||
realName: '张三',
|
||||
phone: '13800138001',
|
||||
avatar: null,
|
||||
userType: 3,
|
||||
password: '123456',
|
||||
},
|
||||
];
|
||||
|
||||
let nextUserId = 4;
|
||||
|
||||
const generateToken = () =>
|
||||
'eyJhbGciOiJIUzI1NiJ9.mock-' + Date.now() + '-' + Math.random().toString(36).slice(2);
|
||||
|
||||
const toUserData = (user: (typeof mockUsers)[0], token: string) => ({
|
||||
userId: user.userId,
|
||||
username: user.username,
|
||||
realName: user.realName,
|
||||
phone: user.phone,
|
||||
avatar: user.avatar,
|
||||
userType: user.userType,
|
||||
token,
|
||||
});
|
||||
|
||||
export default {
|
||||
// 验证重置密码验证码(暂无真实接口)
|
||||
'POST /api/auth/verifyResetCode': (req: any, res: any) => {
|
||||
const { phone, code } = req.body;
|
||||
|
||||
if (!phone || !code) {
|
||||
return res.json({ code: 40000, data: null, message: '请求参数错误' });
|
||||
}
|
||||
|
||||
if (!/^1[3-9]\d{9}$/.test(phone)) {
|
||||
return res.json({ code: 40000, data: null, message: '手机号格式不正确' });
|
||||
}
|
||||
|
||||
const user = mockUsers.find((u) => u.phone === phone);
|
||||
if (!user) {
|
||||
return res.json({ code: 40000, data: null, message: '该手机号未注册' });
|
||||
}
|
||||
|
||||
if (code !== '123456') {
|
||||
return res.json({ code: 40000, data: null, message: '验证码错误或已过期' });
|
||||
}
|
||||
|
||||
console.log(`[Mock] 验证码验证通过: ${phone}`);
|
||||
res.json({ code: 0, data: true, message: 'ok' });
|
||||
},
|
||||
|
||||
// 重置密码(暂无真实接口)
|
||||
'POST /api/auth/resetPassword': (req: any, res: any) => {
|
||||
const { phone, code, newPassword } = req.body;
|
||||
|
||||
if (!phone || !code || !newPassword) {
|
||||
return res.json({ code: 40000, data: null, message: '请求参数错误' });
|
||||
}
|
||||
|
||||
if (code !== '123456') {
|
||||
return res.json({ code: 40000, data: null, message: '验证码错误或已过期' });
|
||||
}
|
||||
|
||||
const user = mockUsers.find((u) => u.phone === phone);
|
||||
if (!user) {
|
||||
return res.json({ code: 40000, data: null, message: '该手机号未注册' });
|
||||
}
|
||||
|
||||
if (newPassword.length < 6 || newPassword.length > 20) {
|
||||
return res.json({ code: 40000, data: null, message: '密码长度需为6-20位' });
|
||||
}
|
||||
|
||||
user.password = newPassword;
|
||||
console.log(`[Mock] 用户 ${user.username} 密码已重置`);
|
||||
res.json({ code: 0, data: true, message: 'ok' });
|
||||
},
|
||||
|
||||
// 用户注册(暂无真实接口)
|
||||
'POST /api/auth/register': (req: any, res: any) => {
|
||||
const { username, password, confirmPassword, realName, phone, email, userType } = req.body;
|
||||
|
||||
if (!username || !password || !confirmPassword || !realName || !phone) {
|
||||
return res.json({ code: 40000, data: null, message: '请求参数错误' });
|
||||
}
|
||||
|
||||
if (!/^[a-zA-Z0-9_]{4,20}$/.test(username)) {
|
||||
return res.json({ code: 40000, data: null, message: '用户名只能包含字母、数字、下划线' });
|
||||
}
|
||||
|
||||
if (password.length < 6 || password.length > 20) {
|
||||
return res.json({ code: 40000, data: null, message: '密码长度需为6-20位' });
|
||||
}
|
||||
|
||||
if (password !== confirmPassword) {
|
||||
return res.json({ code: 40000, data: null, message: '两次密码不一致' });
|
||||
}
|
||||
|
||||
if (!/^1[3-9]\d{9}$/.test(phone)) {
|
||||
return res.json({ code: 40000, data: null, message: '手机号格式不正确' });
|
||||
}
|
||||
|
||||
if (mockUsers.find((u) => u.username === username)) {
|
||||
return res.json({ code: 40000, data: null, message: '用户名已存在' });
|
||||
}
|
||||
|
||||
if (mockUsers.find((u) => u.phone === phone)) {
|
||||
return res.json({ code: 40000, data: null, message: '手机号已注册' });
|
||||
}
|
||||
|
||||
const newUser = {
|
||||
userId: nextUserId++,
|
||||
username,
|
||||
realName,
|
||||
phone,
|
||||
avatar: null,
|
||||
userType: userType || 3,
|
||||
password,
|
||||
};
|
||||
mockUsers.push(newUser);
|
||||
|
||||
res.json({
|
||||
code: 0,
|
||||
data: toUserData(newUser, generateToken()),
|
||||
message: 'ok',
|
||||
});
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user