# 银行管理后台系统 一个基于 Node.js 和 Express 的现代化银行管理后台系统,提供完整的用户管理、账户管理、交易管理等功能。 ## 🚀 功能特性 ### 核心功能 - **用户管理**: 用户注册、登录、权限管理 - **账户管理**: 账户创建、状态管理、余额查询 - **交易管理**: 存款、取款、转账、交易记录查询 - **权限控制**: 基于角色的访问控制(RBAC) - **安全防护**: JWT认证、密码加密、请求限流 ### 技术特性 - **RESTful API**: 标准化的API设计 - **数据库ORM**: Sequelize ORM支持 - **API文档**: Swagger自动生成文档 - **日志系统**: Winston日志管理 - **安全中间件**: 多层安全防护 - **错误处理**: 完善的错误处理机制 ## 🛠 技术栈 - **运行环境**: Node.js 16+ - **Web框架**: Express.js 4.18+ - **数据库**: MySQL 8.0+ - **ORM**: Sequelize 6.35+ - **认证**: JWT (jsonwebtoken) - **密码加密**: bcryptjs - **API文档**: Swagger - **日志**: Winston - **安全**: Helmet, CORS, Rate Limiting ## 📦 安装部署 ### 环境要求 - Node.js 16.0+ - MySQL 8.0+ - npm 8.0+ ### 安装步骤 1. **克隆项目** ```bash git clone cd bank-backend ``` 2. **安装依赖** ```bash npm install ``` 3. **环境配置** ```bash cp env.example .env # 编辑 .env 文件,配置数据库连接等信息 ``` 4. **数据库初始化** 手动或脚本方式,避免自动建表: ```powershell # PowerShell(推荐,自动生成管理员bcrypt哈希) cd scripts ./setup-bank-db.ps1 -AdminPlain 'Admin123456' ``` 或在数据库手工执行: ```sql -- 1) 执行建表 -- scripts/create-bank-schema.sql -- 2) 执行测试数据(将 REPLACE_ADMIN_BCRYPT 替换为真实 bcrypt 哈希) -- scripts/seed-bank-demo.sql ``` 5. **启动服务** ```bash # 开发环境 npm run dev # 生产环境 npm start ``` ## ⚙️ 环境配置 创建 `.env` 文件并配置以下环境变量: ```env # 服务器配置 PORT=5351 NODE_ENV=development # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_NAME=bank_management DB_USER=root DB_PASSWORD=your_password DB_DIALECT=mysql # JWT配置 JWT_SECRET=your_jwt_secret_key_here JWT_EXPIRES_IN=24h # 安全配置 BCRYPT_ROUNDS=10 RATE_LIMIT_WINDOW_MS=900000 RATE_LIMIT_MAX_REQUESTS=100 # 银行系统配置 BANK_CODE=001 BANK_NAME=示例银行 CURRENCY=CNY TIMEZONE=Asia/Shanghai ``` ## 📚 API文档 启动服务后,访问以下地址查看API文档: - 开发环境: http://localhost:5351/api-docs - 生产环境: https://your-domain.com/api-docs ## 🗄️ 数据库设计 ### 主要数据表 #### 用户表 (users) - 用户基本信息 - 身份认证信息 - 角色关联 #### 角色表 (roles) - 角色定义 - 权限级别 - 系统角色标识 #### 账户表 (accounts) - 账户基本信息 - 余额管理 - 账户状态 #### 交易记录表 (transactions) - 交易详情 - 余额变化 - 交易状态 ## 🔐 安全特性 ### 认证与授权 - JWT令牌认证 - 基于角色的权限控制 - 会话超时管理 - 登录失败锁定 ### 数据安全 - 密码bcrypt加密 - SQL注入防护 - XSS攻击防护 - 请求频率限制 ### 传输安全 - HTTPS支持 - CORS配置 - 安全头部设置 - 输入数据验证 ## 📊 系统监控 ### 健康检查 ```bash curl http://localhost:5351/health ``` ### 日志查看 ```bash # 查看错误日志 tail -f logs/error.log # 查看所有日志 tail -f logs/combined.log ``` ## 🧪 测试 ```bash # 运行测试 npm test # 测试覆盖率 npm run test:coverage # 监听模式 npm run test:watch ``` ## 📝 开发指南 ### 项目结构 ``` bank-backend/ ├── config/ # 配置文件 ├── controllers/ # 控制器 ├── models/ # 数据模型 ├── routes/ # 路由定义 ├── middleware/ # 中间件 ├── utils/ # 工具类 ├── services/ # 业务服务 ├── migrations/ # 数据库迁移 ├── seeds/ # 种子数据 ├── logs/ # 日志文件 ├── uploads/ # 上传文件 └── scripts/ # 脚本文件 ``` ### 代码规范 - 使用ESLint进行代码检查 - 遵循RESTful API设计规范 - 统一的错误处理格式 - 完整的API文档注释 ### 开发命令 ```bash # 代码检查 npm run lint # 代码修复 npm run lint:fix # 数据库连接测试 npm run test-connection # 清理临时文件 npm run clean ``` ## 🚀 部署指南 ### Docker部署 ```bash # 构建镜像 docker build -t bank-backend . # 运行容器 docker run -p 5351:5351 bank-backend ``` ### PM2部署 ```bash # 安装PM2 npm install -g pm2 # 启动应用 pm2 start server.js --name bank-backend # 查看状态 pm2 status ``` ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 📞 联系方式 - 项目维护者: 银行开发团队 - 邮箱: dev@bank.com - 项目地址: https://github.com/bank-management/bank-backend ## 🙏 致谢 感谢所有为这个项目做出贡献的开发者和开源社区。 --- **注意**: 这是一个演示项目,请勿在生产环境中使用默认的密码和密钥。