ybt | 02e716d | 2025-04-15 17:19:32 +0800 | [diff] [blame^] | 1 | import Mock from 'mockjs' |
| 2 | |
| 3 | // 模拟延迟 |
| 4 | Mock.setup({ |
| 5 | timeout: '300-600' |
| 6 | }) |
| 7 | |
| 8 | // 模拟用户数据 |
| 9 | const users = [ |
| 10 | { |
| 11 | id: 1, |
| 12 | username: 'admin', |
| 13 | password: 'admin123', |
| 14 | email: 'admin@example.com', |
| 15 | role: 'admin', |
| 16 | avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=admin' |
| 17 | }, |
| 18 | { |
| 19 | id: 2, |
| 20 | username: 'user', |
| 21 | password: 'user123', |
| 22 | email: 'user@example.com', |
| 23 | role: 'user', |
| 24 | avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=user' |
| 25 | }, |
| 26 | { |
| 27 | id: 3, |
| 28 | username: 'moderator', |
| 29 | password: 'mod123', |
| 30 | email: 'mod@example.com', |
| 31 | role: 'moderator', |
| 32 | avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=moderator' |
| 33 | }, |
| 34 | { |
| 35 | id: 4, |
| 36 | username: 'blacklisted', |
| 37 | password: 'black123', |
| 38 | email: 'black@example.com', |
| 39 | role: 'blacklisted', |
| 40 | avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=blacklisted' |
| 41 | }, |
| 42 | { |
| 43 | id: 5, |
| 44 | username: 'veteran', |
| 45 | password: 'vet123', |
| 46 | email: 'veteran@example.com', |
| 47 | role: 'veteran', |
| 48 | avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=veteran' |
| 49 | }, |
| 50 | { |
| 51 | id: 6, |
| 52 | username: 'newbie', |
| 53 | password: 'new123', |
| 54 | email: 'newbie@example.com', |
| 55 | role: 'newbie', |
| 56 | avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=newbie' |
| 57 | } |
| 58 | ] |
| 59 | |
| 60 | // 模拟登录接口 |
| 61 | Mock.mock('/api/auth/login', 'post', (options) => { |
| 62 | const { username, password } = JSON.parse(options.body) |
| 63 | const user = users.find(u => u.username === username && u.password === password) |
| 64 | |
| 65 | if (user) { |
| 66 | const { password, ...userWithoutPassword } = user |
| 67 | return { |
| 68 | code: 200, |
| 69 | message: '登录成功', |
| 70 | data: { |
| 71 | token: `mock-token-${user.id}-${Date.now()}`, |
| 72 | user: userWithoutPassword |
| 73 | } |
| 74 | } |
| 75 | } else { |
| 76 | return { |
| 77 | code: 401, |
| 78 | message: '用户名或密码错误', |
| 79 | data: null |
| 80 | } |
| 81 | } |
| 82 | }) |
| 83 | |
| 84 | // 模拟注册接口 |
| 85 | Mock.mock('/api/auth/register', 'post', (options) => { |
| 86 | const { username, email, password } = JSON.parse(options.body) |
| 87 | |
| 88 | // 检查用户名是否已存在 |
| 89 | if (users.some(u => u.username === username)) { |
| 90 | return { |
| 91 | code: 400, |
| 92 | message: '用户名已存在', |
| 93 | data: null |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | // 检查邮箱是否已存在 |
| 98 | if (users.some(u => u.email === email)) { |
| 99 | return { |
| 100 | code: 400, |
| 101 | message: '邮箱已被注册', |
| 102 | data: null |
| 103 | } |
| 104 | } |
| 105 | |
| 106 | // 创建新用户 |
| 107 | const newUser = { |
| 108 | id: users.length + 1, |
| 109 | username, |
| 110 | password, |
| 111 | email, |
| 112 | role: 'newbie', // 默认为新人角色 |
| 113 | avatar: `https://api.dicebear.com/7.x/avataaars/svg?seed=${username}` |
| 114 | } |
| 115 | |
| 116 | users.push(newUser) |
| 117 | |
| 118 | return { |
| 119 | code: 200, |
| 120 | message: '注册成功', |
| 121 | data: null |
| 122 | } |
| 123 | }) |
| 124 | |
| 125 | // 模拟获取用户信息接口 |
| 126 | Mock.mock('/api/user/info', 'get', (options) => { |
| 127 | // 在实际应用中,这里会从token中解析用户ID |
| 128 | // 这里简化处理,假设已登录用户是admin |
| 129 | const user = users.find(u => u.username === 'admin') |
| 130 | |
| 131 | if (user) { |
| 132 | const { password, ...userWithoutPassword } = user |
| 133 | return { |
| 134 | code: 200, |
| 135 | message: '获取用户信息成功', |
| 136 | data: userWithoutPassword |
| 137 | } |
| 138 | } else { |
| 139 | return { |
| 140 | code: 401, |
| 141 | message: '获取用户信息失败', |
| 142 | data: null |
| 143 | } |
| 144 | } |
| 145 | }) |
| 146 | |
| 147 | export default Mock |