# easywork-server **Repository Path**: sachwei/easywork-server ## Basic Information - **Project Name**: easywork-server - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-30 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EasyWork Server
Node.js Version Express Version MongoDB Version License
## 📋 项目简介 **EasyWork Server** 是一个基于 Node.js + Express + MongoDB 构建的企业级工作管理系统后端服务。该项目为企业提供代码托管、项目管理、协作开发等云端软件开发协作功能,是一个功能完善、架构清晰的企业级应用框架。 ### ✨ 核心特性 - 🔐 **多重认证机制** - 支持本地登录和单点登录(SSO) - 📊 **数据管理平台** - 提供统一的RESTful API进行CRUD操作 - 📁 **文件处理服务** - 支持文件上传、下载、图片处理 - 📧 **消息通知系统** - 邮件发送、实时消息推送 - ⏰ **任务调度服务** - 支持定时任务和系统调度 - 📈 **Excel数据处理** - 数据导入导出功能 - 🛡️ **安全防护机制** - 数据加密、防重放攻击、访问控制 - 🔌 **实时通信** - 基于Socket.IO的WebSocket服务 - 🐳 **容器化部署** - 支持Docker容器化 ## 🏗️ 系统架构 项目采用经典的分层架构设计,各模块职责明确: ``` easywork-server/ ├── bin/ # 应用启动入口 │ └── index.js # HTTP服务器启动文件 (端口:9990) ├── database/ # 数据库相关 │ ├── config/ # 数据库表结构配置 │ ├── models/ # Mongoose数据模型 │ └── mongodb.js # 数据库操作封装 ├── libs/ # 第三方加密库 │ ├── encrypt/ # AES/TripleDES加密 │ ├── md5/ # MD5哈希 │ └── rsa/ # RSA加密 ├── public/works/ # 前端静态资源 ├── routes/ # 路由模块 │ ├── common/ # 通用功能(数据、文件) │ ├── excel/ # Excel处理 │ ├── login/ # 用户认证 │ ├── message/ # 消息通知 │ ├── schedule/ # 任务调度 │ └── socket/ # WebSocket服务 ├── service/ # 业务服务层 │ ├── export/ # 数据导出服务 │ ├── import/ # 数据导入服务 │ └── schedule/ # 调度服务 ├── utils/ # 工具类 │ ├── encryptUtil.js # 加密工具 │ ├── exceljs.js # Excel处理 │ └── security.js # 安全工具 ├── views/ # 视图模板 ├── app.js # Express应用主入口 ├── Dockerfile # Docker构建文件 └── package.json # 项目配置 ``` ## 🚀 快速开始 ### 环境要求 - **Node.js**: 18.x 或更高版本 - **MongoDB**: 5.x 或更高版本 - **npm**: 8.x 或更高版本 ### 安装步骤 1. **克隆项目** ```bash git clone cd easywork-server ``` 2. **安装依赖** ```bash npm install ``` 3. **配置数据库** - 确保MongoDB服务正在运行 - 默认连接地址:`mongodb://127.0.0.1:27017/easywork` - 如需修改,请编辑 `app.js` 中的数据库连接配置 4. **启动服务** ```bash npm start # 或 node ./bin/index.js ``` 5. **验证启动** - 服务启动后会监听端口 **9990** - 访问 `http://localhost:9990` 验证服务状态 ### Docker 部署 ```bash # 构建镜像 docker build -t easywork-server . # 运行容器 docker run -p 9990:9990 easywork-server ``` ## 📚 API 文档 ### 认证接口 | 接口 | 方法 | 描述 | 参数 | |------|------|------|------| | `/works/login` | POST | 用户登录 | `username`, `password` | | `/works/loginByToken` | POST | Token登录 | `accessToken` | | `/works/logout` | GET | 用户登出 | - | | `/works/getMenuList` | GET | 获取用户菜单 | - | ### 数据操作接口 | 接口 | 方法 | 描述 | |------|------|----- | | `/works/data/save/:tableName` | POST | 保存数据 | | `/works/data/find/:tableName` | POST | 查询数据 | | `/works/data/findPage/:tableName` | POST | 分页查询 | | `/works/data/update/:tableName/:id` | POST | 更新数据 | | `/works/data/delete/:tableName/:id` | GET | 删除数据 | ### 文件操作接口 | 接口 | 方法 | 描述 | |------|------|----- | | `/works/file/upload` | POST | 文件上传 | | `/works/data/find/imgs/:id` | GET | 获取图片 | ### Excel处理接口 | 接口 | 方法 | 描述 | |------|------|----- | | `/works/excel/export` | POST | 数据导出 | | `/works/excel/import` | POST | 数据导入 | ## 🛡️ 安全机制 ### 认证与授权 - **Cookie-based认证**: 用户登录后信息存储在Cookie中 - **访问控制**: 基于白名单的路由权限控制 - **会话管理**: 2小时会话超时机制 ### 数据安全 - **数据加密**: 支持AES、RSA、TripleDES多种加密算法 - **防重放攻击**: 基于MD5和时间戳的请求验证 - **参数加密**: 敏感数据传输加密保护 ### 请求安全 - **请求验证**: 自定义CM(Content-MD5)验证机制 - **时间窗口**: 请求时间窗口验证,防止重放攻击 - **请求缓存**: 自动清理过期请求,防止内存泄漏 ## 🔧 核心技术栈 ### 后端框架 - **Express.js 4.16**: Web应用框架 - **Node.js 18.x**: JavaScript运行时 - **Socket.IO 2.3**: 实时双向通信 ### 数据存储 - **MongoDB 5.x**: NoSQL数据库 - **Mongoose 5.8**: MongoDB对象建模工具 ### 安全加密 - **Crypto-JS 3.1**: JavaScript加密库 - **Passport**: 用户认证中间件 - **自定义RSA/MD5**: 多重加密保护 ### 工具库 - **ExcelJS 1.15**: Excel文件处理 - **Multer 1.4**: 文件上传中间件 - **NodeMailer 4.6**: 邮件发送 - **Node-Schedule 1.3**: 定时任务调度 - **Axios 0.19**: HTTP客户端 ## 🌟 核心功能模块 ### 1. 用户认证系统 (`routes/login/`) - 支持本地用户名密码登录 - 支持单点登录(SSO)集成 - 用户角色和权限管理 - 菜单权限动态加载 ### 2. 数据管理服务 (`routes/common/data.js`) - 统一的RESTful CRUD API - 支持复杂条件查询和聚合查询 - 自动分页和排序功能 - 动态表结构配置支持 ### 3. 文件处理服务 (`routes/common/file.js`) - 文件上传和下载 - 图片处理和存储 - 文件类型验证和安全检查 ### 4. 消息通知系统 (`routes/message/`) - 邮件发送功能 - 系统消息通知 - 实时消息推送 - 消息模板管理 ### 5. 任务调度服务 (`routes/schedule/`) - 定时任务管理和执行 - 部署检查自动化 - 系统维护任务 ### 6. Excel数据处理 (`routes/excel/`) - Excel文件导入导出 - 数据格式验证 - 批量数据处理 ## 📊 业务响应格式 系统采用统一的API响应格式: ```javascript // 成功响应 { "code": 200, "msg": "成功", "data": { /* 业务数据 */ }, "time": 1640995200000 } // 错误响应 { "code": 500, "msg": "错误信息", "data": null, "time": 1640995200000 } ``` ## 🔧 开发指南 ### 添加新的API接口 1. 在相应的路由文件中添加路由定义 2. 使用 `BizResult` 类统一响应格式 3. 在 `routes/router.js` 中配置访问权限 4. 必要时在 `database/config/table.json` 中添加数据模型 ### 数据库操作 使用封装的 `MongoDB` 类进行数据操作: ```javascript const MongoDB = require('../database/mongodb'); // 保存数据 MongoDB.save('tableName', data, callback); // 查询数据 MongoDB.find('tableName', conditions, fields, sort, callback); // 更新数据 MongoDB.update('tableName', conditions, updateData, callback); ``` ### 安全注意事项 - 敏感数据传输必须加密 - 新增的API接口需要在路由权限中配置 - 用户输入数据需要进行验证和过滤 - 定期检查和更新依赖包版本 ## 🚀 部署说明 ### 生产环境部署 1. **环境准备** - 安装 Node.js 18.x - 安装并配置 MongoDB - 配置反向代理 (Nginx推荐) 2. **应用配置** - 修改数据库连接配置 - 配置生产环境的加密密钥 - 设置适当的日志级别 3. **进程管理** ```bash # 使用 PM2 管理进程 npm install -g pm2 pm2 start bin/index.js --name easywork-server pm2 startup pm2 save ``` ### 性能优化建议 - 启用 MongoDB 索引优化查询性能 - 使用 Redis 缓存热点数据 - 配置负载均衡器分发请求 - 定期清理日志和临时文件 ## 🤝 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ### 代码规范 - 遵循 JavaScript Standard Style - 添加适当的注释和文档 - 保持代码的可读性和可维护性 - 编写必要的单元测试 ## 📝 更新日志 ### v0.0.0 (Current) - 初始版本发布 - 基础功能模块实现 - 用户认证和数据管理 - 文件处理和消息通知 - 任务调度和Excel处理 ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 🆘 问题反馈 如果您在使用过程中遇到问题,请通过以下方式反馈: - 提交 [Issue](../../issues) - 发送邮件至项目维护者 - 在项目讨论区发起讨论 ## 👥 维护者 - **项目负责人**: [请填写] - **技术负责人**: [请填写] ---

⭐ 如果这个项目对你有帮助,请给它一个星标!

📧 联系我们:[project-email]

特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)