# 结伴客后端开发完善指南 ## 📋 完善内容概述 本次后端开发完善主要包含以下内容: ### 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 # 数据库配置 DB_HOST=mysql.jiebanke.com 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 { host: 'nj-cdb-3pwh2kz1.sql.tencentcdb.com', port: 20784, user: 'jiebanke', password: 'aiot741$12346', database: 'jbkdata', 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 export DB_HOST=mysql.jiebanke.com 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**