GameVerse
这是一个从零手写的全栈项目,集成了用户系统、积分博弈、站内邮件、实时通知、排行榜竞技等完整功能链路。
在线体验:project.liferoad.cloud
github代码库: github
功能总览
👤 用户系统
- 注册 / 登录 / 注销
- JWT 令牌鉴权 + 自动续期
- 路由守卫拦截未登录访问
- 修改密码
🎮 游戏化积分系统
- 积分抽奖转盘 — 消耗 20 积分抽一次,基于权重概率算法,期望值 18
- 剪刀石头布 — 全押模式,赢了翻倍,输了清零
- 在线时长奖励 — 累计在线 5/15/30/60 分钟手动领取积分
- 积分排行榜 — Redis Sorted Set 实时排序
✉️ 站内邮件系统
- 单人发送 / 全体发送
- 已读 / 未读状态追踪
- 自动过期(7 天)
- 软删除(不影响其他收件人)
🔔 实时通知(WebSocket)
- 新邮件到达实时弹窗
- 新增粉丝实时推送
👥 社交功能
- 用户列表首页
- 关注 / 取关
- 关注列表 / 粉丝列表
📊 数据统计
- 在线时长统计(分钟级心跳)
- 登录天数累计
- 积分变动流水日志
- 近 7 天在线时长图表(Chart.js)
技术栈
后端
| 技术 | 用途 |
|---|---|
| Java 21 + Spring Boot 3.2.5 | 主框架 |
| Spring Security | 安全配置 |
| MyBatis | ORM 持久层 |
| MySQL 8.0 | 关系型数据库 |
| Redis 7 | 排行榜、在线时长、关注关系 |
| Spring Boot WebSocket | 实时消息推送 |
| JWT (jjwt 0.11.5) | 无状态令牌鉴权 |
| BCrypt | 密码加密 |
前端
| 技术 | 用途 |
|---|---|
| Vue 3 + Composition API | 主框架 |
| Vite | 构建工具 |
| Pinia | 全局状态管理 |
| Vue Router | 前端路由 |
| Axios | HTTP 请求 + 拦截器 |
| Chart.js | 数据可视化 |
| WebSocket | 实时通信 |
DevOps
| 技术 | 用途 |
|---|---|
| Docker + Docker Compose | 容器化部署 |
| GitHub Actions | CI/CD 自动化 |
| 阿里云容器镜像服务 | 镜像存储 |
| Nginx | 反向代理 |
项目结构
JavaWeb/ # 后端 Spring Boot
├── Controller/ # REST 控制器
├── Service/ # 业务逻辑
├── Mapper/ # MyBatis 数据访问
├── Config/ # 安全、WebSocket、拦截器配置
├── Dto/ # 数据传输对象
├── Entity/ # 实体类
├── Exception/ # 全局异常处理
├── Tools/ # JWT + ThreadLocal 工具
├── WebSocket/ # WebSocket 服务端
├── Task/ # 定时任务
└── Dockerfile
JavaWebVue/ # 前端 Vue 3
├── components/ # 公共组件
├── views/ # 页面
├── store/ # Pinia 状态管理
├── utils/ # 工具库
├── router/ # 路由
├── Dockerfile
└── nginx.conf
docker-compose.yml # 四容器编排Docker 架构
浏览器 → Nginx(前端容器:3000)
├── 静态文件直接返回
├── /api/* → 后端容器:3001
└── /websocket/* → 后端容器:3001
后端容器 → MySQL 8.0 + Redis 7CI/CD 流程
git push origin main
→ GitHub Actions 触发
→ 构建 Docker 镜像 → 推送到阿里云镜像仓库
→ SSH 连接服务器 → docker compose pull + up -d本地开发
bash
# 后端
cd JavaWeb && mvn spring-boot:run
# 前端
cd JavaWebVue && npm run dev
# 依赖
MySQL 8.0 + Redis 7Docker 部署
bash
docker compose up -d --build这个项目是作者从零手写的全栈练习作品,每一行代码、每一次踩坑都是学习的痕迹。