2025-09-01 01:08:04 +08:00
|
|
|
|
# 结伴客后端开发完善指南
|
|
|
|
|
|
|
|
|
|
|
|
## 📋 完善内容概述
|
|
|
|
|
|
|
|
|
|
|
|
本次后端开发完善主要包含以下内容:
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 环境配置优化
|
|
|
|
|
|
- ✅ 更新环境配置文件 (`config/env.js`),移除MongoDB配置,完善MySQL配置
|
|
|
|
|
|
- ✅ 更新环境变量示例文件 (`.env.example`),添加MySQL相关配置
|
|
|
|
|
|
- ✅ 数据库配置文件 (`src/config/database.js`) 现在使用环境配置而非硬编码
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 测试数据支持
|
|
|
|
|
|
- ✅ 创建测试数据初始化脚本 (`scripts/init-test-data.js`)
|
|
|
|
|
|
- ✅ 提供标准测试账号(管理员、运营、普通用户、商家用户)
|
|
|
|
|
|
- ✅ 支持密码加密存储(bcrypt)
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 自动化测试脚本
|
|
|
|
|
|
- ✅ 创建API端点测试脚本 (`scripts/test-api-endpoints.js`)
|
|
|
|
|
|
- ✅ 创建数据库连接测试脚本 (`scripts/test-database-connection.js`)
|
|
|
|
|
|
- ✅ 支持完整的测试用例和结果统计
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 开发工具链完善
|
|
|
|
|
|
- ✅ 更新package.json脚本命令
|
|
|
|
|
|
- ✅ 提供一键测试和数据初始化功能
|
|
|
|
|
|
|
|
|
|
|
|
## 🚀 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 环境准备
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 复制环境配置文件
|
|
|
|
|
|
cp .env.example .env
|
|
|
|
|
|
|
|
|
|
|
|
# 安装依赖
|
|
|
|
|
|
npm install
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 数据库配置
|
|
|
|
|
|
编辑 `.env` 文件,配置MySQL数据库连接:
|
|
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
|
# 数据库配置
|
2025-09-01 03:32:45 +08:00
|
|
|
|
DB_HOST=mysql.jiebanke.com
|
2025-09-01 01:08:04 +08:00
|
|
|
|
DB_PORT=3306
|
|
|
|
|
|
DB_USER=root
|
|
|
|
|
|
DB_PASSWORD=your-mysql-password
|
|
|
|
|
|
DB_NAME=jiebandata
|
|
|
|
|
|
|
|
|
|
|
|
# 连接池配置
|
|
|
|
|
|
DB_CONNECTION_LIMIT=10
|
|
|
|
|
|
DB_CHARSET=utf8mb4
|
|
|
|
|
|
DB_TIMEZONE=+08:00
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 开发命令
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 启动开发服务器
|
|
|
|
|
|
npm run dev
|
|
|
|
|
|
|
|
|
|
|
|
# 测试数据库连接
|
|
|
|
|
|
npm run test-db
|
|
|
|
|
|
|
|
|
|
|
|
# 初始化测试数据
|
|
|
|
|
|
npm run init-test-data
|
|
|
|
|
|
|
|
|
|
|
|
# 测试API端点
|
|
|
|
|
|
npm run test-api
|
|
|
|
|
|
|
|
|
|
|
|
# 运行单元测试
|
|
|
|
|
|
npm test
|
|
|
|
|
|
|
|
|
|
|
|
# 代码检查
|
|
|
|
|
|
npm run lint
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 📊 测试账号
|
|
|
|
|
|
|
|
|
|
|
|
初始化后会创建以下测试账号:
|
|
|
|
|
|
|
|
|
|
|
|
| 角色 | 用户名 | 密码 | 描述 |
|
|
|
|
|
|
|------|--------|------|------|
|
|
|
|
|
|
| 超级管理员 | admin | admin123 | 系统最高权限 |
|
|
|
|
|
|
| 运营经理 | manager | manager123 | 日常运营管理 |
|
|
|
|
|
|
| 普通用户 | user1 | user123 | 旅行爱好者 |
|
|
|
|
|
|
| 商家用户 | merchant1 | merchant123 | 农家乐老板 |
|
|
|
|
|
|
|
|
|
|
|
|
## 🔧 API测试
|
|
|
|
|
|
|
|
|
|
|
|
API测试脚本会自动测试以下接口:
|
|
|
|
|
|
|
|
|
|
|
|
### 管理员接口
|
|
|
|
|
|
- ✅ POST `/api/v1/admin/login` - 管理员登录
|
|
|
|
|
|
- ✅ GET `/api/v1/admin/profile` - 获取管理员信息
|
|
|
|
|
|
- ✅ GET `/api/v1/admin/list` - 获取管理员列表
|
|
|
|
|
|
|
|
|
|
|
|
### 用户接口
|
|
|
|
|
|
- ✅ POST `/api/v1/auth/login` - 用户登录
|
|
|
|
|
|
- ✅ GET `/api/v1/users/profile` - 获取用户信息
|
|
|
|
|
|
|
|
|
|
|
|
### 系统接口
|
|
|
|
|
|
- ✅ GET `/health` - 健康检查
|
|
|
|
|
|
- ✅ GET `/system-stats` - 系统统计
|
|
|
|
|
|
|
|
|
|
|
|
## 🗄️ 数据库配置
|
|
|
|
|
|
|
|
|
|
|
|
### 开发环境
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
{
|
|
|
|
|
|
host: '192.168.0.240',
|
|
|
|
|
|
port: 3306,
|
|
|
|
|
|
user: 'root',
|
|
|
|
|
|
password: 'aiotAiot123!',
|
|
|
|
|
|
database: 'jiebandata',
|
|
|
|
|
|
connectionLimit: 10
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 测试环境
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
{
|
|
|
|
|
|
host: '192.168.0.240',
|
|
|
|
|
|
port: 3306,
|
|
|
|
|
|
user: 'root',
|
|
|
|
|
|
password: 'aiotAiot123!',
|
|
|
|
|
|
database: 'jiebandata_test',
|
|
|
|
|
|
connectionLimit: 5
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 生产环境
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
{
|
2025-09-08 18:10:41 +08:00
|
|
|
|
host: 'nj-cdb-3pwh2kz1.sql.tencentcdb.com',
|
|
|
|
|
|
port: 20784,
|
|
|
|
|
|
user: 'jiebanke',
|
|
|
|
|
|
password: 'aiot741$12346',
|
|
|
|
|
|
database: 'jbkdata',
|
2025-09-01 01:08:04 +08:00
|
|
|
|
connectionLimit: 20
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## ⚡ 生产环境连接说明
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 注意事项
|
|
|
|
|
|
1. **谨慎操作**: 直接连接生产数据库,所有操作都会影响真实数据
|
|
|
|
|
|
2. **备份优先**: 在执行任何修改操作前,建议先备份数据
|
|
|
|
|
|
3. **权限控制**: 确保只有授权人员可以访问生产环境
|
|
|
|
|
|
4. **监控日志**: 密切监控数据库操作日志,及时发现异常
|
|
|
|
|
|
5. **连接限制**: 生产环境连接数限制为20,避免过度消耗资源
|
|
|
|
|
|
|
|
|
|
|
|
### 安全建议
|
|
|
|
|
|
- 使用VPN连接生产环境
|
|
|
|
|
|
- 启用SSL加密连接
|
|
|
|
|
|
- 定期更换密码
|
|
|
|
|
|
- 实施IP白名单限制
|
|
|
|
|
|
- 启用数据库审计功能
|
|
|
|
|
|
|
|
|
|
|
|
### 连接问题排查
|
|
|
|
|
|
如果遇到连接问题,请检查:
|
|
|
|
|
|
|
|
|
|
|
|
1. **密码验证**: 确认生产服务器MySQL的root密码是否为'Aiot123'
|
|
|
|
|
|
2. **权限配置**: 检查MySQL用户权限设置,确保允许从当前IP连接
|
|
|
|
|
|
3. **防火墙**: 确认服务器防火墙已开放9527端口
|
|
|
|
|
|
4. **网络连通性**: 使用telnet或ping测试网络连接
|
|
|
|
|
|
|
|
|
|
|
|
### 当前连接状态
|
|
|
|
|
|
- ❌ 生产服务器(129.211.213.226:9527): 权限被拒绝(ER_ACCESS_DENIED_ERROR)
|
|
|
|
|
|
- ❌ 开发服务器(192.168.0.240:3306): 连接超时(ETIMEDOUT)
|
|
|
|
|
|
|
|
|
|
|
|
### 本地开发解决方案
|
|
|
|
|
|
推荐使用Docker本地MySQL进行开发:
|
|
|
|
|
|
|
|
|
|
|
|
1. **启动本地MySQL容器**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd /Users/ainongkeji/code/vue/jiebanke/backend
|
|
|
|
|
|
docker-compose up -d mysql
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
2. **配置本地环境变量**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 使用本地Docker MySQL
|
2025-09-01 03:32:45 +08:00
|
|
|
|
export DB_HOST=mysql.jiebanke.com
|
2025-09-01 01:08:04 +08:00
|
|
|
|
export DB_PORT=3306
|
|
|
|
|
|
export DB_PASSWORD=rootpassword
|
|
|
|
|
|
export DB_DATABASE=jiebanke_dev
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
3. **初始化数据库**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npm run db:reset # 重置并初始化数据库
|
|
|
|
|
|
npm run db:seed # 填充测试数据
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 生产环境连接说明
|
|
|
|
|
|
如需连接生产环境,请联系运维团队:
|
|
|
|
|
|
- 确认生产服务器MySQL root密码
|
|
|
|
|
|
- 检查IP白名单配置
|
|
|
|
|
|
- 验证网络连通性
|
|
|
|
|
|
- 确认防火墙规则
|
|
|
|
|
|
|
|
|
|
|
|
### 紧急开发方案
|
|
|
|
|
|
如果所有远程服务器都无法连接,可以使用SQLite进行临时开发:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
export DB_DIALECT=sqlite
|
|
|
|
|
|
export DB_STORAGE=./database.sqlite
|
|
|
|
|
|
npm run dev
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 📝 开发规范
|
|
|
|
|
|
|
|
|
|
|
|
### 代码风格
|
|
|
|
|
|
- 使用ESLint进行代码检查
|
|
|
|
|
|
- 遵循JavaScript标准风格
|
|
|
|
|
|
- 使用async/await处理异步操作
|
|
|
|
|
|
|
|
|
|
|
|
### 安全规范
|
|
|
|
|
|
- 密码使用bcrypt加密存储
|
|
|
|
|
|
- 使用环境变量存储敏感信息
|
|
|
|
|
|
- 实施SQL注入防护
|
|
|
|
|
|
- 启用CORS和HTTPS
|
|
|
|
|
|
|
|
|
|
|
|
### 日志规范
|
|
|
|
|
|
- 开发环境使用详细日志
|
|
|
|
|
|
- 生产环境使用合并日志
|
|
|
|
|
|
- 记录关键操作和错误信息
|
|
|
|
|
|
|
|
|
|
|
|
## 🐛 常见问题
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 数据库连接失败
|
|
|
|
|
|
A: 检查MySQL服务是否启动,配置是否正确
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 测试数据初始化失败
|
|
|
|
|
|
A: 确保数据库表结构已创建,可先运行迁移脚本
|
|
|
|
|
|
|
|
|
|
|
|
### Q: API测试失败
|
|
|
|
|
|
A: 确认后端服务已启动,检查网络连接
|
|
|
|
|
|
|
|
|
|
|
|
### Q: 权限不足
|
|
|
|
|
|
A: 检查数据库用户权限,确认有足够的操作权限
|
|
|
|
|
|
|
|
|
|
|
|
## 📞 技术支持
|
|
|
|
|
|
|
|
|
|
|
|
如有问题请联系开发团队或查看详细文档。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
**最后更新: 2024年**
|
|
|
|
|
|
**版本: 1.0.0**
|