diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..9ff8bc8 Binary files /dev/null and b/.DS_Store differ diff --git a/backend/.DS_Store b/backend/.DS_Store new file mode 100644 index 0000000..bf1e7f8 Binary files /dev/null and b/backend/.DS_Store differ diff --git a/backend/README.md b/backend/README.md index 7742c10..7efbb91 100644 --- a/backend/README.md +++ b/backend/README.md @@ -43,6 +43,43 @@ mvn spring-boot:run -Dspring-boot.run.profiles=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` diff --git a/backend/sql/mysql-init.sql b/backend/sql/mysql-init.sql index ec97608..97a34ec 100644 --- a/backend/sql/mysql-init.sql +++ b/backend/sql/mysql-init.sql @@ -7,6 +7,8 @@ CREATE TABLE IF NOT EXISTS portal_user ( email VARCHAR(128) NOT NULL, password_hash VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + last_school_student_id VARCHAR(64), + last_school_semester VARCHAR(64), CONSTRAINT uk_portal_user_username UNIQUE (username), CONSTRAINT uk_portal_user_email UNIQUE (email) ); @@ -29,6 +31,8 @@ CREATE TABLE IF NOT EXISTS portal_course ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL, course_name VARCHAR(255) NOT NULL, + semester VARCHAR(64), + student_id VARCHAR(64), teacher VARCHAR(255), classroom VARCHAR(255), day_of_week INT, @@ -44,11 +48,14 @@ CREATE TABLE IF NOT EXISTS portal_grade ( course_name VARCHAR(255) NOT NULL, grade DOUBLE NOT NULL, semester VARCHAR(64) NOT NULL, + student_id VARCHAR(64), created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_portal_grade_user FOREIGN KEY (user_id) REFERENCES portal_user (id) ); CREATE INDEX idx_user_created_at ON portal_user (created_at); CREATE INDEX idx_file_created_at ON portal_file (created_at); +CREATE INDEX idx_course_user_semester ON portal_course (user_id, semester, student_id); CREATE INDEX idx_course_user_created ON portal_course (user_id, created_at); +CREATE INDEX idx_grade_user_semester ON portal_grade (user_id, semester, student_id); CREATE INDEX idx_grade_user_created ON portal_grade (user_id, created_at); diff --git a/backend/sql/opengauss-init.sql b/backend/sql/opengauss-init.sql index 01eeefa..db3414e 100644 --- a/backend/sql/opengauss-init.sql +++ b/backend/sql/opengauss-init.sql @@ -3,7 +3,9 @@ CREATE TABLE IF NOT EXISTS portal_user ( username VARCHAR(64) NOT NULL UNIQUE, email VARCHAR(128) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + last_school_student_id VARCHAR(64), + last_school_semester VARCHAR(64) ); CREATE TABLE IF NOT EXISTS portal_file ( @@ -23,6 +25,8 @@ CREATE TABLE IF NOT EXISTS portal_course ( id BIGSERIAL PRIMARY KEY, user_id BIGINT NOT NULL REFERENCES portal_user (id), course_name VARCHAR(255) NOT NULL, + semester VARCHAR(64), + student_id VARCHAR(64), teacher VARCHAR(255), classroom VARCHAR(255), day_of_week INTEGER, @@ -37,10 +41,13 @@ CREATE TABLE IF NOT EXISTS portal_grade ( course_name VARCHAR(255) NOT NULL, grade DOUBLE PRECISION NOT NULL, semester VARCHAR(64) NOT NULL, + student_id VARCHAR(64), created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_user_created_at ON portal_user (created_at); CREATE INDEX IF NOT EXISTS idx_file_created_at ON portal_file (created_at); +CREATE INDEX IF NOT EXISTS idx_course_user_semester ON portal_course (user_id, semester, student_id); CREATE INDEX IF NOT EXISTS idx_course_user_created ON portal_course (user_id, created_at); +CREATE INDEX IF NOT EXISTS idx_grade_user_semester ON portal_grade (user_id, semester, student_id); CREATE INDEX IF NOT EXISTS idx_grade_user_created ON portal_grade (user_id, created_at); diff --git a/backend/src/.DS_Store b/backend/src/.DS_Store new file mode 100644 index 0000000..55e74ca Binary files /dev/null and b/backend/src/.DS_Store differ