1. 项目简介
MapleBBS 是一个基于 Java Spring Boot 开发的综合性社区论坛系统,采用前后端分离或模块化架构设计。系统主要划分为 Web 用户端 (maplerbbs-web) 和 Admin 管理后台 (maplerbbs-admin),共享核心业务逻辑模块 (maplerbbs-common)。除了传统的论坛功能外,该系统还集成了微信生态支付业务。网站已经部署到线上:欢迎体验 mapler.site
2. 核心业务模块
2.1 论坛社区核心
板块管理:支持多级板块分类(父板块/子板块),管理员可自定义板块名称、描述、封面及排序。
文章管理:用户可发布帖子,支持富文本、附件上传。管理员具备审核、置顶、删除、移动板块等权限。
评论互动:支持多层级评论回复,管理员可审核或删除违规评论。
附件系统:支持图片、文件附件的上传与下载,具备独立的附件统计与管理功能。
2.2 用户中心与安全
账户体系:支持用户注册、登录、找回密码(邮箱验证码)。
个人中心:用户可查看个人信息、修改头像、管理收藏文章。
消息通知:系统可向用户发送站内信,支持积分变动通知。
安全机制:
图形验证码:登录及关键操作需通过图形验证码校验。
会话管理:基于 Session 的用户状态保持,Admin 端具备开发环境自动登录特性。
参数校验:全局拦截器对请求参数进行非空、长度及正则校验。
2.3 扩展业务功能
支付与会员体系:
集成微信支付与支付宝支付。
支持订单管理及支付回调通知处理。
2.4 系统管理 (Admin)
系统设置:动态配置注册规则、发帖审核策略、评论策略、邮件服务参数等,并实时同步至 Web 端缓存。
数据统计:查看用户列表、操作日志及业务数据概览。
文件管理:统一管理服务器上的临时文件、头像及附件资源。
1. 技术栈选型
后端框架:Spring Boot 2.2.6, MyBatis (通过 Mapper 接口映射)。
数据库:MySQL (HikariCP 连接池)。
缓存:Redis (Jedis 客户端),用于系统设置缓存、验证码存储及频次控制。
通信:
其他:Lombok, FastJson/Jackson, OKHttp (内部接口调用), JWT (部分场景)。
2. 核心架构设计
2.1 模块化结构
项目采用 Maven 多模块管理:
maplerbbs-common:核心依赖模块。包含 Entity (PO/DTO/VO)、Mapper 接口、Service 接口、通用工具类 (utils)、常量定义 (constants) 及全局异常/注解。
maplerbbs-admin:管理后台启动模块。依赖 common,专注于管理员权限控制、系统配置及数据审计。
maplerbbs-web:用户前端启动模块。依赖 common,专注于用户交互、高并发处理及业务逻辑实现。
2.2 全局拦截与参数校验 (AOP)
系统通过自定义注解 @GlobalInterceptor 和 @VerifyParam 结合 AspectJ 实现统一切面处理 (OperactionAspect):
登录校验:检查 Session 中是否存在有效用户信息。
参数校验:递归遍历对象字段,验证必填项、字符串长度及正则表达式匹配。
频次控制:基于 Redis 实现接口访问频次限制(如图片上传、短信发送),防止恶意刷接口。
2.3 统一响应与异常处理
统一响应体:所有接口返回 ResponseVO,包含 status (success/error), code, info, data。
全局异常捕获:AGlobalExceptionHandlerController 使用 @RestControllerAdvice 捕获各类异常:
BusinessException:业务逻辑错误,返回特定错误码。
NoHandlerFoundException:404 处理。
DuplicateKeyException:数据库主键冲突处理。
其他未知异常统一返回 500 错误。
2.4 文件存储策略
物理路径映射:通过 WebConfig 配置项目根目录 project.folder。
分类存储:
临时文件:/temp/
头像:/avatar/
文章封面:/image/
附件:/attachment/
访问方式:提供专门的 Controller (FileController) 读取本地文件流并写入 HttpServletResponse,同时设置浏览器缓存策略(头像不缓存,普通图片长缓存)。