# WBLOG-Server
**Repository Path**: wisterialee/wblog-server
## Basic Information
- **Project Name**: WBLOG-Server
- **Description**: WBLOG是一个简易的个人博客,基于若依二次开发,内置文章、图库、留言、邮箱注册、站点配置全套博客业务,开放匿名浏览接口,配套文件上传与数据统计能力,自带完整数据库脚本与接口文档。WBLOG-Server 是WBLOG的后端。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-07-17
- **Last Updated**: 2026-09-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, SpringBoot, MyBatis, MySQL, Spring-MVC
## README
WBLOG-Server
Wisteria Blog · 一个简易的个人博客系统
个人博客系统后端 · 基于 若依 RuoYi-Vue v3.8.9 二次开发
中文 · English
---
## 写在前面
> 本项目为**个人学习实践作品**,非商业产品,亦非生产级方案。代码以「能跑、能用、能学」为目标,瑕疵在所难免,**不喜勿喷,欢迎交流
**。
这是一个**学生时期的练手项目**。
在校期间学完 JavaWeb 之后,闲着没事想折腾——当时有自己的服务器,便想着能不能自己搭一个博客玩玩。于是就有了 **WBLOG(Wisteria
Blog,紫藤博客)**。
说实话,当时写代码更多是**为了学习**:前后端分离怎么搭、权限怎么管、邮件怎么发……能跑起来就算胜利。至于
BUG、不合理的设计、粗糙的细节,现在回头看比比皆是,毕竟经验有限,很多地方都是边查文档边硬啃出来的。毕业后抽空整理了一下,心血来潮放出来,图个记录,也图个分享。
邮箱验证码注册是我**第一次完整实现**的功能,边学边写,邮件发送、验证码校验等环节可能仍不完善,使用时还请见谅。
> **特别说明:** 本项目基于 **[若依(RuoYi)](https://gitee.com/y_project/RuoYi-Vue)** 前后端分离框架修改而来。若依提供了完善的权限管理、JWT
> 认证、代码生成、系统监控等基础能力,是本项目的坚实底座。向若依作者及社区致以诚挚的感谢!
---
## 项目简介
WBLOG-Server 是 WBLOG 博客系统的**后端服务**,基于 Spring Boot + MyBatis + Spring Security + JWT
构建,与 WBLOG-Front 前端配套使用。
在若依框架的基础上,新增了 5 个自定义业务模块,覆盖博客内容管理、图库、留言板、站点配置、邮箱验证码等完整博客能力。大量前台只读接口通过
`@Anonymous` 注解开放,访客无需登录即可浏览博客内容。
- 默认服务端口:**9191**
- 数据库:**MySQL**(库名 `wblog`)
- 文件存储:本地磁盘(可配置)
| 名称 |
Gitee |
Github |
| WBLOG-Server |
https://gitee.com/wisterialee/wblog-server |
https://github.com/Wisteria0712/WBLOG-Server |
| WBLOG-Front |
https://gitee.com/wisterialee/wblog-front |
https://github.com/Wisteria0712/WBLOG-Front |
---
## 系统功能
### 博客业务功能(自定义模块)
#### 内容管理(wblog-cms)
| 功能 | API 前缀 | 说明 |
|----------|-------------------------|----------------------------------------------------------------------|
| **文章管理** | `/cms/blogArticle` | 文章 CRUD;支持 HTML + Markdown 双格式存储;自动统计字数;阅读量统计;标题模糊搜索;原创/转载、置顶推荐、发布状态 |
| **分类管理** | `/cms/blogClassify` | 文章分类维护,含封面与主题色 |
| **专栏管理** | `/cms/blogColumn` | 专栏信息维护 |
| **标签管理** | `/cms/blogTags` | 标签名称与颜色配置 |
| **随笔管理** | `/cms/blogEssay` | 短内容随笔 CRUD |
| **公告管理** | `/cms/blogAnnouncement` | 前台公告栏内容,支持优先级 |
| **友链管理** | `/cms/blogFriendLinks` | 友情链接维护 |
#### 图库管理(wblog-gallery)
| 功能 | API 前缀 | 说明 |
|----------|------------------------------|----------------|
| **相册管理** | `/gallery/blogGalleryAlbum` | 相册 CRUD |
| **图片管理** | `/gallery/blogGalleryImages` | 相册内图片管理,外键级联删除 |
#### 站点配置(wblog-config)
| 功能 | API 前缀 | 说明 |
|----------|----------------------|-------------------------------------|
| **全局配置** | `/config/blogConfig` | 站点名称、头像、格言、备案信息;随笔/图库/友链/留言板等功能模块开关 |
#### 留言板(wblog-guestbook)
| 功能 | API 前缀 | 说明 |
|----------|----------------------------|---------------------------------------------------|
| **留言管理** | `/guestbook/blogGuestbook` | 留言 CRUD;`parent_id` 嵌套回复;留言总数统计;普通用户留言待审核,管理员即时通过 |
> 说明:系统未单独实现「文章评论」模块,用户互动统一通过留言板完成。
#### 邮箱验证码(wblog-email)
| 功能 | API 前缀 | 说明 |
|-----------|---------------------------------------|----------------------------------|
| **验证码记录** | `/email/blogEmailCodes` | 验证码发送记录管理(管理端) |
| **发送验证码** | `POST /system/user/getEmailCheckCode` | 注册时发送 6 位邮箱验证码(15 分钟有效,60 秒频率限制) |
| **用户注册** | `POST /register` | 账号 + 邮箱 + 邮箱验证码 + 图形验证码注册 |
**邮箱注册流程:**
1. 前端调用 `getEmailCheckCode` 发送验证码至邮箱(FreeMarker HTML 邮件模板)
2. 用户填写注册信息,提交至 `/register`
3. 后端校验图形验证码 → 邮箱验证码 → 写入 `sys_user`
4. 注册成功后验证码标记失效
#### 用户扩展
| 功能 | 说明 |
|----------|-----------------------------------------------------|
| **用户统计** | `GET /system/user/getTotalUserCount` 获取注册用户总数 |
| **账号注销** | `POST /system/user/delId4User` 物理删除用户,留言昵称改为「账号已注销」 |
| **资料同步** | 修改昵称时同步更新留言板中的用户昵称 |
#### 文件服务
| 功能 | API | 说明 |
|------------|------------------------|-------------------------------------|
| **单文件上传** | `POST /common/upload` | 图片/文件上传,返回 `/profile/upload/...` 路径 |
| **多文件上传** | `POST /common/uploads` | 批量上传 |
| **静态资源访问** | `GET /profile/**` | 匿名访问已上传文件 |
#### 站点统计 API
| 接口 | 说明 |
|-------------------------------------------------------|---------|
| `GET /cms/blogArticle/getTotalWords` | 全站文章总字数 |
| `GET /cms/blogArticle/getTotalReading` | 全站总阅读量 |
| `GET /system/user/getTotalUserCount` | 注册用户总数 |
| `GET /guestbook/blogGuestbook/getTotalGuestbookCount` | 留言总数 |
### 若依内置功能(简要)
后端同时保留了若依框架的标准管理能力:
- **用户 / 角色 / 菜单 / 部门 / 岗位 / 字典 / 参数** 管理
- **通知公告、操作日志、登录日志、在线用户** 监控
- **定时任务** 调度(Quartz)
- **代码生成器** 一键生成前后端 CRUD 代码
- **系统接口** Swagger 3 自动文档
- **服务监控、缓存监控、连接池监控**(Druid)
---
## 技术栈
| 类别 | 技术 | 版本 |
|--------|-------------------------------------|--------|
| 语言 | Java | 1.8 |
| 基础框架 | Spring Boot | 2.5.15 |
| 安全框架 | Spring Security | 5.7.12 |
| ORM | MyBatis + PageHelper | 1.4.7 |
| 数据库 | MySQL | 8.0+ |
| 连接池 | Druid | 1.2.23 |
| 缓存 | Redis(Lettuce) | — |
| 认证 | JWT(jjwt) | 0.9.1 |
| API 文档 | Swagger 3(Springfox) | 3.0.0 |
| JSON | Fastjson2 | 2.0.53 |
| 验证码 | Kaptcha | 2.3.3 |
| 邮件 | Spring Mail + FreeMarker | — |
| 工具 | Apache POI、Commons IO、Velocity、OSHI | — |
---
## 项目结构
```
WBLOG-Server/
├── wblog-admin/ # Web 入口,启动类,聚合所有模块(端口 9191)
├── wblog-framework/ # 核心框架:Security、JWT、AOP、数据源
├── wblog-system/ # 系统管理 + 博客用户扩展
├── wblog-common/ # 通用工具、注解、基础实体
├── wblog-cms/ # ★ 内容管理(文章/分类/标签/专栏/随笔/友链/公告)
├── wblog-gallery/ # ★ 图库(相册/图片)
├── wblog-config/ # ★ 博客全局配置
├── wblog-guestbook/ # ★ 留言板
├── wblog-email/ # ★ 邮箱验证码
├── wblog-quartz/ # 定时任务(若依默认)
├── wblog-generator/ # 代码生成器(若依默认)
├── sql/ # 数据库脚本(wblog.sql)
└── pom.xml
```
### 数据库表(博客业务)
| 表名 | 说明 |
|---------------------|--------------------------------------------|
| `blog_article` | 文章(HTML + Markdown 双存储、阅读量、字数、标签/分类/专栏 ID) |
| `blog_classify` | 分类 |
| `blog_tag` | 标签 |
| `blog_column` | 专栏 |
| `blog_essay` | 随笔 |
| `blog_friend_links` | 友情链接 |
| `blog_announcement` | 公告 |
| `blog_album` | 相册 |
| `blog_images` | 相册图片 |
| `blog_config` | 站点全局配置 |
| `blog_guestbook` | 留言板(嵌套回复) |
| `email_codes` | 邮箱验证码记录 |
---
## 快速开始
### 环境要求
- JDK 1.8+
- Maven 3.6+
- MySQL 8.0+
- Redis
### 数据库初始化
```bash
# 创建数据库并导入脚本
mysql -u root -p < sql/wblog.sql
```
### 配置修改
编辑 `wblog-admin/src/main/resources/application.yml`:
| 配置项 | 说明 |
|------------------|--------------------------------------------|
| `ruoyi.profile` | 文件上传存储路径(如 `D:/Project/WBLOG/WBLOG-Store`) |
| `server.port` | 服务端口(默认 9191) |
| `spring.redis.*` | Redis 连接信息 |
| `spring.mail.*` | 邮箱 SMTP 配置(注册验证码发送) |
编辑 `wblog-admin/src/main/resources/application-druid.yml` 配置数据库连接。
### 编译与运行
```bash
# 进入项目目录
cd WBLOG-Server
# Maven 打包
mvn clean package -DskipTests
# 方式一:直接运行 Jar
cd wblog-admin/target
java -jar wblog-admin.jar
# 方式二:使用脚本(Windows)
bin\run.bat
```
### 接口文档
启动后访问 Swagger 文档(开发环境):
```
http://localhost:9191/swagger-ui/index.html
```
---
## 效果预览
---
## 致谢
- **[若依 RuoYi](https://gitee.com/y_project/RuoYi-Vue)** — 提供了 Spring Boot 后端脚手架、权限管理、JWT
认证、代码生成、系统监控等完整的基础框架,是本项目的核心底座。没有若依,就没有 WBLOG。
- **[MyBatis](https://mybatis.org/)** — 持久层框架
- **[Druid](https://github.com/alibaba/druid)** — 数据库连接池与监控
---
WBLOG · Wisteria Blog · 学生时代的练手之作,能跑就行,图一乐