- 责任链校验系统 * 题目创建参数校验(标题、内容、难度、判题配置、标签) * 题目编辑参数校验(可选字段校验) * 题目更新参数校验(管理员、存在性校验) * 题目提交参数校验(存在性、状态、语言、代码安全) - Sentinel 流量控制 * 添加 Sentinel 依赖和配置 * 题目提交接口添加限流注解和降级处理 - 数据模型优化 * QuestionResponseDTO 返回对象类型(JudgeConfig、JudgeCase) * 实现 Entity 与 DTO 的 JSON 转换 - 接口文档 * 生成博客服务完整 API 文档 Co-Authored-By: Claude <noreply@anthropic.com>
AIOJ 博客服务模块
模块说明
aioj-backend-blog-service 是 AIOJ 系统的博客服务模块,用于用户发帖、分享技术经验、写文章。
功能特性
- 文章管理:发布、编辑、删除、草稿箱
- 分类管理:支持多级分类
- 标签系统:文章标签分类和关联
- 评论系统:支持多级评论和回复
- 点赞/收藏:文章和评论点赞、收藏功能
- 浏览统计:文章浏览记录和统计
- Markdown 支持:原生支持 Markdown 编辑和渲染
- 搜索功能:全文搜索文章标题和内容
技术栈
- Spring Boot 3.5.7
- MyBatis Plus
- MySQL 8.0
- Redis
- Nacos 服务发现
- FlexMark (Markdown 处理)
- Knife4j (API 文档)
端口配置
- 开发环境: 18086
- 上下文路径: /api
数据库
数据库名称: aioj_blog
初始化 SQL 脚本: ../../db/blog.sql
核心表结构
| 表名 | 说明 |
|---|---|
| blog_article | 文章表 |
| blog_category | 文章分类表 |
| blog_tag | 文章标签表 |
| blog_article_tag | 文章标签关联表 |
| blog_comment | 评论表 |
| blog_like | 点赞表 |
| blog_favorite | 收藏表 |
| blog_view | 浏览记录表 |
| blog_draft | 草稿箱表 |
快速开始
1. 初始化数据库
mysql -u root -p < ../../db/blog.sql
2. 配置数据库连接
编辑 src/main/resources/application-dev.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/aioj_blog
username: your_username
password: your_password
3. 启动服务
mvn spring-boot:run
或直接运行主类: BlogServiceApplication.java
4. 访问 API 文档
启动服务后访问: http://localhost:18086/api/doc.html
API 接口
文章相关
POST /api/article- 创建文章PUT /api/article/{id}- 更新文章DELETE /api/article/{id}- 删除文章GET /api/article/{id}- 获取文章详情GET /api/article/list- 获取文章列表POST /api/article/publish- 发布文章
分类相关
GET /api/category/list- 获取分类列表POST /api/category- 创建分类(管理员)
标签相关
GET /api/tag/list- 获取标签列表GET /api/tag/hot- 获取热门标签
评论相关
POST /api/comment- 发表评论GET /api/comment/article/{articleId}- 获取文章评论列表DELETE /api/comment/{id}- 删除评论
开发指南
代码结构
aioj-backend-blog-service/
├── src/main/java/cn/meowrain/aioj/backend/blogservice/
│ ├── controller/ # 控制器层
│ ├── service/ # 服务层
│ │ └── impl/ # 服务实现层
│ ├── dao/ # 数据访问层
│ │ ├── mapper/ # MyBatis Mapper
│ │ └── model/ # 数据模型
│ ├── dto/ # 数据传输对象
│ ├── vo/ # 视图对象
│ ├── common/ # 公共类
│ ├── config/ # 配置类
│ └── BlogServiceApplication.java
└── src/main/resources/
├── mapper/ # MyBatis XML 映射文件
├── application.yml # 主配置文件
├── application-dev.yml
├── application-test.yml
├── application-prod.yml
└── logback-spring.xml # 日志配置
待实现功能
- 文章 CRUD 接口
- 分类管理接口
- 标签管理接口
- 评论系统接口
- 点赞/收藏接口
- 文章搜索接口
- Markdown 渲染服务
- 文章定时发布
- 文章审核功能
- 用户关注和动态
更新日志
2025-01-20 - 初始创建
创建者: Claude Code
工作内容:
-
模块结构搭建
- 创建完整的 Maven 模块目录结构
- 配置
pom.xml,引入所需依赖 - 创建主应用类
BlogServiceApplication.java - 更新父
pom.xml,添加新模块注册
-
配置文件创建
application.yml- 主配置文件- 服务端口: 18086
- 上下文路径: /api
- MyBatis Plus 配置
- Knife4j API 文档配置
application-dev.yml- 开发环境配置application-test.yml- 测试环境配置application-prod.yml- 生产环境配置logback-spring.xml- 日志配置
-
数据库设计
- 创建
db/blog.sql数据库初始化脚本 - 设计 9 张核心表:
blog_article- 文章表(支持草稿、发布、下架等状态)blog_category- 分类表(支持多级分类)blog_tag- 标签表blog_article_tag- 文章标签关联表blog_comment- 评论表(支持多级回复)blog_like- 点赞表blog_favorite- 收藏表blog_view- 浏览记录表blog_draft- 草稿箱表
- 添加初始分类和标签数据
- 创建
-
依赖说明
- Spring Boot 3.5.7
- Spring Cloud & Nacos(服务发现)
- MyBatis Plus(ORM)
- FlexMark(Markdown 处理)
- Knife4j(API 文档)
- Redis(缓存)
- MySQL(数据库)
-
待实现功能
- 文章 CRUD 接口开发
- 分类管理接口
- 标签管理接口
- 评论系统接口
- 点赞/收藏接口
- 文章搜索接口
- Markdown 渲染服务
- 文章定时发布
- 文章审核功能
注意事项:
- 确保先执行
db/blog.sql初始化数据库 - 检查
application-dev.yml中的数据库连接配置 - JWT 配置需与
aioj-backend-auth保持一致 - 启动前确保 Nacos 服务已运行
License
Copyright © 2025 AIOJ Project