# 结伴客后端服务

基于 Node.js + Express + MongoDB 的后端 API 服务。

## 功能特性

- ✅ 用户认证系统（JWT）
- ✅ 微信登录集成
- ✅ RESTful API 设计
- ✅ 数据验证和清洗
- ✅ 错误处理中间件
- ✅ 请求频率限制
- ✅ 安全防护（CORS, Helmet, XSS防护）
- ✅ MongoDB 数据库集成
- ✅ 环境配置管理

## 快速开始

### 环境要求

- Node.js 16+
- MongoDB 4.4+
- npm 或 yarn

### 安装依赖

```bash
cd backend
npm install
```

### 环境配置

1. 复制环境变量文件：
```bash
cp .env.example .env
```

2. 编辑 `.env` 文件，配置你的环境变量：
```env
MONGODB_URI=mongodb://mongodb.jiebanke.com:27017/jiebanke
JWT_SECRET=your-super-secret-jwt-key
```

### 启动开发服务器

```bash
# 开发模式（带热重载）
npm run dev

# 生产模式
npm start

# 调试模式
npm run debug
```

### 测试

```bash
# 运行测试
npm test

# 运行测试并生成覆盖率报告
npm run test:coverage

# 运行端到端测试
npm run test:e2e
```

## API 文档

### 认证接口

#### 用户注册
```
POST /api/v1/auth/register
Content-Type: application/json

{
  "username": "testuser",
  "password": "password123",
  "nickname": "测试用户",
  "email": "test@jiebanke.com",
  "phone": "13800138000"
}
```

#### 用户登录
```
POST /api/v1/auth/login
Content-Type: application/json

{
  "username": "testuser",
  "password": "password123"
}
```

#### 获取当前用户信息
```
GET /api/v1/auth/me
Authorization: Bearer <token>
```

#### 微信登录
```
POST /api/v1/auth/wechat-login
Content-Type: application/json

{
  "code": "微信授权码",
  "userInfo": {
    "nickName": "微信用户",
    "avatarUrl": "https://...",
    "gender": 1
  }
}
```

## 项目结构

```
backend/
├── src/
│   ├── controllers/     # 控制器层
│   ├── models/         # 数据模型
│   ├── routes/         # 路由定义
│   ├── middleware/     # 中间件
│   ├── utils/          # 工具函数
│   ├── app.js          # Express应用配置
│   └── server.js       # 服务器入口
├── tests/              # 测试文件
├── .env.example        # 环境变量示例
├── package.json
└── README.md
```

## 数据库设计

### 用户表 (users)
- 用户基本信息
- 认证信息
- 统计信息
- 第三方登录信息

## 开发指南

### 添加新功能

1. 创建数据模型 (`src/models/`)
2. 创建控制器 (`src/controllers/`)
3. 创建路由 (`src/routes/`)
4. 在 `app.js` 中注册路由

### 代码规范

- 使用 ESLint 进行代码检查
- 遵循 JavaScript Standard Style
- 使用 async/await 处理异步操作
- 使用错误处理中间件

## 部署

### Docker 部署

```bash
# 构建镜像
docker build -t jiebanke-backend .

# 运行容器
docker run -p 3000:3000 --env-file .env jiebanke-backend
```

### PM2 部署

```bash
npm install -g pm2
pm2 start ecosystem.config.js
```

## 故障排除

### 常见问题

1. **MongoDB 连接失败**
   - 检查 MongoDB 服务是否运行
   - 检查连接字符串是否正确

2. **JWT 验证失败**
   - 检查 JWT_SECRET 环境变量

3. **CORS 错误**
   - 检查前端域名是否在 CORS 白名单中

## 技术支持

如有问题，请查看日志文件或联系开发团队。

## 许可证

MIT License