Files
my_site/backend/README.md
2026-03-17 17:06:29 +08:00

2.7 KiB

yoyuzh-portal-backend

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

  • 用户注册、登录、JWT 鉴权、用户信息接口
  • 个人网盘上传、下载、删除、目录管理、分页列表
  • CQU 课表与成绩聚合接口
  • Swagger 文档、统一异常、日志输出

环境要求

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

启动

默认配置:

mvn spring-boot:run

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

mvn spring-boot:run -Dspring-boot.run.profiles=dev

dev 环境特点:

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

访问地址

  • 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

旧库升级

如果服务器数据库是按旧版脚本初始化的,需要先补齐下面这些字段,否则登录后的首页接口可能在查询用户、课表或成绩时直接报 500。

MySQL:

ALTER TABLE portal_user
    ADD COLUMN last_school_student_id VARCHAR(64) NULL,
    ADD COLUMN last_school_semester VARCHAR(64) NULL;

ALTER TABLE portal_course
    ADD COLUMN semester VARCHAR(64) NULL,
    ADD COLUMN student_id VARCHAR(64) NULL;

ALTER TABLE portal_grade
    ADD COLUMN student_id VARCHAR(64) NULL;

CREATE INDEX idx_course_user_semester ON portal_course (user_id, semester, student_id);
CREATE INDEX idx_grade_user_semester ON portal_grade (user_id, semester, student_id);

openGauss:

ALTER TABLE portal_user ADD COLUMN IF NOT EXISTS last_school_student_id VARCHAR(64);
ALTER TABLE portal_user ADD COLUMN IF NOT EXISTS last_school_semester VARCHAR(64);

ALTER TABLE portal_course ADD COLUMN IF NOT EXISTS semester VARCHAR(64);
ALTER TABLE portal_course ADD COLUMN IF NOT EXISTS student_id VARCHAR(64);

ALTER TABLE portal_grade ADD COLUMN IF NOT EXISTS student_id VARCHAR(64);

CREATE INDEX IF NOT EXISTS idx_course_user_semester ON portal_course (user_id, semester, student_id);
CREATE INDEX IF NOT EXISTS idx_grade_user_semester ON portal_grade (user_id, semester, student_id);

主要接口

  • POST /api/auth/register
  • POST /api/auth/login
  • GET /api/user/profile
  • POST /api/files/upload
  • POST /api/files/mkdir
  • GET /api/files/list
  • GET /api/files/download/{fileId}
  • DELETE /api/files/{fileId}
  • GET /api/cqu/schedule
  • GET /api/cqu/grades

CQU 配置

部署到真实环境时修改:

app:
  cqu:
    base-url: https://your-cqu-api
    require-login: false
    mock-enabled: false

当前 Java 后端保留了 HTTP 适配点;本地 dev 环境使用 mock 数据先把前后端链路跑通。