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

109 lines
2.7 KiB
Markdown

# yoyuzh-portal-backend
`yoyuzh.xyz` 的 Spring Boot 3.x 后端,提供:
- 用户注册、登录、JWT 鉴权、用户信息接口
- 个人网盘上传、下载、删除、目录管理、分页列表
- CQU 课表与成绩聚合接口
- Swagger 文档、统一异常、日志输出
## 环境要求
- JDK 17+
- Maven 3.9+
- 生产环境使用 MySQL 8.x 或 openGauss
## 启动
默认配置:
```bash
mvn spring-boot:run
```
本地联调建议使用 `dev` 环境:
```bash
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:
```sql
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:
```sql
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 配置
部署到真实环境时修改:
```yaml
app:
cqu:
base-url: https://your-cqu-api
require-login: false
mock-enabled: false
```
当前 Java 后端保留了 HTTP 适配点;本地 `dev` 环境使用 mock 数据先把前后端链路跑通。