# 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
## 📋 项目简介
**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/)