first commit

This commit is contained in:
2025-09-23 07:35:11 +00:00
commit a5dd3f1335
110 changed files with 46108 additions and 0 deletions

View File

@@ -0,0 +1,238 @@
# 梦回高句丽视频分享平台技术架构文档
## 1. Architecture design
```mermaid
graph TD
A[用户浏览器] --> B[Vue3 前端应用]
B --> C[Node.js + Express 后端]
C --> D[SQLite 数据库]
C --> E[文件存储系统]
B --> F[本地缓存系统]
subgraph "前端层"
B
F
end
subgraph "后端层"
C
end
subgraph "数据层"
D
E
end
```
## 2. Technology Description
- 前端: Vue3@3.3+ + TypeScript@5.0+ + Element Plus@2.4+ + Vite@4.0+
- 后端: Node.js@18+ + Express@4.18+ + SQLite@3.0+
- 其他依赖: axios (HTTP客户端), vue-router (路由), pinia (状态管理), multer (文件上传)
## 3. Route definitions
| Route | Purpose |
|-------|----------|
| / | 首页,瀑布流视频展示和搜索功能 |
| /video/:id | 视频详情页,视频播放和详细信息 |
| /user/:id | 用户详情页,用户上传视频列表 |
| /search | 搜索结果页,关键词搜索结果展示 |
| /admin/login | 后台登录页,管理员身份验证 |
| /admin/dashboard | 后台管理首页,数据统计概览 |
| /admin/videos | 后台视频管理,视频增删改查 |
| /admin/upload | 后台视频上传,文件上传和信息编辑 |
## 4. API definitions
### 4.1 Core API
视频相关接口
```
GET /api/videos
```
Request:
| Param Name | Param Type | isRequired | Description |
|------------|------------|------------|-------------|
| page | number | false | 页码默认1 |
| limit | number | false | 每页数量默认20 |
| search | string | false | 搜索关键词 |
| userId | string | false | 用户ID筛选 |
Response:
| Param Name | Param Type | Description |
|------------|------------|-------------|
| success | boolean | 请求状态 |
| data | object | 视频列表数据 |
| total | number | 总数量 |
```
POST /api/videos
```
Request:
| Param Name | Param Type | isRequired | Description |
|------------|------------|------------|-------------|
| title | string | true | 视频标题 |
| description | string | false | 视频描述 |
| videoFile | file | true | 视频文件 |
| coverFile | file | false | 封面图片 |
| isVisible | boolean | false | 是否可见 |
| isRecommended | boolean | false | 是否推荐 |
用户认证接口
```
POST /api/auth/login
```
Request:
| Param Name | Param Type | isRequired | Description |
|------------|------------|------------|-------------|
| username | string | true | 用户名 |
| password | string | true | 密码 |
Response:
| Param Name | Param Type | Description |
|------------|------------|-------------|
| success | boolean | 登录状态 |
| token | string | JWT令牌 |
| user | object | 用户信息 |
## 5. Server architecture diagram
```mermaid
graph TD
A[客户端请求] --> B[Express 路由层]
B --> C[中间件层]
C --> D[控制器层]
D --> E[服务层]
E --> F[数据访问层]
F --> G[(SQLite数据库)]
subgraph 服务器
B
C
D
E
F
end
subgraph 中间件
H[身份验证]
I[文件上传]
J[错误处理]
K[日志记录]
end
C --> H
C --> I
C --> J
C --> K
```
## 6. Data model
### 6.1 Data model definition
```mermaid
erDiagram
USERS ||--o{ VIDEOS : uploads
VIDEOS ||--o{ VIDEO_STATS : has
USERS {
int id PK
string username
string password_hash
string email
datetime created_at
datetime updated_at
}
VIDEOS {
int id PK
string title
text description
string video_url
string cover_url
int user_id FK
int view_count
boolean is_visible
boolean is_recommended
boolean is_hot
datetime created_at
datetime updated_at
}
VIDEO_STATS {
int id PK
int video_id FK
int view_count
datetime last_viewed
datetime created_at
}
```
### 6.2 Data Definition Language
用户表 (users)
```sql
-- 创建用户表
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
email TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 创建索引
CREATE INDEX idx_users_username ON users(username);
-- 初始化管理员账户
INSERT INTO users (username, password_hash, email) VALUES
('admin', '$2b$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin@goguryeo.com');
```
视频表 (videos)
```sql
-- 创建视频表
CREATE TABLE videos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
video_url TEXT NOT NULL,
cover_url TEXT,
user_id INTEGER NOT NULL,
view_count INTEGER DEFAULT 0,
is_visible INTEGER DEFAULT 1,
is_recommended INTEGER DEFAULT 0,
is_hot INTEGER DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- 创建索引
CREATE INDEX idx_videos_user_id ON videos(user_id);
CREATE INDEX idx_videos_created_at ON videos(created_at DESC);
CREATE INDEX idx_videos_view_count ON videos(view_count DESC);
CREATE INDEX idx_videos_title ON videos(title);
```
视频统计表 (video_stats)
```sql
-- 创建视频统计表
CREATE TABLE video_stats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_id INTEGER NOT NULL,
view_count INTEGER DEFAULT 0,
last_viewed DATETIME DEFAULT CURRENT_TIMESTAMP,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE
);
-- 创建索引
CREATE INDEX idx_video_stats_video_id ON video_stats(video_id);
CREATE INDEX idx_video_stats_last_viewed ON video_stats(last_viewed DESC);
```