「项目展示与源码」 牛客论坛项目重构(前后分离)
-
我是天坑专业学生 硕士刚读完, 自学的java。
-
跟着做牛客论坛项目的时候发现技术栈有点老。
-
所以我用了最新的, 做成了前后端分离
-
前端借助cursor快速搭建页面结构调整样式
-
前后总共三个月 完全可以改改做成毕业设计
-
前端的路由限制我没加 觉得暂时没必要
-
私聊我做成了live-chat 借鉴了小红书, 对方未回复前只能发送三条消息。 当对方删除会话后, 信息清空。 新建聊天仍然遵循上述规则从而避免spam信息
我在自己做的时候发现 前后端分离架构不像是牛客论坛视频里那样简单的包结构, 做这个项目的过程中学了很多, 也重构了很多次, 比如 DTO VO CONVERTER, 业务层按照 DATA 和 BUSINESS 将逻辑解耦等等...
现在这个项目我已经部署上线, 源码也公开到了github, 如果大家想体验可以看下面的在线链接。 注意因为我的邮箱验证码发送方是Google, 可能有延迟。
🛠 项目简介
Gforo 是一个基于 Spring Boot 构建的模块化社区论坛系统,支持前后端分离,具备丰富的社区功能与现代架构设计。
✅ 系统特性:
- 模块化设计,便于功能扩展与维护
- WebSocket 实时通信(私信系统 基于Netty的NIO)
- RBAC 权限控制系统(四表模型)
- JWT 双令牌身份认证机制(结合 Redis 会话管理)
- Kafka 消息总线解耦事件处理
- Elasticsearch 实现帖子全文搜索
- 用户经验值与自动授予称号系统
- 前端基于 Vue3 + Vite + Element Plus + TailwindCSS
- Docker 一键部署支持
🧩 模块构成
auth |
登录注册、邮箱验证、忘记密码 |
user |
用户资料、经验值系统、修改信息 |
post |
发帖、分页加载、查看详情 |
comment |
评论/子评论嵌套结构 |
like |
点赞功能(帖子与评论) |
notification |
系统通知与互动提醒 |
title |
经验值称号系统、自动授予 |
report |
举报与后台审核功能 |
permission |
RBAC权限控制系统 |
chat |
私信聊天(基于 WebSocket) |
layout |
首页轮播图配置等页面元素 |
statistic |
用户活跃度、趋势分析 |
search |
Elasticsearch 全文搜索 |
🏗️ 后端分层结构
src
└── main
├── java/com/yugao
│ ├── config → 各类配置(Kafka, Redis, Security)
│ ├── controller → 控制器层 API
│ ├── service
│ │ ├── business → 核心业务逻辑
│ │ └── data → 数据访问服务
│ ├── mapper → MyBatis-Plus 映射接口
│ ├── domain → 实体类模型
│ ├── dto / vo → 请求与响应模型
│ ├── converter → DTO ↔ Entity ↔ VO 转换器
│ ├── netty → WebSocket 实时通信模块
│ ├── event → Kafka 消息生产与消费
│ ├── enums / constants → 枚举与常量定义
│ ├── exception / result → 异常处理与结果封装
│ ├── util / validator → 工具类与参数校验
│ └── security → 安全认证上下文
🔐 权限与认证机制设计
🧩 RBAC 权限模型(四表分离)
系统采用细粒度权限控制模型,通过四张核心表实现用户权限管理:
permission |
权限资源(接口、菜单、按钮) |
role |
角色(管理员、版主、普通用户) |
role_permission |
角色-权限映射 |
user_role |
用户-角色映射 |
- 支持管理员自定义权限组合
- 支持板块指定版主权限
- 后端使用
@PreAuthorize
控制权限 - 前端支持按钮级权限动态渲染
🪪 双令牌身份认证机制(JWT + Redis)
Gforo 使用 Access Token + Refresh Token 双令牌认证机制,并结合 Redis 管理用户设备登录状态。
Access Token | API 请求 | 有效期短(如30分钟) |
Refresh Token | 刷新令牌 | 有效期长(如7天) |
Redis | 会话存储 | 控制多端登录/设备管理 |
流程示意:
[用户登录]
⇩ 生成 Access + Refresh Token
[前端存储]
⇅
[API 请求携带 Access Token] ─▶ [Spring Security 验证]
└─▶ Redis 验证通过 / 拒绝
⇅
[Access 过期] ─▶ 使用 Refresh Token 获取新令牌
🔧 技术栈一览
后端 | Spring Boot, MyBatis-Plus, Spring Security |
实时通信 | Netty WebSocket |
消息系统 | Apache Kafka |
缓存 | Redis |
搜索 | Elasticsearch |
数据库 | MySQL 8 |
前端 | Vue 3, Vite, Element Plus, TailwindCSS |
部署 | Docker + Docker Compose |
🔗 在线演示地址
你可以在线体验已部署的 Gforo 系统:
管理员体验账号
- 用户名:
AdminUser
- 密码:
333333
🦊 Github 项目源码
🌐 https://github.com/Gabri177/gforo-backend
🌐 https://github.com/Gabri177/gforo-frontend
#java学习##java##全栈##项目展示#