# bytecast **Repository Path**: attacker/bytecast ## Basic Information - **Project Name**: bytecast - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-27 - **Last Updated**: 2026-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 项目架构 ``` . # 项目根目录 ├── backend/ # Gin 后端 (完整源代码) │ ├── main.go # 入口文件 │ ├── config/ # 配置管理 │ │ └── config.go # 环境变量配置 (DB/JWT/华为云) │ ├── controllers/ # API 控制器 │ │ ├── auth.go # 认证控制器 (短信/微信/密码登录) │ │ ├── course.go # 课程控制器 (CRUD/分类/专栏) │ │ ├── video.go # 视频控制器 (播放签名/进度/VOD回调) │ │ ├── student.go # 学员控制器 (我的课程/订单/购买) │ │ └── admin.go # 管理后台 (仪表盘/用户/课程/附件/订单) │ ├── middleware/ # 中间件 │ │ └── jwt.go # JWT认证 + 管理员权限 + CORS │ ├── models/ # 数据模型 (GORM) │ │ ├── db.go # 数据库连接 + 自动迁移 │ │ ├── user.go # 用户模型 (支持微信登录/VIP) │ │ └── course.go # 课程/章节/课时/附件/订单模型 │ ├── routers/ # 路由 │ │ └── router.go # 完整路由配置 (公开/认证/管理员) │ ├── services/ # 业务服务 │ │ └── huawei_vod.go # 华为云VOD集成 (Key防盗链签名) │ ├── utils/ # 工具函数 │ │ ├── response.go # 统一响应封装 │ │ └── video_sign.go # 视频签名算法 (HMAC-SHA256) │ ├── Dockerfile # 后端Docker构建 │ └── .env.example # 环境变量模板 ├── frontend/ # Vue3 前端 (完整源代码) │ ├── src/ │ │ ├── main.js # Vue入口 (Pinia + Element Plus) │ │ ├── App.vue # 根组件 │ │ ├── router/ # Vue Router │ │ │ └── index.js # 路由配置 (含权限守卫) │ │ ├── stores/ # Pinia状态管理 │ │ │ └── user.js # 用户Store (登录/JWT) │ │ ├── api/ # API封装 (Axios) │ │ │ ├── request.js # 请求拦截器 │ │ │ ├── auth.js # 认证API │ │ │ ├── course.js # 课程API │ │ │ ├── video.js # 视频API │ │ │ ├── student.js # 学员API │ │ │ └── admin.js # 管理后台API │ │ ├── layouts/ # 布局组件 │ │ │ ├── MainLayout.vue # 主布局 (导航栏) │ │ │ ├── StudentLayout.vue # 学员中心布局 │ │ │ └── AdminLayout.vue # 管理后台布局 │ │ ├── components/ # 公共组件 │ │ │ └── LoginDialog.vue # 登录弹窗 (手机号/微信/密码) │ │ └── pages/ # 页面组件 │ │ ├── Home.vue # 首页 │ │ ├── Courses.vue # 课程列表 │ │ ├── CourseDetail.vue # 课程详情 │ │ ├── Bundles.vue # 专栏套餐 │ │ ├── Player.vue # 视频播放器 (附件下载/章节导航) │ │ ├── student/ # 学员中心 │ │ │ ├── MyCourses.vue │ │ │ └── MyOrders.vue │ │ └── admin/ # 管理后台 │ │ ├── Dashboard.vue │ │ ├── Users.vue │ │ ├── Courses.vue │ │ ├── Bundles.vue │ │ ├── Vod.vue # 华为云VOD管理 │ │ ├── Attachments.vue │ │ ├── Orders.vue │ │ └── Settings.vue │ ├── Dockerfile # 前端Docker构建 (Nginx) │ ├── nginx.conf # Nginx配置 (反向代理/API) │ └── package.json # 依赖配置 ├── docs/ # 文档资料 │ ├── SPEC.md # 产品需求文档 │ ├── plan.md # 项目计划 │ ├── archive-readme.md # 历史 README 归档 │ └── debug_home.png # 页面截图 ├── docker-compose.yml # 一键部署 (MySQL + Redis + Backend + Frontend) ├── run.sh # 统一启动脚本 (本地开发 / Docker / 构建) └── README.md # 项目说明 ``` 快速开始 ```bash # 本地调试前后端(需提前启动 MySQL/Redis,或用 docker 一键启动) ./run.sh dev # Docker 一键部署(含 MySQL/Redis/Backend/Nginx) ./run.sh docker # 停止本地服务 ./run.sh stop ``` 对象存储配置 支持华为云 OBS 和任意 S3 兼容对象存储(MinIO / RustFS / AWS S3 / 阿里云 OSS 兼容模式)。 **存储密钥不再放在 `.env` 或 `docker-compose.yml` 中**,请登录管理后台 -> 系统设置 -> 对象存储配置 进行配置,配置会保存到数据库。 配置示例: ```bash # 华为 OBS storage.type=huawei storage.huawei.access_key=xxx storage.huawei.secret_key=xxx storage.huawei.obs_endpoint=obs.cn-north-4.myhuaweicloud.com storage.huawei.obs_bucket=geekbase-videos # MinIO / RustFS / S3 兼容 storage.type=s3 storage.s3.endpoint=http://localhost:9000 storage.s3.bucket=geekbase-videos storage.s3.access_key=xxx storage.s3.secret_key=xxx storage.s3.region=us-east-1 storage.s3.use_ssl=false storage.s3.path_style=true ``` 上传流程: 1. 管理后台调用 `POST /admin/vod/upload`,后端返回对象 key + 预签名上传 URL 2. 前端直接 PUT 文件到该 URL(直传到对象存储) 3. 上传完成后回调 `POST /vod/callback` 更新视频状态 4. 播放时后端根据对象 key 生成预签名下载 URL 5. 修改存储配置后自动热重载,无需重启服务 核心功能 | 模块 | 功能 | | -------- | -------------------------------------------------------------------- | | 用户系统 | 手机号+验证码登录、密码登录、微信登录、JWT认证、角色权限 | | 课程系统 | 20门课程、5大专题、章节/课时管理、专栏套餐捆绑销售 | | 视频播放 | 对象存储直传、预签名播放URL、课时附件下载、学习进度 | | 管理后台 | 仪表盘统计、用户/课程/专栏/VOD/附件/订单管理、系统设置 | | 对象存储 | 华为云 OBS / S3 / MinIO / RustFS / OSS 兼容存储 | | 安全机制 | 视频签名URL过期(30分钟)、JWT认证、管理员权限控制、CORS | 演示账号 | 角色 | 用户名 | 密码/验证码 | | ------ | ----------- | ----------- | | 管理员 | admin | admin | | 学员 | 18072111111 | 111111 | 技术栈 - 后端: Gin + GORM + JWT + 华为云 Go SDK - 前端: Vue3 + Vite + Pinia + Element Plus (JS版本) - 视频: 对象存储直传 (华为 OBS / S3 / MinIO / RustFS) + CDN + Key防盗链 - 部署: Docker Compose (MySQL + Redis + Nginx)