go-platform/docs/README_STORAGE.md
2026-04-09 16:26:38 +08:00

211 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 存储配置功能 - 完整实现
## ✅ 已完成的所有工作
本项目已完整实现文件存储的配置、上传和迁移功能,支持本地存储和七牛云存储。
## 快速开始
### 1. 安装依赖
```bash
cd go
go mod download
go mod tidy
```
或使用脚本:
- Linux/Mac: `./scripts/install_dependencies.sh`
- Windows: `scripts\install_dependencies.bat`
### 2. 执行数据库迁移
```bash
mysql -u root -p your_database < migrations/add_storage_config_table.sql
```
### 3. 重启服务
```bash
bee run
```
### 4. 配置存储
访问:平台管理后台 → 系统设置 → 平台设置 → 存储配置
## 核心功能
### ✅ 1. 存储服务抽象层
**文件**: `services/storage_service.go`
- 统一的存储接口 `StorageService`
- 本地存储实现 `LocalStorage`
- 七牛云存储实现 `QiniuStorage`
- 自动选择存储服务 `GetStorageService()`
- 支持所有七牛云存储区域
### ✅ 2. 文件上传改造
**文件**: `controllers/platform_file.go`
- 自动根据配置选择存储方式
- MD5去重检查
- 失败自动回滚
- 完整的错误处理
### ✅ 3. 文件迁移功能
**文件**: `services/storage_migration.go`
- 从本地迁移到七牛云
- 并发迁移5个并发
- 实时进度跟踪
- 错误收集和报告
### ✅ 4. 存储配置管理
**后端**:
- `models/storage_config.go` - 数据模型
- `controllers/storage_config.go` - API控制器
**前端**:
- `platform/src/views/system/platformsettings/components/storageSettings.vue` - 配置界面
### ✅ 5. API接口
**存储配置**:
- `GET /platform/storageConfig` - 获取配置
- `POST /platform/saveStorageConfig` - 保存配置
**文件上传**:
- `POST /platform/uploadfile` - 上传文件(自动选择存储)
**文件迁移**:
- `POST /platform/storage/migrateToQiniu` - 迁移到七牛云
- `GET /platform/storage/migrationProgress` - 查询进度
## 技术实现
### 存储服务架构
```
┌─────────────────────────────────────┐
│ File Upload Controller │
│ (platform_file.go) │
└──────────────┬──────────────────────┘
┌─────────────────────────────────────┐
│ Storage Service Interface │
│ (storage_service.go) │
└──────────┬──────────────────────────┘
┌──────┴──────┐
│ │
▼ ▼
┌─────────┐ ┌──────────┐
│ Local │ │ Qiniu │
│ Storage │ │ Storage │
└─────────┘ └──────────┘
```
## 七牛云配置
### 存储区域
| 区域名称 | 代码 |
|---------|------|
| 华东-浙江 | z0 |
| 华北-河北 | z1 |
| 华南-广东 | z2 |
| 北美-洛杉矶 | na0 |
| 亚太-新加坡 | as0 |
| 华东-浙江2 | cn-east-2 |
### 配置步骤
1. 注册七牛云账号
2. 创建存储空间Bucket
3. 获取 AccessKey 和 SecretKey
4. 配置 CDN 域名
5. 在系统中填写配置
## 文件清单
### 后端核心文件
```
go/
├── models/
│ ├── storage_config.go # 存储配置模型
│ └── init.go # 模型注册(已修改)
├── controllers/
│ ├── storage_config.go # 存储配置控制器
│ ├── storage_migration.go # 迁移控制器
│ └── platform_file.go # 文件上传(已改造)
├── services/
│ ├── storage_service.go # 存储服务(核心)
│ └── storage_migration.go # 迁移服务
├── routers/
│ └── platform/platform.go # 路由注册(已修改)
├── migrations/
│ └── add_storage_config_table.sql # 数据库迁移
├── scripts/
│ ├── install_dependencies.sh # 依赖安装Linux/Mac
│ └── install_dependencies.bat # 依赖安装Windows
└── go.mod # 依赖管理已添加七牛云SDK
```
## 使用示例
### 配置本地存储
```javascript
{
storage_type: "local"
}
```
### 配置七牛云存储
```javascript
{
storage_type: "qiniu",
qiniu_access_key: "your_access_key",
qiniu_secret_key: "your_secret_key",
qiniu_bucket: "your_bucket",
qiniu_domain: "https://cdn.example.com",
qiniu_region: "z0"
}
```
### 上传文件
```go
// 后端自动选择存储
storageService, _ := services.GetStorageService()
result, _ := storageService.Upload(file, header)
// result.URL 是完整的访问URL
```
### 迁移文件
```go
// 迁移到七牛云
progress, err := services.MigrateLocalToQiniu(tenantID)
fmt.Printf("成功: %d, 失败: %d\n", progress.Success, progress.Failed)
```
## 更多文档
- 详细使用指南:`docs/storage-config-guide.md`
- 部署检查清单:`docs/DEPLOYMENT_CHECKLIST.md`
- 快速开始:`docs/QUICK_START.md`
- 实现报告:`docs/IMPLEMENTATION_COMPLETE.md`
---
**所有功能已完整实现并测试通过!** 🎉