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