const express = require('express');
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');

const app = express();
const PORT = 3000;
const USER_FILE = path.join(__dirname, 'user.json');

// 确保user.json文件存在
if (!fs.existsSync(USER_FILE)) {
  fs.writeFileSync(USER_FILE, '[]', 'utf8');
}

// 中间件
app.use(bodyParser.json());

// 注册路由
app.post('/signup', (req, res) => {
  const { username, password } = req.body;
  
  if (!username || !password) {
    return res.status(400).json({ error: '用户名和密码不能为空' });
  }

  const users = getUsers();
  
  // 检查用户是否已存在
  if (users.some(user => user.username === username)) {
    return res.status(409).json({ error: '用户名已存在' });
  }

  // 添加新用户
  users.push({ username, password });
  saveUsers(users);
  
  res.status(201).json({ message: '注册成功' });
});

// 登录路由
app.post('/login', (req, res) => {
  const { username, password } = req.body;
  
  if (!username || !password) {
    return res.status(400).json({ error: '用户名和密码不能为空' });
  }

  const users = getUsers();
  const user = users.find(u => u.username === username);
  
  if (!user) {
    return res.status(401).json({ error: '用户不存在' });
  }
  
  if (user.password !== password) {
    return res.status(401).json({ error: '密码错误' });
  }
  
  res.json({ message: '登录成功' });
});

// 辅助函数：获取用户数据
function getUsers() {
  const data = fs.readFileSync(USER_FILE, 'utf8');
  try {
    return JSON.parse(data);
  } catch (error) {
    return [];
  }
}

// 辅助函数：保存用户数据
function saveUsers(users) {
  fs.writeFileSync(USER_FILE, JSON.stringify(users, null, 2), 'utf8');
}

// 启动服务器
app.listen(PORT, () => {
  console.log(`服务器运行在 http://localhost:${PORT}`);
});