# truthbean-blog **Repository Path**: truthbean/truthbean-blog ## Basic Information - **Project Name**: truthbean-blog - **Description**: 使用truthbean框架编写的blog - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-30 - **Last Updated**: 2026-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TruthBean Blog TruthBean Blog 是一个基于 Debbie Framework 开发的现代化博客系统,提供完整的用户管理、文章发布、评论互动和强大的后台管理功能。 ## 在线演示 - **前台博客**: http://localhost:8888/blog/ - **后台管理**: http://localhost:8888/admin/ ## 技术栈 ### 后端 - **框架**: Debbie Framework (0.6.0-RELEASE) - 轻量级 Java Web 框架 - **数据库**: MariaDB/MySQL 5.7+ - **连接池**: HikariCP (最大连接数 400) - **认证**: JWT (JSON Web Token) - **构建工具**: Maven 3.6+ - **Java 版本**: JDK 17+ - **邮件服务**: Jakarta Mail 2.0.2 ### 前端 - **HTML5/CSS3/JavaScript** - **响应式设计** - **Markdown 编辑器** ## 项目结构 ``` truthbean-blog/ ├── src/ │ ├── main/ │ │ ├── java/com/truthbean/blog/ │ │ │ ├── admin/ # 后台管理模块 │ │ │ │ ├── model/ │ │ │ │ ├── repository/ │ │ │ │ ├── router/ │ │ │ │ └── service/ │ │ │ ├── blog/ # 博客核心模块 │ │ │ │ ├── model/ │ │ │ │ ├── repository/ │ │ │ │ ├── router/ │ │ │ │ └── service/ │ │ │ ├── common/ # 公共组件 │ │ │ │ ├── service/ │ │ │ │ └── util/ │ │ │ ├── config/ # 配置管理 │ │ │ ├── permission/ # 权限管理模块 │ │ │ ├── user/ # 用户管理模块 │ │ │ └── TruthbeanBlogApplication.java # 项目入口 │ │ └── resources/ │ │ ├── application.properties │ │ └── statics/ │ │ ├── admin/ # 后台管理界面 │ │ │ ├── blog-edit.html │ │ │ ├── blogs.html │ │ │ ├── http-client.html │ │ │ ├── index.html │ │ │ ├── settings.html │ │ │ ├── sql-client.html │ │ │ ├── storage-manager.html │ │ │ ├── terminal.html │ │ │ └── users.html │ │ ├── blog/ # 前台博客界面 │ │ │ ├── index.html │ │ │ ├── edit.html │ │ │ └── statistics.html │ │ ├── login.html │ │ └── register.html ├── sql/ │ └── 0.6.0.sql ├── pom.xml └── Readme.md ``` ## 核心功能 ### 👤 用户管理 - ✅ 用户注册/登录(图形验证码 + 邮箱验证码) - ✅ 个人信息管理(昵称、签名、邮箱、手机) - ✅ 密码重置(邮箱验证) - ✅ 邮箱验证 - ✅ 用户登录记录(IP、地理位置、浏览器信息) - ✅ 密码策略(长度 8-32 位,包含大小写字母、数字、特殊字符) - ✅ 账号禁用机制 - ✅ 登录失败次数限制(防止暴力破解) ### 📝 博客功能 - ✅ 文章发布/编辑/删除(Markdown 支持) - ✅ 分类管理(支持多级分类) - ✅ 标签系统(使用次数统计) - ✅ 评论互动(支持嵌套评论、回复楼层) - ✅ 文章浏览统计 - ✅ 访问记录(IP、地理位置、浏览器信息) - ✅ 草稿箱功能 - ✅ 文章状态管理(已发布/草稿) ### 🔍 内容审核 - ✅ 敏感词过滤(自动检测替换) - ✅ 评论审核状态管理 - ✅ 黑名单用户标记 - ✅ 敏感词库管理 ### 🎛️ 后台管理系统 - **用户管理**: 用户列表、禁用/启用、角色管理、权限分配 - **文章管理**: 文章列表、编辑、发布状态、批量操作 - **SQL 客户端**: 在线执行 SQL、查询结果展示、数据库管理 - **HTTP 客户端**: 在线测试 API、RESTful 请求调试 - **终端模拟器**: Web 版命令行工具、系统命令执行 - **存储管理**: 文件管理、资源上传 - **系统设置**: 配置管理、系统信息查看 - **操作日志**: 完整的操作记录追踪、审计功能 - **API 管理**: API 接口管理、访问控制 - **待办事项**: 待办创建/编辑/删除、优先级管理 - **友情链接**: 链接管理、排序控制 ### 🔐 系统安全 - ✅ JWT Token 认证 - ✅ 双重验证码(图形 + 邮箱) - ✅ 操作日志记录 - ✅ 登录尝试防护 - ✅ 密码加密存储 - ✅ SQL 注入防护 - ✅ XSS 攻击防护 - ✅ RBAC 权限模型 - ✅ AK/SK 密钥对认证 ## 快速开始 ### 环境要求 - ✅ JDK 17+ - ✅ Maven 3.6+ - ✅ MariaDB/MySQL 5.7+ ### 安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/truthbean/truthbean-blog cd truthbean-blog ``` 2. **配置数据库** - 创建数据库: ```sql CREATE DATABASE blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` - 执行 SQL 脚本初始化表结构: ```bash mysql -u root -p blog < sql/0.6.0.sql ``` - 或者手动执行 `sql/0.6.0.sql` 文件中的 SQL 语句 3. **修改配置文件** 编辑 `src/main/resources/application.properties`: ```properties # 数据库配置 debbie.datasource.url=jdbc:mariadb://localhost:3306/blog debbie.datasource.user=root debbie.datasource.password=your_password # 数据库连接池配置(可选) debbie.datasource.hikari.min-idle=8 debbie.datasource.hikari.max-pool-size=400 # 邮件配置(可选,用于验证码发送) debbie.mail.smtp-host=smtp.example.com debbie.mail.smtp-port=587 debbie.mail.username=no-reply@example.com debbie.mail.password=your_mail_password debbie.mail.from-email=no-reply@example.com # 服务器端口(可选,默认 8888) debbie.server.port=8888 ``` 4. **构建项目** ```bash mvn clean compile ``` ### 运行项目 #### 方法一:使用 Maven 直接运行 ```bash mvn compile exec:java -Dexec.mainClass="com.truthbean.blog.TruthbeanBlogApplication" ``` #### 方法二:构建并运行 JAR 包 ```bash mvn clean package java -jar target/truthbean-blog-0.6.0-SNAPSHOT.jar ``` ### 访问地址 启动成功后,访问以下地址: - **前台博客**: http://localhost:8888/blog/ - **后台管理**: http://localhost:8888/admin/ - **登录页面**: http://localhost:8888/login.html - **注册页面**: http://localhost:8888/register.html - **Swagger 文档**: http://localhost:8888/swagger-ui.html ## 配置说明 ### 服务器配置 ```properties # 服务器端口 debbie.server.port=8888 # 静态资源映射 debbie.web.static-resources-mapping-location=/**=statics/ # AIO 异步 IO 配置 debbie.server.aio.enable=true debbie.server.aio.thread-pool.core-size=32 debbie.server.aio.thread-pool.max-pool-size=1024 debbie.server.aio.thread-pool.queue-size=2048 ``` ### 数据库连接池配置 ```properties # 数据源工厂类 debbie.datasource.factory=com.truthbean.debbie.jdbc.datasource.pool.DefaultDataSourcePoolFactory # 数据库驱动 debbie.datasource.driver-name=org.mariadb.jdbc.Driver # 连接池配置 debbie.datasource.hikari.pool-name=truthbean-jdbc-pool debbie.datasource.hikari.min-idle=8 debbie.datasource.hikari.max-pool-size=400 ``` ### 邮件服务器配置 ```properties # SMTP 服务器配置 debbie.mail.smtp-host=smtp.example.com debbie.mail.smtp-port=587 debbie.mail.username=no-reply@example.com debbie.mail.password=your-password debbie.mail.from-email=no-reply@example.com # 安全配置 debbie.mail.auth=true debbie.mail.starttls-enable=true debbie.mail.ssl-enable=false ``` ### 验证码配置 ```properties # 图形验证码配置 debbie.captcha.width=120 debbie.captcha.height=40 debbie.captcha.length=4 debbie.captcha.expiry-seconds=300 debbie.captcha.font-size=20 debbie.captcha.interference-lines=5 debbie.captcha.interference-dots=20 # 邮箱验证码配置 debbie.verification-code.expiry=300 debbie.verification-code.length=6 ``` ### 密码策略配置 ```properties # 密码长度要求 password.policy.min-length=8 password.policy.max-length=32 # 密码复杂度要求 password.policy.require-uppercase=true # 需要大写字母 password.policy.require-lowercase=true # 需要小写字母 password.policy.require-digit=true # 需要数字 password.policy.require-special-char=true # 需要特殊字符 # 允许的特殊字符 password.policy.allowed-special-chars=!@#$%^&*()_+-=[]{}|;:,.<>? ``` ### 默认配置 ```properties # 用户默认密码(新用户注册时管理员分配的默认密码) user.default.password=123456 ``` ## 数据库设计 ### 主要数据表(共 13+ 张表) #### 用户相关 | 表名 | 说明 | 主要字段 | |------|------|----------| | `t_user` | 用户表 | id, username, nickname, email, phone, password, disabled, last_login_time | | `t_user_login_record` | 用户登录记录表 | user_id, login_time, login_ip, login_location, user_agent | | `t_login_failure` | 登录失败记录表 | user_id, username, failure_time, failure_ip, failure_reason | #### 博客相关 | 表名 | 说明 | 主要字段 | |------|------|----------| | `t_blog` | 博客文章表 | id, title, summary, content, author_id, status, click_count | | `t_category` | 分类表 | id, name, description, parent_id, level | | `t_tag` | 标签表 | id, name, description, use_count | | `t_blog_tag` | 博客标签关联表 | blog_id, tag_id | | `t_comment` | 评论表 | (支持嵌套评论) | | `t_sensitive_word` | 敏感词表 | 敏感词库 | #### 访问与日志 | 表名 | 说明 | 主要字段 | |------|------|----------| | `t_visit_record` | 访问记录表 | blog_id, remote_ip, ip_location, user_agent, visit_time | | `t_operation_log` | 操作日志表 | 完整的操作记录 | #### 其他功能表 | 表名 | 说明 | |------|------| | `t_api` | API 管理表 | | `t_todo` | 待办事项表 | | `t_link` | 友情链接表 | ### 数据库特性 - ✅ 外键约束保证数据一致性 - ✅ 自动时间戳(created_time, last_modified_time) - ✅ 级联删除(ON DELETE CASCADE) - ✅ 索引优化(登录失败记录表) - ✅ UTF-8 编码支持中文 - ✅ 支持多级分类的父子关系 ## 项目架构 ### 分层架构 ``` Router 层(路由控制器) ↓ Service 层(业务逻辑) ↓ Repository 层(数据访问) ``` ### 模块划分 #### 1. admin - 后台管理模块 - **model**: 数据模型(API、链接、操作日志、待办、访问记录) - **repository**: 数据访问层 - **router**: 路由控制器(7 个 Router) - **service**: 业务逻辑层(含 impl 实现类) #### 2. blog - 博客核心模块 - **model**: 博客、分类、评论、标签模型 - **repository**: 数据访问(6 个 Repository) - **router**: 路由(7 个 Router) - **service**: 业务服务(5 个 Service) #### 3. common - 公共组件 - **service**: 验证码、邮件、SQL 执行服务 - **util**: 密码验证工具类 #### 4. config - 配置管理类 - **ServiceManager**: Service 注册管理器(24 个 Service) - **RouterManager**: Router 注册管理器(17 个 Router) - **RepositoryManager**: Repository 注册管理器 - **TaskManager**: 定时任务管理器 - **DebbieReadyEventListener**: 应用就绪监听器 #### 5. permission - 权限管理模块(RBAC) - **model**: AK/SK、权限资源、角色、Token 模型 - **repository**: 权限数据访问 - **router**: 权限路由(3 个) - **service**: 权限服务(AK/SK、权限资源、Token) #### 6. user - 用户管理模块 - **model**: 用户相关模型(4 个) - **repository**: 用户数据访问(3 个) - **request**: 请求 DTO(8 个) - **router**: 用户路由(1 个) - **service**: 用户服务(6 个,含实现类) #### 7. util - 工具类 - **TokenUtils**: Token 工具类 ### 核心组件数量 - **Service**: 24 个 - **Router**: 17 个 - **Repository**: 10+ 个 - **数据表**: 13+ 张 - **前端页面**: 14 个 ## 开发指南 ### 代码规范 - ✅ 遵循 Java 编码规范 - ✅ 分层架构:Router → Service → Repository - ✅ 接口与实现分离 - ✅ 统一命名规范(驼峰命名法) - ✅ 完整注释文档 ### 开发流程 1. **克隆项目** ```bash git clone https://gitee.com/truthbean/truthbean-blog cd truthbean-blog ``` 2. **编译项目** ```bash mvn clean compile ``` 3. **运行项目** ```bash mvn compile exec:java -Dexec.mainClass="com.truthbean.blog.TruthbeanBlogApplication" ``` 4. **访问系统** - 打开浏览器访问:http://localhost:8888 - 使用注册功能创建账号 - 或使用默认管理员账号登录 ### 添加新功能 #### 1. 创建 Service ```java public interface YourService { // 定义业务方法 } public class YourServiceImpl implements YourService { // 实现业务逻辑 } ``` #### 2. 创建 Router ```java public class YourRouter { public Response yourMethod() { // 处理 HTTP 请求 } } ``` #### 3. 注册 Service 和 Router 在 `ServiceManager.java` 和 `RouterManager.java` 中注册新组件 ### 常见问题 #### 1. 数据库连接失败 检查 `application.properties` 中的数据库配置,确保数据库已创建且服务正常运行 #### 2. 端口被占用 修改 `debbie.server.port` 为其他端口号 #### 3. 邮件发送失败 检查邮件服务器配置,确保 SMTP 服务可用 ## API 文档 - **API 列表**: 查看所有 RESTful 接口 - **在线测试**: 直接在浏览器中测试 API ### 主要 API 分类 - 👤 用户接口:注册、登录、信息管理 - 📝 博客接口:文章 CRUD、分类、标签 - 💬 评论接口:发表评论、回复、删除 - 📊 统计接口:访问记录、点击量 - 🎛️ 管理接口:用户管理、文章管理、系统设置 - 🔐 权限接口:Token 管理、角色管理 ## 性能优化 ### 数据库优化 - ✅ 使用 HikariCP 连接池 - ✅ 建立合理索引 - ✅ 外键约束保证数据一致性 - ✅ 自动重连机制 ### 线程池配置 ``` 核心线程数:32 最大线程数:1024 队列容量:2048 适用于高并发场景 ``` ### AIO 异步 IO - 非阻塞 IO 模型 - 提升并发处理能力 - 降低资源消耗 ## 安全特性 ### 认证体系 - **双重验证**: 图形验证码 + 邮箱验证码 - **JWT Token**: 无状态认证 - **AK/SK 认证**: 密钥对认证 ### 防护机制 - ✅ 登录失败次数限制 - ✅ 账号禁用机制 - ✅ 操作日志审计 - ✅ 敏感词自动过滤 - ✅ SQL 注入防护 - ✅ XSS 攻击防护 - ✅ CSRF 令牌验证 ### 密码安全 - BCrypt 加密存储 - 密码强度策略 - 定期密码更新提醒 ## 扩展性设计 ### 插件化架构 - Service 可通过 Manager 灵活注册 - Router 支持动态添加 - Repository 独立管理 ### 配置化部署 - 所有关键参数可配置 - 环境隔离(开发/生产) - 热更新支持 ### 标准化接口 - RESTful API 设计 - Swagger 文档自动生成 - 统一响应格式 ## 贡献指南 欢迎贡献代码!请遵循以下步骤: 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ### 代码提交规范 - `feat`: 新功能 - `fix`: 修复 bug - `docs`: 文档更新 - `style`: 代码格式调整 - `refactor`: 重构代码 - `test`: 测试相关 - `chore`: 构建/工具链相关 ### 开发环境设置 1. 安装 JDK 17+ 2. 安装 Maven 3.6+ 3. 安装 MariaDB/MySQL 5.7+ 4. 导入项目并下载依赖 ## 许可证 本项目采用 Apache License 2.0 许可证。 ## 联系方式 - Gitee Issues: [https://gitee.com/truthbean/truthbean-blog/issues](https://gitee.com/truthbean/truthbean-blog/issues) ## 更新日志 ### v0.6.0 🎉 **初始版本发布** #### ✨ 新增功能 - **用户系统** - 用户注册/登录(图形验证码 + 邮箱验证码) - 密码策略验证(长度、复杂度) - 邮箱验证 - 登录失败限制 - 用户登录记录 - **博客核心功能** - 文章发布/编辑/删除(Markdown 支持) - 多级分类管理 - 标签系统 - 评论系统(嵌套评论) - 访问记录与统计 - **内容审核** - 敏感词过滤系统 - 评论审核状态管理 - 黑名单用户标记 - **后台管理系统** - 用户管理(禁用/启用、角色管理) - 文章管理 - SQL 客户端(在线执行 SQL) - HTTP 客户端(API 测试) - 终端模拟器(Web 版命令行) - 存储管理 - 系统设置 - 操作日志记录 - API 管理功能 - 待办事项管理 - 友情链接管理 - **权限系统** - RBAC 权限模型 - JWT Token 认证 - AK/SK 密钥对认证 - 角色和资源管理 #### 🔧 技术特性 - 基于 Debbie Framework 0.6.0 - JDK 17+ 支持 - HikariCP 连接池 - AIO 异步 IO - Swagger API 文档 - 完善的日志系统 --- ## 📊 项目统计 - **代码行数**: 约 10,000+ 行 - **Service 数量**: 24 个 - **Router 数量**: 17 个 - **Repository 数量**: 10+ 个 - **数据表数量**: 13+ 张 - **前端页面**: 14 个 - **API 接口**: 100+ 个 ## 许可证 本项目采用 Apache License 2.0 许可证。详见 [LICENSE](LICENSE) 文件。 ## 致谢 感谢以下开源项目: - [Debbie Framework](https://github.com/truthbean/debbie) - 轻量级 Java Web 框架 - [MariaDB](https://mariadb.org/) - 数据库 - [HikariCP](https://github.com/brettwooldridge/HikariCP) - 连接池 - [Jackson](https://github.com/FasterXML/jackson) - JSON 处理 - [Jakarta Mail](https://jakarta.ee/specifications/mail/) - 邮件发送 ## 联系方式 如有问题或建议,请通过以下方式联系: - 📧 Gitee Issues: [https://gitee.com/truthbean/truthbean-blog/issues](https://gitee.com/truthbean/truthbean-blog/issues) - 📮 开发者邮箱:truthbean@example.com ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=truthbean/truthbean-blog&type=Date)](https://star-history.com/#truthbean/truthbean-blog&Date)