「项目展示与源码」 牛客论坛项目重构(前后分离)

alt

alt alt alt alt

alt

alt

alt

alt

alt

alt

  • 我是天坑专业学生 硕士刚读完, 自学的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 系统:

🌐 https://foro.mistsiete.com/

管理员体验账号

  • 用户名:AdminUser
  • 密码:333333

🦊 Github 项目源码

🌐 https://github.com/Gabri177/gforo-backend

🌐 https://github.com/Gabri177/gforo-frontend

#java学习##java##全栈##项目展示#
全部评论

相关推荐

投递字节跳动等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务