一个基于Spring Boot和React的现代化BIM(建筑信息模型)平台,支持3D模型上传、在线查看、项目管理和团队协作。
- 🏗️ BIM项目管理 - 创建、编辑、删除和组织BIM项目
- 📂 3D模型管理 - 支持多种3D模型格式的上传和管理
- 👀 在线3D查看 - 基于Autodesk Viewer的高性能3D模型查看
- 👥 用户权限管理 - 完整的用户认证和基于角色的权限控制
- 🔗 项目分享 - 生成分享链接,支持公开和私有分享
- 🏷️ 标签系统 - 灵活的标签管理和分类功能
- 🌐 多语言支持 - 支持中文和英文界面
- 📱 响应式设计 - 适配各种设备和屏幕尺寸
- ⚡ 高性能存储 - 支持MinIO和华为云OBS等多种存储后端
- 🔐 安全认证 - JWT令牌认证和Spring Security集成
- 📊 数据审计 - 完整的操作日志和数据变更跟踪
- 🐳 容器化部署 - Docker和Docker Compose支持
- 📖 API文档 - 集成Swagger自动生成API文档
- Java 8 - 编程语言
- Spring Boot 2.3.4 - 应用框架
- Spring Security - 安全认证
- Spring Data JPA - 数据访问层
- Hibernate Envers - 数据审计
- MySQL - 关系型数据库
- Druid - 数据库连接池
- JWT - 身份认证令牌
- Swagger - API文档生成
- Maven - 构建工具
- React 16.13.1 - 前端框架
- Ant Design 4.6.6 - UI组件库
- React Router - 路由管理
- Axios - HTTP客户端
- i18next - 国际化框架
- Autodesk Viewer - 3D模型查看器
- Docker & Docker Compose - 容器化部署
- Envoy Proxy - 反向代理和负载均衡
- MinIO - 对象存储服务
- 华为云OBS - 云存储服务(可选)
graph TB
subgraph "Client Layer"
Web[Web Browser]
Mobile[Mobile Device]
end
subgraph "Proxy Layer"
Envoy[Envoy Proxy<br/>Load Balancer]
end
subgraph "Application Layer"
Frontend[React Frontend<br/>Ant Design + Autodesk Viewer]
Backend[Spring Boot Backend<br/>REST API + Security]
end
subgraph "Data Layer"
MySQL[(MySQL Database<br/>Projects, Users, Models)]
MinIO[(MinIO Object Storage<br/>3D Model Files)]
Logs[Log Files<br/>Application Logs]
end
subgraph "External Services"
Email[SMTP Server<br/>Email Service]
OBS[Huawei Cloud OBS<br/>Alternative Storage]
end
Web --> Envoy
Mobile --> Envoy
Envoy --> Frontend
Envoy --> Backend
Frontend --> Backend
Backend --> MySQL
Backend --> MinIO
Backend --> Email
Backend --> OBS
Backend --> Logs
classDef clientClass fill:#e1f5fe
classDef proxyClass fill:#f3e5f5
classDef appClass fill:#e8f5e8
classDef dataClass fill:#fff3e0
classDef externalClass fill:#fce4ec
class Web,Mobile clientClass
class Envoy proxyClass
class Frontend,Backend appClass
class MySQL,MinIO,Logs dataClass
class Email,OBS externalClass
graph TB
subgraph "Frontend Technology Stack"
React[React 16.13.1]
AntD[Ant Design 4.6.6]
Router[React Router]
I18n[i18next]
Axios[Axios HTTP Client]
Viewer[Autodesk Viewer SDK]
end
subgraph "Backend Technology Stack"
SpringBoot[Spring Boot 2.3.4]
Security[Spring Security + JWT]
JPA[Spring Data JPA]
Hibernate[Hibernate + Envers]
Swagger[Swagger API Docs]
Validation[Bean Validation]
end
subgraph "Database & Storage"
MySQL[MySQL 5.7+<br/>Druid Connection Pool]
MinIO[MinIO Object Storage]
Redis[Session Storage<br/>Spring Session JDBC]
end
subgraph "Infrastructure"
Docker[Docker Containers]
Compose[Docker Compose]
Envoy[Envoy Proxy]
Maven[Maven Build Tool]
end
React --> AntD
React --> Router
React --> I18n
React --> Axios
React --> Viewer
SpringBoot --> Security
SpringBoot --> JPA
SpringBoot --> Hibernate
SpringBoot --> Swagger
SpringBoot --> Validation
JPA --> MySQL
SpringBoot --> MinIO
Security --> Redis
Docker --> SpringBoot
Docker --> MySQL
Docker --> MinIO
Compose --> Docker
Envoy --> SpringBoot
Maven --> SpringBoot
classDef frontendClass fill:#e3f2fd
classDef backendClass fill:#e8f5e8
classDef dataClass fill:#fff3e0
classDef infraClass fill:#f3e5f5
class React,AntD,Router,I18n,Axios,Viewer frontendClass
class SpringBoot,Security,JPA,Hibernate,Swagger,Validation backendClass
class MySQL,MinIO,Redis dataClass
class Docker,Compose,Envoy,Maven infraClass
sequenceDiagram
participant User as 用户
participant Frontend as React Frontend
participant Envoy as Envoy Proxy
participant Backend as Spring Boot API
participant MySQL as MySQL DB
participant MinIO as MinIO Storage
participant Viewer as Autodesk Viewer
Note over User,Viewer: BIM模型上传和查看流程
User->>Frontend: 1. 登录系统
Frontend->>Envoy: 2. 认证请求
Envoy->>Backend: 3. 转发认证
Backend->>MySQL: 4. 验证用户
MySQL-->>Backend: 5. 用户信息
Backend-->>Frontend: 6. JWT Token
User->>Frontend: 7. 创建BIM项目
Frontend->>Backend: 8. 项目创建请求
Backend->>MySQL: 9. 保存项目信息
MySQL-->>Backend: 10. 项目ID
Backend-->>Frontend: 11. 项目创建成功
User->>Frontend: 12. 上传3D模型
Frontend->>Backend: 13. 获取上传URL
Backend->>MinIO: 14. 生成预签名URL
MinIO-->>Backend: 15. 上传URL
Backend-->>Frontend: 16. 返回上传URL
Frontend->>MinIO: 17. 直接上传文件
MinIO-->>Frontend: 18. 上传完成
Frontend->>Backend: 19. 更新模型信息
Backend->>MySQL: 20. 保存模型元数据
User->>Frontend: 21. 查看3D模型
Frontend->>Backend: 22. 获取模型列表
Backend->>MySQL: 23. 查询模型信息
MySQL-->>Backend: 24. 模型元数据
Backend-->>Frontend: 25. 模型信息
Frontend->>Viewer: 26. 初始化3D查看器
Viewer->>MinIO: 27. 加载模型文件
MinIO-->>Viewer: 28. 模型数据
Viewer-->>User: 29. 显示3D模型
- Java: 8+
- Node.js: 12.18.4+
- MySQL: 5.7+
- Docker: 19.03+
- Docker Compose: 1.25+
git clone <repository-url>
cd my-bim创建 .env 文件:
# 数据库配置
MYSQL_ROOT_PASSWORD=your_mysql_password
MYSQL_TZ=Asia/Shanghai
# MinIO配置
MINIO_ACCESS_KEY=your_minio_access_key
MINIO_SECRET_KEY=your_minio_secret_key
MINIO_EXTERNAL_ENDPOINT=http://localhost:9000# 构建并启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps- 前端应用: http://localhost:8081
- API文档: http://localhost:8081/swagger-ui.html
- MinIO控制台: http://localhost:9001
- 数据库监控: http://localhost:8081/druid
# 启动MySQL和MinIO服务
docker-compose up mysql minio -d
# 在IDE中启动Spring Boot应用
# 或使用Maven命令
./mvnw spring-boot:runcd src/main/frontend
# 安装依赖
npm install
# 启动开发服务器
npm start访问 http://localhost:3000 进行前端开发。
my-bim/
├── src/main/
│ ├── java/com/zjjqtech/bimplatform/ # Java源代码
│ │ ├── controller/ # REST控制器
│ │ ├── service/ # 业务逻辑层
│ │ ├── model/ # 数据模型
│ │ ├── repository/ # 数据访问层
│ │ └── security/ # 安全配置
│ ├── resources/ # 配置文件
│ └── frontend/ # React前端应用
│ ├── src/
│ │ ├── components/ # React组件
│ │ ├── pages/ # 页面组件
│ │ └── locales/ # 国际化文件
│ └── public/
│ └── sdk/ # Autodesk Viewer SDK
├── proxy/ # Envoy代理配置
├── docker-compose.yaml # 容器编排配置
└── Dockerfile # 应用镜像构建文件
- 用户注册和登录
- 忘记密码和重置密码
- 基于角色的权限控制
- 用户个人信息管理
- 创建和编辑BIM项目
- 项目权限管理(所有者、协作者)
- 项目标签和分类
- 项目搜索和筛选
- 多格式3D模型上传
- 模型文件管理
- 主模型设置
- 模型重命名和删除
- 高性能3D模型渲染
- 多模型同时加载
- 视角控制和导航
- 构件选择和高亮
- 截图功能
- 生成项目分享链接
- 支持公开和私有分享
- 分享权限控制
在 application.yml 中配置MySQL连接:
spring:
datasource.druid:
url: jdbc:mysql://mysql:3306/bim?serverTimezone=Asia/Shanghai
username: root
password: ${MYSQL_ROOT_PASSWORD}支持MinIO和华为云OBS:
s3:
endpoint: http://minio:9000
accessKeyId: ${MINIO_ACCESS_KEY}
accessKeySecret: ${MINIO_SECRET_KEY}
bucketName: bim用于密码重置功能:
spring:
mail:
host: smtp.qq.com
username: [email protected]
password: your_email_password访问 http://localhost:8081/druid 查看数据库连接池状态和SQL执行情况。
Spring Boot Actuator提供健康检查和指标监控:
- 健康检查:
/actuator/health - 应用信息:
/actuator/info
- 开发环境:控制台输出
- 生产环境:文件日志(
./logs/application.log) - 支持日志轮转和压缩
- 修改
application.yml中的生产配置 - 设置环境变量
- 使用
-Pprod配置文件构建:./mvnw clean package -Pprod
- 部署到服务器
使用Envoy代理实现负载均衡和反向代理,配置文件位于 proxy/envoy.yaml。
./mvnw test./mvnw verify在开发模式下,可以访问 http://localhost:8081/swagger-ui.html 查看完整的API文档。
主要API端点:
/api/bim-project- 项目管理/api/user- 用户管理/api/tag- 标签管理/api/message- 消息管理
- Fork项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建Pull Request
本项目采用 MIT License 开源许可证。
如有问题或建议,请通过以下方式联系:
- 创建 Issue
- 发送邮件至项目维护者
注意: 本项目仅用于学习和研究目的。在生产环境中使用前,请确保进行充分的安全性评估和测试。