Files
my_site/backend

yoyuzh-portal-backend

yoyuzh.xyz 的 Spring Boot 3.x 后端,提供:

  • 用户注册、登录、JWT 鉴权、用户信息接口
  • 个人网盘上传、下载、删除、目录管理、分页列表
  • 快传会话与浏览器间 P2P 信令接口
  • Swagger 文档、统一异常、日志输出

环境要求

  • JDK 17+
  • Maven 3.9+
  • 生产环境使用 MySQL 8.x 或 openGauss

启动

默认配置:

APP_JWT_SECRET=<至少32字节的随机密钥> \
mvn spring-boot:run

本地联调建议使用 dev 环境:

APP_JWT_SECRET=<至少32字节的随机密钥> \
mvn spring-boot:run -Dspring-boot.run.profiles=dev

dev 环境特点:

  • 数据库使用 H2 文件库
  • 方便和 vue/ 前端直接联调

JWT 启动要求:

  • app.jwt.secret 不能为空
  • 不允许使用默认占位值
  • 至少需要 32 字节强密钥
  • 仓库内的 application.yml / application-dev.yml 只从环境变量 APP_JWT_SECRET 读取,不再内置可直接启动的默认 secret

访问地址

  • Swagger: http://localhost:8080/swagger-ui.html
  • H2 Console: http://localhost:8080/h2-console(仅 dev 环境)

数据库脚本

  • MySQL: sql/mysql-init.sql
  • openGauss: sql/opengauss-init.sql

旧库升级

如果服务器数据库是按旧版脚本初始化的,旧教务相关字段和表可以保留但不会再被当前代码使用。新环境请直接使用最新初始化脚本,不再创建教务缓存表。

MySQL:

DROP TABLE IF EXISTS portal_course;
DROP TABLE IF EXISTS portal_grade;

openGauss:

DROP TABLE IF EXISTS portal_course;
DROP TABLE IF EXISTS portal_grade;

主要接口

  • POST /api/auth/register
  • POST /api/auth/login
  • POST /api/auth/refresh
  • GET /api/user/profile
  • POST /api/files/upload
  • POST /api/files/upload/initiate
  • POST /api/files/upload/complete
  • POST /api/files/mkdir
  • GET /api/files/list
  • GET /api/files/download/{fileId}
  • GET /api/files/download/{fileId}/url
  • DELETE /api/files/{fileId}
  • POST /api/transfer/sessions
  • GET /api/transfer/sessions/lookup
  • POST /api/transfer/sessions/{sessionId}/join
  • POST /api/transfer/sessions/{sessionId}/signals
  • GET /api/transfer/sessions/{sessionId}/signals

OSS 直传说明

生产环境如果启用:

YOYUZH_STORAGE_PROVIDER=oss
YOYUZH_OSS_ENDPOINT=https://oss-ap-northeast-1.aliyuncs.com
YOYUZH_OSS_BUCKET=your-bucket
YOYUZH_OSS_ACCESS_KEY_ID=...
YOYUZH_OSS_ACCESS_KEY_SECRET=...

前端会先调用后端拿签名上传地址,再由浏览器直接把文件内容传到 OSS。为保证浏览器可以直传请在 OSS Bucket 上放行站点域名对应的 CORS 规则,至少允许:

  • Origin: https://yoyuzh.xyz
  • Methods: PUT, GET, HEAD
  • Headers: Content-Type, x-oss-*

如果生产环境里曾经存在“数据库元数据已经在 OSS 模式下运行,但本地磁盘里没有对应文件”的历史数据,需要额外做一次对象迁移或元数据修复;否则旧记录在重命名/删除时仍可能失败。