# 时光舱 **Repository Path**: trident-mall/trident-cloud-storage ## Basic Information - **Project Name**: 时光舱 - **Description**: 三叉戟云盘,包含【接口、管理平台PC版、管理平台桌面版、前端PC版、前端小程序版、前端桌面版】 技术栈:golang、gin、mysql、redis、minio、es、mongo、electron、vue3、vite、ts、pinia - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-30 - **Last Updated**: 2026-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Trident Cloud Storage 云盘系统 ## 项目介绍 Trident Cloud Storage 是一款功能完善的企业级云存储系统,采用前后端分离架构设计。系统提供安全可靠的文件存储、管理、分享等功能,支持多终端访问,为用户和企业提供一站式的数据存储解决方案。 系统基于微服务架构设计,具备良好的可扩展性和高可用性,支持多种存储后端和中间件集成,可灵活部署于私有云或公有云环境。 ## 核心特性 - **文件管理**:支持文件上传、下载、预览、移动、复制、重命名、删除等操作 - **多级目录**:支持无限层级文件夹创建和管理 - **文件分享**:支持文件链接分享、提取码验证、分享有效期设置 - **回收站**:文件删除后进入回收站,支持恢复和彻底删除 - **用户系统**:完整的用户注册、登录、权限管理体系 - **签到系统**:用户每日签到获取积分奖励 - **搜索功能**:支持文件名搜索和内容检索 - **多种存储后端**:支持对接多种对象存储服务 - **分布式部署**:支持集群部署和水平扩展 ## 技术架构 ### 后端技术栈 | 技术 | 用途 | |------|------| | Go 1.18 | 后端开发语言 | | Gin | Web 框架 | | GORM | ORM 数据库操作 | | MySQL | 主数据库存储 | | MongoDB | 文档数据存储 | | Redis | 缓存和会话管理 | | Elasticsearch | 全文搜索引擎 | | RabbitMQ | 消息队列 | | Consul | 服务注册发现 | | Nacos | 配置中心 | | Sentinel | 熔断限流 | | Zap | 日志记录 | ### 前端技术栈 | 技术 | 用途 | |------|------| | Vue 3 | 前端框架 | | TypeScript | 类型安全 | | Vite | 构建工具 | | Pinia | 状态管理 | | Vue Router | 路由管理 | | Sass | CSS 预处理器 | ## 目录结构 ``` trident-cloud-storage/ ├── storage-api/ # 后端服务 │ ├── main.go # 程序入口 │ ├── config/ # 配置文件目录 │ │ ├── app.yml # 应用配置 │ │ ├── database.yml # 数据库配置 │ │ ├── redis.yml # Redis 配置 │ │ ├── mongo.yml # MongoDB 配置 │ │ ├── es.yml # Elasticsearch 配置 │ │ ├── rabbit.yml # RabbitMQ 配置 │ │ ├── consul.yml # Consul 配置 │ │ ├── nacos.yml # Nacos 配置 │ │ ├── limiter.yml # 限流配置 │ │ ├── circuitbreaker.yml # 熔断配置 │ │ ├── email.yml # 邮件配置 │ │ ├── sms.yml # 短信配置 │ │ ├── wx.yml # 微信配置 │ │ └── sentinel.yaml # Sentinel 配置 │ ├── controllers/ # 控制器层 │ │ ├── BaseController.go # 基础控制器 │ │ └── v1/ # API v1 控制器 │ │ ├── FileController.go # 文件管理 │ │ ├── FileRecycleController.go # 回收站 │ │ ├── FileShareController.go # 文件分享 │ │ ├── UserController.go # 用户管理 │ │ └── UserSignInController.go # 用户签到 │ ├── models/ # 数据模型层 │ │ ├── BaseModel.go # 基础模型 │ │ ├── FileModel.go # 文件模型 │ │ ├── FileRecycleModel.go # 回收站模型 │ │ ├── FileShareModel.go # 分享模型 │ │ ├── UserModel.go # 用户模型 │ │ ├── UserAlbumModel.go # 用户相册模型 │ │ └── UserSignInModel.go # 签到模型 │ ├── middlewares/ # 中间件 │ │ ├── CorsMiddleware.go # 跨域中间件 │ │ ├── FrontendAuthMiddleware.go # 前端认证 │ │ ├── MgrAuthMiddleware.go # 后台认证 │ │ ├── IsolationMiddleware.go # 隔离中间件 │ │ ├── ParseArgsMiddleware.go # 参数解析 │ │ ├── RecoveryMiddleware.go # 异常恢复 │ │ └── ZapLoggerMiddleware.go # 日志记录 │ ├── routers/ # 路由配置 │ │ └── ApiRouter.go # API 路由 │ ├── utils/ # 工具包 │ │ ├── appInit.go # 应用初始化 │ │ ├── captcha.go # 验证码 │ │ ├── consulConfigCenter.go # Consul 配置中心 │ │ ├── customTime.go # 时间处理 │ │ ├── etcdConfigCenter.go # Etcd 配置中心 │ │ ├── helpers.go # 辅助函数 │ │ ├── mongo.go # MongoDB 操作 │ │ ├── mysqlDB.go # MySQL 连接 │ │ ├── mysqlJsonLog.go # JSON 日志 │ │ ├── nacosConfigCenter.go # Nacos 配置中心 │ │ ├── pluginElasticSearch.go # Elasticsearch 操作 │ │ ├── rabbit.go # RabbitMQ 操作 │ │ ├── redis.go # Redis 操作 │ │ ├── reliabilityRabbit.go # 可靠消息 │ │ ├── sentinel.go # 熔断限流 │ │ ├── token.go # Token 管理 │ │ └── zapLogger.go # 日志配置 │ ├── constants/ # 常量定义 │ │ └── order.go # 订单状态 │ ├── Dockerfile # Docker 构建文件 │ ├── docker-compose.yaml # Docker Compose │ ├── deploy.yaml # 部署配置 │ └── go.mod # Go 依赖 │ └── storage-frontend-pc/ # 前端应用 ├── src/ │ ├── main.ts # 应用入口 │ ├── App.vue # 根组件 │ ├── router/ # 路由配置 │ ├── stores/ # Pinia 状态管理 │ ├── apis/ # API 接口定义 │ ├── components/ # 公共组件 │ │ ├── TridentAudioPlayer.vue # 音频播放 │ │ ├── TridentVideoPlayer.vue # 视频播放 │ │ ├── TridentHeader.vue # 头部组件 │ │ ├── TridentMenu.vue # 菜单组件 │ │ ├── TridentUploadTask.vue # 上传任务 │ │ ├── TridentChooseFolder.vue # 选择文件夹 │ │ └── ... │ ├── views/ # 页面视图 │ │ ├── login/ # 登录页面 │ │ ├── register/ # 注册页面 │ │ ├── home/ # 首页 │ │ ├── manage/ # 管理后台 │ │ ├── me/ # 个人中心 │ │ ├── share/ # 分享页面 │ │ └── recycle/ # 回收站 │ ├── utils/ # 工具函数 │ ├── directives/ # 自定义指令 │ ├── hooks/ # 组合式函数 │ ├── styles/ # 样式文件 │ └── types/ # TypeScript 类型 ├── public/ # 静态资源 ├── package.json # 依赖配置 ├── vite.config.ts # Vite 配置 └── tsconfig.json # TypeScript 配置 ``` ## 安装部署 ### 环境要求 - Go 1.18+ - Node.js 16+ - MySQL 5.7+ - Redis 6+ - MongoDB 4+ - Elasticsearch 7+ - RabbitMQ 3.8+ ### 后端部署 1. **克隆项目** ```bash git clone https://gitee.com/trident-mall/trident-cloud-storage.git cd trident-cloud-storage/storage-api ``` 2. **安装依赖** ```bash go mod download ``` 3. **配置数据库** 编辑 `config/database.yml` 配置 MySQL 连接信息: ```yaml database: host: "localhost" port: 3306 username: "root" password: "your_password" name: "trident_cloud_storage" charset: "utf8mb4" max_idle_conns: 10 max_open_conns: 100 ``` 4. **配置 Redis** 编辑 `config/redis.yml`: ```yaml redis: host: "localhost" port: 6379 password: "" db: 0 pool_size: 100 ``` 5. **启动服务** ```bash # 开发环境 go run main.go # 或指定环境 ./single-gin --env development ``` ### 前端部署 1. **进入前端目录** ```bash cd storage-frontend-pc ``` 2. **安装依赖** ```bash npm install ``` 3. **启动开发服务器** ```bash npm run dev ``` 4. **构建生产版本** ```bash npm run build ``` ## Docker 部署 ### 使用 Docker Compose ```bash cd storage-api # 启动所有服务 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` ### 手动构建镜像 ```bash # 构建后端镜像 cd storage-api docker build -t trident-cloud-storage-api:latest . # 运行容器 docker run -d -p 8080:8080 --name trident-api \ -e RUNENV=production \ trident-cloud-storage-api:latest ``` ## 配置说明 ### 应用配置 (app.yml) ```yaml app: name: "Trident Cloud Storage" env: "development" host: "0.0.0.0" port: 8080 version: "1.0.0" ``` ### 服务注册发现 支持 Consul 和 Nacos 两种服务注册发现方式: ```yaml # consul.yml consul: host: "localhost" port: 8500 token: "" service_name: "trident-storage-api" service_host: "localhost" service_port: 8080 # nacos.yml nacos: host: "localhost" port: 8848 username: "nacos" password: "nacos" namespace_id: "your_namespace_id" ``` ### 熔断限流 ```yaml # limiter.yml limiter: enabled: true rate: 100 burst: 200 # circuitbreaker.yml circuitbreaker: enabled: true threshold: 50 recovery: 30 ``` ## API 接口 ### 用户接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/v1/user/login` | POST | 用户登录 | | `/api/v1/user/mobile/login` | POST | 手机验证码登录 | | `/api/v1/user/register` | POST | 用户注册 | | `/api/v1/user/refresh-token` | POST | 刷新 Token | | `/api/v1/user/detail` | GET | 获取用户信息 | | `/api/v1/user/edit` | PUT | 编辑用户信息 | | `/api/v1/user/change-password` | PUT | 修改密码 | ### 文件接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/v1/file/add` | POST | 上传文件 | | `/api/v1/file/list` | GET | 文件列表 | | `/api/v1/file/search` | GET | 搜索文件 | | `/api/v1/file/edit` | PUT | 编辑文件 | | `/api/v1/file/move` | PUT | 移动文件 | | `/api/v1/file/delete` | DELETE | 删除文件 | | `/api/v1/file/total` | GET | 文件统计 | ### 分享接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/v1/file/share` | POST | 创建分享 | | `/api/v1/file/share/list` | GET | 分享列表 | | `/api/v1/file/share/cancel` | DELETE | 取消分享 | | `/api/v1/file/share/detail` | GET | 分享详情 | | `/api/v1/file/share/verify` | POST | 验证提取码 | ### 回收站接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/v1/file/recycle/list` | GET | 回收站列表 | | `/api/v1/file/recycle/total` | GET | 回收站统计 | | `/api/v1/file/recycle/revivification` | POST | 恢复文件 | | `/api/v1/file/recycle/destroy` | DELETE | 彻底删除 | ### 签到接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/v1/user/sign-in/add` | POST | 用户签到 | | `/api/v1/user/sign-in/list` | GET | 签到记录 | | `/api/v1/user/sign-in/total` | GET | 签到统计 | ## 中间件说明 | 中间件 | 用途 | |--------|------| | CORS | 处理跨域请求,支持OPTIONS预检 | | FrontendAuth | 前端用户认证,验证 Token | | MgrAuth | 后台管理员认证 | | Isolation | 请求隔离,防止并发问题 | | ParseArgs | 请求参数解析和校验 | | Recovery | 异常捕获和恢复 | | ZapLogger | 请求日志记录 | ## 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交改动 (`git commit -m 'Add some AmazingFeature'`) 4. 推送分支 (`git push origin feature/AmazingFeature`) 5. 发起 Pull Request ## 许可证 本项目基于 MIT 协议开源,详情请参阅 [LICENSE](LICENSE) 文件。 ## 联系方式 - 项目地址:https://gitee.com/trident-mall/trident-cloud-storage - 问题反馈:https://gitee.com/trident-mall/trident-cloud-storage/issues