# VR-panorama **Repository Path**: hszzz/VR-panorama ## Basic Information - **Project Name**: VR-panorama - **Description**: none - **Primary Language**: Java - **License**: MPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-30 - **Last Updated**: 2026-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VR-Panorama 全景展示Web应用 ## 项目简介 VR-Panorama是一个基于Spring Boot构建的VR全景展示Web应用,支持用户注册登录、全景图片/视频上传、作品集管理、新闻资讯等功能。 ## 技术栈 - **后端框架**: Spring Boot 4.1.0 - **JDK版本**: Java 26 - **持久层**: Spring Data JPA + MySQL - **模板引擎**: Thymeleaf - **前端资源**: 静态HTML/CSS/JS(非前后端分离) - **安全认证**: BCrypt密码加密 + Session会话管理 - **工具库**: Lombok ## 项目结构 ``` VR-Panorama/ ├── src/main/java/com/vrpano/ │ ├── config/ # 配置类 │ │ ├── WebMvcConfig.java # Web MVC配置 │ │ └── GlobalExceptionHandler.java # 全局异常处理 │ ├── controller/ # 控制器层 │ │ ├── IndexController.java # 首页控制器 │ │ ├── LoginController.java # 登录控制器 │ │ ├── RegisterController.java # 注册控制器 │ │ ├── PortfolioController.java # 作品集控制器 │ │ ├── NewsController.java # 新闻控制器 │ │ ├── VRpanoDisplayController.java # VR全景展示控制器 │ │ └── FileUploadController.java # 文件上传控制器 │ ├── dto/ # 数据传输对象 │ │ └── ApiResponse.java # API响应封装 │ ├── interceptor/ # 拦截器 │ │ └── AuthInterceptor.java # 认证拦截器 │ ├── model/ # 实体类 │ │ ├── User.java # 用户实体 │ │ ├── Portfolio.java # 作品集实体 │ │ ├── News.java # 新闻实体 │ │ └── Project.java # 项目实体 │ ├── repository/ # 数据访问层 │ │ ├── UserRepository.java │ │ ├── PortfolioRepository.java │ │ ├── NewsRepository.java │ │ └── ProjectRepository.java │ ├── service/ # 业务逻辑层 │ │ ├── AuthService.java # 认证服务 │ │ ├── PortfolioService.java # 作品集服务 │ │ ├── NewsService.java # 新闻服务 │ │ └── ProjectService.java # 项目服务 │ └── VRpanoApplication.java # 启动类 ├── src/main/resources/ │ ├── application.yaml # 应用配置 │ ├── schema.sql # 数据库表结构 │ ├── data.sql # 初始化数据 │ ├── static/ # 静态资源 │ │ ├── themes/VRpano/ # 前端主题资源 │ │ ├── uploads/ # 上传文件存储 │ │ └── js/auth-guard.js # 前端认证守卫 │ └── templates/ # Thymeleaf模板 └── pom.xml # Maven配置 ``` ## 快速开始 ### 1. 环境要求 - JDK 26+ - Maven 3.8+ - MySQL 8.0+ ### 2. 数据库配置 在MySQL中创建数据库: ```sql CREATE DATABASE vrpano DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 修改 `application.yaml` 中的数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/vrpano?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: your_username password: your_password ``` ### 3. 编译运行 ```bash # 编译项目 mvn clean package -DskipTests # 运行应用 java -jar target/VR-Panorama-0.0.1-SNAPSHOT.jar ``` 或者使用Maven直接运行: ```bash mvn spring-boot:run ``` ### 4. 访问应用 应用启动后访问:http://localhost:8080 ## 功能特性 ### 用户认证 - 用户注册(`/Register`) - 用户登录(`/Login`) - Session会话管理(1小时有效期) - 前端auth-guard.js实现页面访问控制 ### 全景展示 - VR全景列表展示(`/vrpano`) - VR全景详情页(`/vrpano/{id}`) - 图片漫游模式(`/vrpano/image/{id}`) - 视频漫游模式(`/vrpano/video/{id}`) ### 内容管理 - 作品集管理(`/portfolio`) - 新闻资讯(`/news`) - 项目管理(`/projects`) ### 文件上传 - VR图片上传(`/upload/vr-image`) - VR视频上传(`/upload/vr-video`) - 支持自动分类存储(按年月分目录) ## API接口 ### 认证接口 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/register` - 用户注册 - `GET /api/auth/logout` - 用户登出 ### 作品集接口 - `GET /api/portfolio` - 获取作品集列表 - `GET /api/portfolio/{id}` - 获取作品集详情 ### 新闻接口 - `GET /api/news` - 获取新闻列表 - `GET /api/news/{id}` - 获取新闻详情 ### 上传接口 - `POST /upload/api/image` - 上传图片 - `POST /upload/api/video` - 上传视频 ## 权限控制 系统采用Session + 拦截器实现权限控制: **公开访问路径**: - `/` - 首页 - `/Login` - 登录页 - `/Register` - 注册页 - `/static/**` - 静态资源 - `/themes/**` - 主题资源 - `/uploads/**` - 上传文件 **需要登录访问**: - `/vrpano/**` - VR全景展示 - `/portfolio/**` - 作品集 - `/news/**` - 新闻资讯 - `/upload/**` - 文件上传 ## 注意事项 1. 首次启动应用时,会自动执行 `schema.sql` 和 `data.sql` 初始化数据库 2. 上传文件默认保存在 `./uploads/` 目录下 3. Session有效期为1小时,超时需重新登录 4. 前端auth-guard.js会检查localStorage中的登录状态,与后端Session配合使用 ## 开发计划 - [ ] 添加管理员后台 - [ ] 实现作品评论功能 - [ ] 添加用户个人中心 - [ ] 支持多语言切换 - [ ] 优化全景图加载性能 - [ ] 添加数据统计分析 ## 许可证 ## 初始用户 用户:otto 密码:12345678 ## 网站模样 ### Youtube [![Youtube Video](https://picui.ogmua.cn/s1/2026/08/29/6a92a7970c6ff.webp)](https://www.youtube.com/watch?v=vEGob9jBQsI) ### Bilibili [![Bilibili Video](https://picui.ogmua.cn/s1/2026/08/29/6a92a7970c6ff.webp)](https://www.bilibili.com/video/BV1cH4r6WE2F) MIT License ## 想得到完整代码请支付 ![微信支付](1.png) ![支付宝支付](2.png) 觉得我收费不合理,自己去咨询‘唐山工业职业技术学院’那个漫游的价格。 需要联系我![微信](3.png)