| import Mock from 'mockjs' |
| |
| // 模拟延迟 |
| Mock.setup({ |
| timeout: '300-600' |
| }) |
| |
| // 模拟用户数据 |
| const users = [ |
| { |
| id: 1, |
| username: 'admin', |
| password: 'admin123', |
| email: 'admin@example.com', |
| role: 'admin', |
| avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=admin' |
| }, |
| { |
| id: 2, |
| username: 'user', |
| password: 'user123', |
| email: 'user@example.com', |
| role: 'user', |
| avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=user' |
| }, |
| { |
| id: 3, |
| username: 'moderator', |
| password: 'mod123', |
| email: 'mod@example.com', |
| role: 'moderator', |
| avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=moderator' |
| }, |
| { |
| id: 4, |
| username: 'blacklisted', |
| password: 'black123', |
| email: 'black@example.com', |
| role: 'blacklisted', |
| avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=blacklisted' |
| }, |
| { |
| id: 5, |
| username: 'veteran', |
| password: 'vet123', |
| email: 'veteran@example.com', |
| role: 'veteran', |
| avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=veteran' |
| }, |
| { |
| id: 6, |
| username: 'newbie', |
| password: 'new123', |
| email: 'newbie@example.com', |
| role: 'newbie', |
| avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=newbie' |
| } |
| ] |
| |
| // 模拟登录接口 |
| Mock.mock('/api/auth/login', 'post', (options) => { |
| const { username, password } = JSON.parse(options.body) |
| const user = users.find(u => u.username === username && u.password === password) |
| |
| if (user) { |
| const { password, ...userWithoutPassword } = user |
| return { |
| code: 200, |
| message: '登录成功', |
| data: { |
| token: `mock-token-${user.id}-${Date.now()}`, |
| user: userWithoutPassword |
| } |
| } |
| } else { |
| return { |
| code: 401, |
| message: '用户名或密码错误', |
| data: null |
| } |
| } |
| }) |
| |
| // 模拟注册接口 |
| Mock.mock('/api/auth/register', 'post', (options) => { |
| const { username, email, password } = JSON.parse(options.body) |
| |
| // 检查用户名是否已存在 |
| if (users.some(u => u.username === username)) { |
| return { |
| code: 400, |
| message: '用户名已存在', |
| data: null |
| } |
| } |
| |
| // 检查邮箱是否已存在 |
| if (users.some(u => u.email === email)) { |
| return { |
| code: 400, |
| message: '邮箱已被注册', |
| data: null |
| } |
| } |
| |
| // 创建新用户 |
| const newUser = { |
| id: users.length + 1, |
| username, |
| password, |
| email, |
| role: 'newbie', // 默认为新人角色 |
| avatar: `https://api.dicebear.com/7.x/avataaars/svg?seed=${username}` |
| } |
| |
| users.push(newUser) |
| |
| return { |
| code: 200, |
| message: '注册成功', |
| data: null |
| } |
| }) |
| |
| // 模拟获取用户信息接口 |
| Mock.mock('/api/user/info', 'get', (options) => { |
| // 在实际应用中,这里会从token中解析用户ID |
| // 这里简化处理,假设已登录用户是admin |
| const user = users.find(u => u.username === 'admin') |
| |
| if (user) { |
| const { password, ...userWithoutPassword } = user |
| return { |
| code: 200, |
| message: '获取用户信息成功', |
| data: userWithoutPassword |
| } |
| } else { |
| return { |
| code: 401, |
| message: '获取用户信息失败', |
| data: null |
| } |
| } |
| }) |
| |
| export default Mock |