chore: 重写初始提交(清空历史,整理后全量提交)

This commit is contained in:
ywxapp
2026-08-16 16:54:14 +08:00
commit 6c1a106bc1
1808 changed files with 238144 additions and 0 deletions
+325
View File
@@ -0,0 +1,325 @@
# ThinkPHP 8 博客应用 - 说明文档与应用目录
## 一、说明文档
### 1. 项目概述
**项目名称**TP-Blog(基于ThinkPHP 8的现代化博客系统)
**项目定位**:轻量级、可扩展的博客平台,支持用户管理、文章发布、分类标签、评论互动、后台管理等核心功能,适合个人博客或小型社区使用。
**技术栈**
- 后端:ThinkPHP 8PHP 8.0+
- 前端:Layui 2.6+、HTML5、CSS3、JavaScript
- 数据库:MySQL 5.7+(支持MariaDB 10.3+
- 缓存:Redis(可选,用于提升性能)
- 富文本编辑器:WangEditor
- 其他:QRCode(分享功能)、ECharts(统计图表,可选)
### 2. 功能模块
#### 2.1 前台功能
- **用户系统**:注册、登录、退出、个人资料管理
- **文章系统**:文章列表(分页/排序)、文章详情(含点赞/收藏/分享)、文章搜索
- **分类标签**:按分类/标签筛选文章、分类/标签云展示
- **互动功能**:评论(多级回复)、点赞、收藏、文章分享(二维码/链接)
- **其他**:RSS订阅、访客统计(PV/UV)
#### 2.2 后台功能
- **仪表盘**:数据统计(文章/用户/评论/访问量)、最新动态、热门文章
- **内容管理**:文章发布/编辑/删除、分类/标签管理、评论审核/删除
- **用户管理**:用户列表、添加/编辑/删除用户、角色权限(admin/editor/user
- **统计分析**:访客记录、热门页面、访问趋势(需集成ECharts)
- **系统设置**:站点信息、SEO配置、邮件设置、权限管理
### 3. 技术架构
#### 3.1 架构图
```mermaid
graph TD
A[前端] --> B[ThinkPHP 8]
B --> C[MySQL]
B --> D[Redis缓存]
B --> E[文件存储]
subgraph 前端技术栈
A1[Layui 2.6+]
A2[HTML5/CSS3]
A3[JavaScript]
A4[WangEditor]
end
subgraph 后端技术栈
B1[ThinkPHP 8 MVC]
B2[Blade模板引擎]
B3[RESTful API]
B4[中间件]
end
subgraph 数据存储
C1[用户表(tp_user)]
C2[文章表(tp_article)]
C3[分类表(tp_category)]
C4[标签表(tp_tag)]
C5[评论表(tp_comment)]
C6[点赞/收藏表(tp_like/tp_favorite)]
C7[访客表(tp_visit)]
end
```
#### 3.2 核心技术点
- **MVC分层**:控制器(Controller)、模型(Model)、视图(View)分离
- **模型关联**:一对一(用户-文章)、一对多(文章-评论)、多对多(文章-标签)
- **中间件**:用户认证(`Auth`)、访客统计(`Visit`)、管理员权限(`AdminAuth`
- **富文本编辑**:集成WangEditor,支持图片上传、代码高亮
- **权限控制**:基于角色的访问控制(RBAC),区分普通用户/管理员
### 4. 安装部署
#### 4.1 环境准备
- **服务器**Linux(推荐CentOS/Ubuntu)或Windows
- **运行环境**
- PHP 8.0+(需开启`fileinfo``redis`扩展)
- Composer 2.0+
- MySQL 5.7+ 或 MariaDB 10.3+
- Nginx 1.18+ 或 Apache 2.4+
- Redis 6.0+(可选,用于缓存)
- **工具**:Git(代码拉取)、Xshell(远程连接)、FileZilla(文件传输)
#### 4.2 安装步骤
##### 4.2.1 本地开发环境
```bash
# 1. 克隆代码
git clone https://github.com/yourname/tp-blog.git
cd tp-blog
# 2. 安装依赖
composer install
# 3. 配置环境
cp .env.example .env
php think key:generate # 生成应用密钥
# 4. 创建数据库(导入SQL文件)
mysql -u root -p
CREATE DATABASE IF NOT EXISTS `tp_blog` DEFAULT CHARACTER SET utf8mb4;
USE `tp_blog`;
source database/tp_blog.sql; # 导入数据库表结构
# 5. 配置.env文件
DB_HOST=127.0.0.1
DB_NAME=tp_blog
DB_USER=root
DB_PASS=your_mysql_password
APP_DEBUG=true # 开发环境开启调试
# 6. 启动服务
php think run # 访问 http://localhost:8000
```
##### 4.2.2 生产环境部署(Nginx
```bash
# 1. 上传代码到服务器
scp -r tp-blog root@your_server_ip:/var/www/
# 2. 安装依赖(生产环境关闭dev依赖)
composer install --no-dev
# 3. 配置Nginx
server {
listen 80;
server_name yourdomain.com;
root /var/www/tp-blog/public;
index index.php;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
}
}
# 4. 设置文件权限
chown -R www-data:www-data /var/www/tp-blog
chmod -R 755 /var/www/tp-blog/storage
# 5. 重启服务
systemctl restart nginx
systemctl restart php8.0-fpm
```
#### 4.3 配置说明
- **数据库配置**:修改`.env`文件中的`DATABASE`部分
- **缓存配置**:开启Redis缓存(`.env``CACHE_TYPE=redis`,配置Redis连接)
- **站点信息**:修改`config/site.php`中的站点名称、描述、URL等
- **邮件配置**:配置SMTP信息(用于用户注册验证、找回密码)
### 5. 使用说明
#### 5.1 前台使用
- **首页**:展示最新文章、热门文章、分类/标签云
- **文章详情**:阅读全文、发表评论、点赞/收藏、分享
- **分类/标签**:点击分类/标签查看相关文章列表
- **搜索**:输入关键词搜索文章标题/内容
- **用户中心**:登录后查看个人资料、我的文章、我的收藏
#### 5.2 后台使用
- **登录**:访问`/admin`,使用管理员账号(默认`admin/admin123`
- **仪表盘**:查看数据概览、最新文章/评论、热门文章
- **内容管理**
- 文章:发布/编辑(支持Markdown/WangEditor)、删除、置顶
- 分类/标签:添加/编辑/删除,排序分类权重
- 评论:审核(通过/拒绝)、删除、批量操作
- **用户管理**:添加/编辑用户、分配角色(管理员/编辑/普通用户)
- **统计分析**:查看访客记录、热门页面、访问趋势图表
### 6. 数据库设计
详见前文《数据库表结构整理》,包含10张核心表(用户、文章、分类、标签、评论、点赞、收藏、访客等),支持完整的博客功能和数据关联。
### 7. API接口(核心)
| 接口路径 | 方法 | 参数 | 说明 |
|------------------------|------|-------------------------------|--------------------------|
| `/login` | POST | username, password | 用户登录 |
| `/register` | POST | username, password, email | 用户注册 |
| `/article/save` | POST | title, content, category_id | 发布文章 |
| `/comment/add` | POST | article_id, content, parent_id | 发表评论 |
| `/interaction/like/:id` | POST | - | 点赞/取消点赞文章 |
| `/interaction/favorite/:id` | POST | - | 收藏/取消收藏文章 |
| `/admin/comment/approve/:id` | POST | - | 审核评论(后台) |
### 8. 常见问题
#### 8.1 安装问题
- **Composer安装慢**:配置国内镜像 `composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/`
- **数据库连接失败**:检查`.env`文件中的数据库账号密码是否正确,MySQL是否允许远程连接
#### 8.2 功能问题
- **评论不显示**:检查评论状态是否为“已通过”(`status=1`),评论是否需要审核
- **图片上传失败**:确认`public/upload`目录权限(755),PHP配置`upload_max_filesize`是否足够
#### 8.3 性能问题
- **页面加载慢**:开启Redis缓存(热点数据缓存),压缩静态资源(CSS/JS合并压缩)
### 9. 附录
- **参考文档**
- https://www.kancloud.cn/manual/thinkphp8_0
- https://layui.dev/
- https://www.wangeditor.com/
- **鸣谢**:感谢开源社区提供的框架和工具支持
## 二、应用目录结构
### 完整目录树
```
blog/ # 应用目录(核心代码)
├─ controller/ # 控制器目录
│ ├─ Admin/ # 后台控制器
│ │ ├─ Dashboard.php # 仪表盘控制器
│ │ ├─ Article.php # 文章管理控制器
│ │ ├─ Category.php # 分类管理控制器
│ │ ├─ Tag.php # 标签管理控制器
│ │ ├─ Comment.php # 评论管理控制器
│ │ ├─ User.php # 用户管理控制器
│ │ ├─ Stat.php # 统计分析控制器
│ │ └─ Setting.php # 系统设置控制器
│ ├─ Auth.php # 认证控制器(登录/注册/退出)
│ ├─ Articler.php # 前台文章控制器(详情/列表)
│ ├─ Comment.php # 前台评论控制器(发表/删除)
│ ├─ Interaction.php # 互动控制器(点赞/收藏)
│ ├─ Index.php # 前台首页控制器
│ └─ Rss.php # RSS订阅控制器
├─ model/ # 模型目录(数据库映射)
│ ├─ User.php # 用户模型
│ ├─ BlogArticle.php # 文章模型
│ ├─ BlogCategory.php # 分类模型
│ ├─ BlogTag.php # 标签模型
│ ├─ BlogComment.php # 评论模型
│ ├─ BlogLike.php # 点赞模型
│ ├─ BlogFavorite.php # 收藏模型
│ └─ BlogVisit.php # 访客模型
├─ view/ # 视图目录(模板文件)
│ ├─ admin/ # 后台视图
│ │ ├─ dashboard/ # 仪表盘视图
│ │ ├─ article/ # 文章管理视图
│ │ ├─ category/ # 分类管理视图
│ │ ├─ tag/ # 标签管理视图
│ │ ├─ comment/ # 评论管理视图
│ │ ├─ user/ # 用户管理视图
│ │ ├─ stat/ # 统计分析视图
│ │ ├─ setting/ # 系统设置视图
│ │ └─ layout/ # 后台布局模板
│ ├─ auth/ # 认证视图(登录/注册)
│ ├─ index/ # 前台视图
│ │ ├─ article/ # 文章详情/列表视图
│ │ ├─ category/ # 分类文章列表视图
│ │ ├─ tag/ # 标签文章列表视图
│ │ ├─ search/ # 搜索结果视图
│ │ ├─ _comment.html # 评论组件视图
│ │ └─ _sidebar.html # 侧边栏组件视图
│ └─ layout/ # 前台布局模板(base.html
├─ middleware/ # 中间件目录
│ │ ├─ Auth.php # 用户认证中间件
│ │ ├─ AdminAuth.php # 管理员权限中间件
│ │ └─ Visit.php # 访客统计中间件
└─ service/ # 服务层(可选,封装业务逻辑)
│ ├─ UserService.php # 用户服务
│ └─ ArticleService.php # 文章服务
├─ config/ # 配置文件目录
│ ├─ app.php # 应用配置(调试模式、时区等)
│ ├─ database.php # 数据库配置
│ ├─ cache.php # 缓存配置(Redis
│ ├─ route.php # 路由配置(可选)
│ └─ site.php # 站点信息配置(名称、描述等)
├─ public/ # 公共资源目录(Web根目录)
│ ├─ static/ # 静态资源
│ │ ├─ layui/ # Layui框架文件
│ │ ├─ wangEditor/ # 富文本编辑器
│ │ ├─ css/ # 自定义CSS
│ │ │ ├─ main.css # 前台样式
│ │ │ └─ admin.css # 后台样式
│ │ ├─ js/ # 自定义JS
│ │ │ ├─ main.js # 前台脚本
│ │ │ └─ admin.js # 后台脚本
│ │ └─ images/ # 图片资源(头像、默认封面等)
│ ├─ upload/ # 上传文件目录(图片、附件)
│ ├─ index.php # 入口文件(单应用模式)
│ └─ router.php # 路由入口(可选)
├─ route/ # 路由目录
│ ├─ app.php # 路由定义(分组路由、资源路由)
│ └─ api.php # API路由(可选)
├─ database/ # 数据库相关
│ ├─ migrations/ # 数据库迁移文件(可选)
│ ├─ seeds/ # 数据填充文件(可选)
│ └─ tp_blog.sql # 数据库表结构SQL文件
```
### 核心目录说明
- **app/controller**:存放所有控制器,按前台/后台分组,处理HTTP请求和业务逻辑分发
- **app/model**:模型类,映射数据库表,封装数据操作(关联查询、数据验证等)
- **app/view**:模板文件,使用Layui组件构建界面,支持模板继承和组件复用
- **public/static**:静态资源集中存放,便于Nginx配置缓存策略
- **route/app.php**:路由定义文件,配置URL与控制器方法的映射关系
- **storage**:运行时生成的文件(日志、缓存),需确保写入权限
以上文档和目录结构覆盖了项目的全生命周期,可作为开发、部署和维护的参考手册。如需扩展功能(如第三方登录、Markdown支持),可在对应目录下新增模块。