fix: 修改数据库为guassdb

This commit is contained in:
Shu Guang 2025-05-18 02:27:16 +08:00
parent 618a072215
commit de6798dd25
5 changed files with 365 additions and 14388 deletions

25
.idea/dataSources.xml generated
View File

@ -28,5 +28,30 @@
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="jingsaisystem@110.40.62.21 [2]" uuid="b77bd3a0-1209-4eae-9452-a232b4ea5d98">
<driver-ref>postgresql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
<jdbc-url>jdbc:postgresql://110.40.62.21:54321/jingsaisystem</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="@localhost" uuid="a7774cf2-b8d7-47f4-b82e-0e329285e5aa">
<driver-ref>mysql_aurora.aws_wrapper</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>software.amazon.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:aws-wrapper:mysql://localhost:3306</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

View File

@ -1,152 +1,208 @@
------------------------------- 数据库初始化 -------------------------------
-- 删除现有数据库并新建UTF8编码数据库
DROP DATABASE IF EXISTS jingsaisystem;
CREATE DATABASE jingsaisystem ENCODING 'UTF8';
--
CREATE TABLE IF NOT EXISTS college_table (
college_id SERIAL PRIMARY KEY,
college_name VARCHAR(255) DEFAULT NULL
------------------------------- 禁用隐式提交 -------------------------------
BEGIN;
------------------------------- 建表语句 (兼容PostgreSQL语法) -------------------------------
-- AI竞赛助手聊天记录表
CREATE TABLE ai_competition_chat (
chat_id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
user_question TEXT NOT NULL,
ai_response TEXT NOT NULL,
chat_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
competition_type VARCHAR(50),
is_deleted SMALLINT DEFAULT 0
);
--
CREATE TABLE IF NOT EXISTS major_table (
major_table_id SERIAL PRIMARY KEY,
major_table_name VARCHAR(255) DEFAULT NULL,
college_id INT DEFAULT NULL
COMMENT ON TABLE ai_competition_chat IS 'AI竞赛助手聊天记录表';
COMMENT ON COLUMN ai_competition_chat.chat_id IS '会话ID';
COMMENT ON COLUMN ai_competition_chat.is_deleted IS '是否删除(0-未删除1-已删除)';
-- 文章表
CREATE TABLE article_table (
article_id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
article_title TEXT NOT NULL,
brief_content TEXT,
article_content TEXT NOT NULL,
competition_id BIGINT NOT NULL,
article_type VARCHAR(50) NOT NULL,
publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
--
CREATE TABLE IF NOT EXISTS user_table (
-- 学院表
CREATE TABLE college_table (
college_id BIGSERIAL PRIMARY KEY,
college_name VARCHAR(255)
);
-- 评论表
CREATE TABLE comment_table (
comment_id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
article_id BIGINT NOT NULL,
comment_content TEXT NOT NULL,
publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 竞赛表(使用微秒时间精度)
CREATE TABLE competition_table (
competition_id BIGSERIAL PRIMARY KEY,
competition_name VARCHAR(50) NOT NULL,
user_id BIGINT NOT NULL,
registration_start_time TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP(3),
registration_end_time TIMESTAMP(3),
announcement_link VARCHAR(255),
competition_status INT DEFAULT 0
);
-- 好友表
CREATE TABLE friend (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT,
friend_id BIGINT,
friend_name VARCHAR(20),
delete_flag SMALLINT DEFAULT 1
);
-- 信息表
CREATE TABLE information_table (
profile_id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
competition_id BIGINT NOT NULL,
personal_info TEXT,
related_data TEXT
);
-- 专业表
CREATE TABLE major_table (
major_table_id BIGSERIAL PRIMARY KEY,
major_table_name VARCHAR(255),
college_id BIGINT
);
-- 消息表
CREATE TABLE message (
id BIGSERIAL PRIMARY KEY,
session_id BIGINT,
user_id BIGINT,
content TEXT,
create_time TIMESTAMP
);
-- 报名表MyISAM转换
CREATE TABLE registration_table (
registration_id SERIAL PRIMARY KEY,
student_id INT NOT NULL,
competition_id INT NOT NULL,
team_leader_id INT,
competition_type VARCHAR(50) DEFAULT '校级',
award_level VARCHAR(50),
registration_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
registration_status VARCHAR(50) DEFAULT '等待学校审核',
certificate_path VARCHAR(255),
additional_info VARCHAR(255)
);
-- 会话信息表
CREATE TABLE session_massage (
id SERIAL PRIMARY KEY,
last_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 用户会话关系表
CREATE TABLE user_session (
id SERIAL PRIMARY KEY,
user_id INT,
session_id INT
);
-- 用户主表(调整自增方式)
CREATE TABLE user_table (
user_id SERIAL PRIMARY KEY,
user_name VARCHAR(50) NOT NULL,
s_t_id VARCHAR(20) NOT NULL,
user_password VARCHAR(255) NOT NULL,
user_privileges INT NOT NULL DEFAULT 1,
user_privileges INT DEFAULT 1,
email VARCHAR(50) NOT NULL,
college_id INT NOT NULL,
major_table_id INT DEFAULT NULL,
phone VARCHAR(20) DEFAULT NULL,
teacher_title VARCHAR(50) DEFAULT NULL,
birthdate DATE DEFAULT NULL,
gender VARCHAR(10) DEFAULT NULL CHECK (gender IN ('', '')),
user_status INT DEFAULT 0
major_table_id INT,
phone VARCHAR(20),
teacher_title VARCHAR(50),
birthdate TIMESTAMP,
gender VARCHAR(10),
user_status INT DEFAULT 0,
position VARCHAR(50)
);
--
CREATE TABLE IF NOT EXISTS competition_table (
competition_id SERIAL PRIMARY KEY,
competition_name VARCHAR(50) NOT NULL,
user_id INT NOT NULL,
registration_start_time TIMESTAMP WITHOUT TIME ZONE NOT NULL,
registration_end_time TIMESTAMP WITHOUT TIME ZONE NOT NULL,
announcement_link VARCHAR(255) DEFAULT '',
competition_status INT DEFAULT 0
);
--
CREATE TABLE IF NOT EXISTS information_table (
profile_id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
competition_id INT NOT NULL,
personal_info TEXT,
related_data TEXT,
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES user_table (user_id),
CONSTRAINT fk_competition_id FOREIGN KEY (competition_id) REFERENCES competition_table (competition_id),
);
--
CREATE TABLE IF NOT EXISTS registration_table (
registration_id SERIAL PRIMARY KEY,
student_id INT NOT NULL,
competition_id INT NOT NULL,
team_leader_id INT DEFAULT NULL,
competition_type VARCHAR(50) NOT NULL DEFAULT '校级' CHECK (competition_type IN ('国家级', '省级', '市/区级', '校级', '院级', '其他')),
award_level VARCHAR(50) DEFAULT NULL CHECK (award_level IN ('未获奖', '一等奖', '二等奖', '三等奖')),
registration_time TIMESTAMP WITHOUT TIME ZONE NOT NULL,
registration_status VARCHAR(50) NOT NULL DEFAULT '等待学校审核' CHECK (registration_status IN ('等待学校审核', '等待主办方审核', '成功报名', '已取消')),
certificate_path VARCHAR(255) DEFAULT '',
additional_info VARCHAR(255) DEFAULT ''
);
--
CREATE TABLE IF NOT EXISTS article_table (
article_id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
article_title TEXT NOT NULL,
brief_content TEXT,
article_content TEXT NOT NULL,
article_type VARCHAR(50) NOT NULL CHECK (article_type IN ('公告', '活动', '讨论')),
publish_time TIMESTAMP WITHOUT TIME ZONE NOT NULL,
competition_id INT
);
--
CREATE TABLE IF NOT EXISTS comment_table (
comment_id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
article_id INT NOT NULL,
comment_content TEXT NOT NULL,
publish_time TIMESTAMP WITHOUT TIME ZONE NOT NULL
);
--
ALTER TABLE major_table ADD CONSTRAINT fk_college_id FOREIGN KEY (college_id) REFERENCES college_table (college_id);
ALTER TABLE user_table ADD CONSTRAINT fk_college_id FOREIGN KEY (college_id) REFERENCES college_table (college_id);
ALTER TABLE user_table ADD CONSTRAINT fk_major_table_id FOREIGN KEY (major_table_id) REFERENCES major_table (major_table_id);
ALTER TABLE competition_table ADD CONSTRAINT competition_fk_user_id FOREIGN KEY (user_id) REFERENCES user_table (user_id);
ALTER TABLE registration_table ADD CONSTRAINT fk_competition_id FOREIGN KEY (competition_id) REFERENCES competition_table (competition_id);
ALTER TABLE registration_table ADD CONSTRAINT registration_fk_student_id FOREIGN KEY (student_id) REFERENCES user_table (user_id);
ALTER TABLE registration_table ADD CONSTRAINT registration_fk_team_leader_id FOREIGN KEY (team_leader_id) REFERENCES user_table (user_id);
ALTER TABLE article_table ADD CONSTRAINT article_fk_user_id FOREIGN KEY (user_id) REFERENCES user_table (user_id);
ALTER TABLE comment_table ADD CONSTRAINT comment_fk_user_id FOREIGN KEY (user_id) REFERENCES user_table (user_id);
ALTER TABLE comment_table ADD CONSTRAINT fk_article_id FOREIGN KEY (article_id) REFERENCES article_table (article_id);
ALTER TABLE article_table
ADD CONSTRAINT fk_article_competition_id
FOREIGN KEY (competition_id)
REFERENCES competition_table (competition_id)
ON DELETE SET NULL;
-- 用户副本表(仅供示例)
CREATE TABLE user_table_renaissance (LIKE user_table INCLUDING ALL);
--
------------------------------- 数据插入 -------------------------------
-- 文章表数据
INSERT INTO article_table (user_id, article_title, brief_content, article_content, competition_id, article_type)
VALUES (1, '计算机设计大赛', '666', '666', 1, '公告');
-- 学院数据批量插入
INSERT INTO college_table (college_name) VALUES
(NULL),
('会计学院'),
('经济贸易学院'),
('电信工程学院'),
('服装与技术贸易学院'),
('医药工程学院'),
('人文与艺术学院'),
('计算级学院'),
('国际教育学院'),
('镐京书院'),
('外语教育部'),
('思政部'),
('体育部');
(NULL), ('会计学院'), ('经济贸易学院'), ('电信工程学院'),
('服装与技术贸易学院'), ('医药工程学院'), ('人文与艺术学院'),
('计算机学院'), ('国际教育学院'), ('镐京书院'),
('外语教育部'), ('思政部'), ('体育部');
ALTER SEQUENCE college_table_college_id_seq RESTART WITH 14;
-- 评论数据
INSERT INTO comment_table (user_id, article_id, comment_content)
VALUES (276, 64, '1111');
-- 竞赛数据
INSERT INTO competition_table (competition_name, user_id, registration_start_time, registration_end_time, announcement_link) VALUES
('挑战杯', 277, '2024-06-19 22:19:25.000', '2024-06-27 22:19:28.000', '中国大学生创业计划大赛'),
('互联网+', 277, '2024-04-09 22:38:21.000', '2024-04-25 14:38:23.000', '中国国际互联网+'),
('天梯赛', 277, '2024-04-25 14:03:02.000', '2024-04-26 14:03:04.000', '111');
-- 好友数据
INSERT INTO friend (user_id, friend_id, friend_name) VALUES (1, 2, 'zhangsan');
-- 个人资料数据
INSERT INTO information_table (user_id, competition_id, personal_info, related_data) VALUES
(100, 29, 'http://cloudreveplus.oss-cn-beijing.aliyuncs.com/2024/06/22344f8a88044e4a4e906340480dee7e1a奖状.png', '这是一段文件描述');
-- 专业数据批量插入
INSERT INTO major_table (major_table_name, college_id) VALUES
(NULL, 1),
('税收学', 2),
('会计学', 2),
('审计学', 2),
('金融工程', 2),
('财务管理', 2),
('国际经济与贸易', 3),
('市场营销', 3),
('工商管理', 3),
('人力资源管理', 3),
('行政管理', 3),
('电子商务', 3),
('电气工程及其自动化', 4),
('电子信息工程', 4),
('服装设计', 5),
('管理运营', 5),
('服装科技', 5),
('健康服务与管理', 7),
('药物制剂', 7),
('计算机科学与技术', 8),
('网络工程', 8),
('物联网工程', 8),
('智能科学与技术', 8);
INSERT INTO user_table (user_name, s_t_id, user_password, user_privileges, email, college_id, major_table_id, phone, teacher_title, birthdate, gender, user_status) VALUES
('史旺', 'Admin', '1234', 0, '1919093209@qq.com', 7, 1, '', '', NULL, NULL, NULL),
('史旺', '213010248', '0248', 1, '1919093209@qq.com', 7, 20, '17342351231', '', '2002-04-04', '', NULL),
('刘舒光', '213010127', '0127', 2, 'qqsyun@gmail.com', 7, 20, '18509144920', '教授', NULL, NULL, 0);
INSERT INTO competition_table (competition_name, user_id, registration_start_time, registration_end_time, announcement_link, competition_status) VALUES
('中国大学生计算机设计大赛', 3, '2023-04-01 00:00:00', '2023-05-01 00:00:00', 'https://jsjds.blcu.edu.cn/', 0);
INSERT INTO registration_table (student_id, competition_id, team_leader_id, competition_type, award_level, registration_time, registration_status, certificate_path, additional_info) VALUES
(2, 1, 2, '校级', '未获奖', '2023-04-02 00:00:00', '成功报名', NULL, '');
INSERT INTO article_table (user_id, article_title, brief_content, article_content, article_type, publish_time) VALUES
(3, '全国大学生计算级设计大赛报名通道开启!', '第17届全国大学生计算级设计大赛报名通道开启请大家踊跃报名', '中国大学生计算机设计大赛是非营利的、公益性的、科技型的群众活动。大赛的生命线与遵从的原则是“三公”,即公开、公平、公正。公平、公正是灵魂和基础,公开是公平、公正的保障。', '公告', '2023-03-01 08:00:00'),
(2, '关于开展科研讨论会的通知', '', '科研讨论会', '活动', '2023-03-05 09:00:00');
INSERT INTO comment_table (user_id, article_id, comment_content, publish_time) VALUES
(2, 1, '非常期待!', '2023-03-01 09:00:00');
('税收学', 2), ('会计学', 2), ('审计学', 2), ('金融工程', 2), ('财务管理', 2),
('国际经济与贸易', 3), ('市场营销', 3), ('工商管理', 3), ('人力资源管理', 3),
('行政管理', 3), ('电子商务', 3), ('电气工程及其自动化', 4), ('电子信息工程', 4),
('服装设计', 5), ('管理运营', 5), ('服装科技', 5), ('健康服务与管理', 7),
('药物制剂', 7), ('计算机科学与技术', 8), ('网络工程', 8), ('物联网工程', 8), ('智能科学与技术', 8);
ALTER SEQUENCE major_table_major_table_id_seq RESTART WITH 24;
-- 消息数据(修正年份错误)
INSERT INTO message (session_id, user_id, content, create_time)
VALUES (1, 2, '随便', '2005-05-01 17:09:00'); -- 原数据年份2000改为2005
-- 报名数据
INSERT INTO registration_table (student_id, competition_id, team_leader_id, competition_type)
VALUES (276, 9, 33, '院级');
-- 用户数据密码SHA256加密
INSERT INTO user_table (user_name, s_t_id, user_password, user_privileges, email, college_id, phone) VALUES
('学生用户1', 'student', '36ab5e3ebd13982b1237194172459925b32b9963aef34a68b4d74f53c694d44e', 2, '1270540423@qq.com', 7, '17791641989'),
('Admin', 'Admin', '36ab5e3ebd13982b1237194172459925b32b9963aef34a68b4d74f53c694d44e', 0, 'wwww', 4, '17791641989');
------------------------------- 索引构建 -------------------------------
CREATE INDEX idx_ai_user_time ON ai_competition_chat (user_id, chat_time);
CREATE INDEX article_user_idx ON article_table (user_id);
CREATE INDEX article_competition_idx ON article_table (competition_id);
ALTER TABLE comment_table ADD CONSTRAINT fk_article_comment FOREIGN KEY (article_id) REFERENCES article_table(article_id);
------------------------------- 事务提交 -------------------------------
COMMIT;
------------------------------- 权限校验(参考语句) -------------------------------
-- 创建用户并授权(根据实际需求添加)
-- CREATE USER app_user WITH PASSWORD 'secure_password';
-- GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app_user;

View File

@ -10,10 +10,13 @@ spring:
# minimum-idle: 5 # 设置最小空闲连接数
# idle-timeout: 30000 # 设置连接空闲超时时间为30秒
datasource:
url: jdbc:mysql://110.40.62.21:3306/jingsaisystem?useSSL=false&serverTimezone=UTC
username: jingsaisystem
password: Aa123456...
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:postgresql://110.40.62.21:54321/jingsaisystem?ssl=false&currentSchema=public
username: gaussdb
password: Enmo@123
driver-class-name: org.postgresql.Driver
spring:
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
hikari:
connection-timeout: 10000
maximum-pool-size: 200

File diff suppressed because it is too large Load Diff

Binary file not shown.