Files
innovation-platform/backend/target/classes/schema.sql
likingcode a67496694c feat: 添加用户管理模块 + username/email 唯一约束
- 新增 UserController,实现完整的用户 CRUD 接口
- 扩展 SysUserService 接口和实现类
- 为 sys_user 表添加 username 和 email 唯一约束
- 添加 phone、role_type、status 索引优化查询性能
- 修复 Result 类方法名(failed -> error)

相关接口:
- GET /api/users - 获取用户列表(分页)
- GET /api/users/:id - 获取用户详情
- POST /api/users - 创建用户
- PUT /api/users/:id - 更新用户
- DELETE /api/users/:id - 删除用户
- GET /api/users/teachers - 获取教师列表
- POST /api/users/change-password - 修改密码
- PUT /api/users/profile - 更新个人资料
2026-03-13 10:31:24 +08:00

138 lines
4.5 KiB
SQL
Executable File

-- 创建用户表
CREATE TABLE IF NOT EXISTS sys_user (
id BIGINT NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(100) NOT NULL,
real_name VARCHAR(50) NOT NULL,
gender TINYINT DEFAULT 0,
phone VARCHAR(20) DEFAULT NULL,
email VARCHAR(100) DEFAULT NULL,
avatar VARCHAR(255) DEFAULT NULL,
status TINYINT DEFAULT 1,
role_type TINYINT NOT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
create_by BIGINT DEFAULT NULL,
update_by BIGINT DEFAULT NULL,
deleted TINYINT DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY uk_username (username),
UNIQUE KEY uk_email (email),
KEY idx_phone (phone),
KEY idx_role_type (role_type),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建学生信息表
CREATE TABLE IF NOT EXISTS stu_info (
id BIGINT NOT NULL AUTO_INCREMENT,
user_id BIGINT NOT NULL,
student_no VARCHAR(20) NOT NULL,
college VARCHAR(100) NOT NULL,
major VARCHAR(100) NOT NULL,
grade VARCHAR(10) NOT NULL,
class_name VARCHAR(50) DEFAULT NULL,
advisor_id BIGINT DEFAULT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted TINYINT DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY uk_student_no (student_no),
UNIQUE KEY uk_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建教师信息表
CREATE TABLE IF NOT EXISTS teacher_info (
id BIGINT NOT NULL AUTO_INCREMENT,
user_id BIGINT NOT NULL,
teacher_no VARCHAR(20) NOT NULL,
college VARCHAR(100) NOT NULL,
title VARCHAR(50) DEFAULT NULL,
research_field VARCHAR(255) DEFAULT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted TINYINT DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY uk_teacher_no (teacher_no),
UNIQUE KEY uk_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建项目表
CREATE TABLE IF NOT EXISTS project (
id BIGINT NOT NULL AUTO_INCREMENT,
project_no VARCHAR(30) NOT NULL,
project_name VARCHAR(200) NOT NULL,
project_type TINYINT NOT NULL,
project_level TINYINT NOT NULL,
leader_id BIGINT NOT NULL,
advisor_id BIGINT NOT NULL,
description TEXT,
research_plan TEXT,
expected_result TEXT,
budget DECIMAL(10,2) DEFAULT 0.00,
status TINYINT DEFAULT 1,
start_time DATE DEFAULT NULL,
end_time DATE DEFAULT NULL,
college VARCHAR(100) DEFAULT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
create_by BIGINT DEFAULT NULL,
update_by BIGINT DEFAULT NULL,
deleted TINYINT DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY uk_project_no (project_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建项目成员表
CREATE TABLE IF NOT EXISTS project_member (
id BIGINT NOT NULL AUTO_INCREMENT,
project_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
member_order INT DEFAULT 1,
role TINYINT DEFAULT 1,
join_time DATETIME DEFAULT CURRENT_TIMESTAMP,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
deleted TINYINT DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY uk_project_user (project_id, user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建成果表
CREATE TABLE IF NOT EXISTS achievement (
id BIGINT NOT NULL AUTO_INCREMENT,
project_id BIGINT NOT NULL,
achievement_type TINYINT NOT NULL,
achievement_name VARCHAR(200) NOT NULL,
achievement_level TINYINT DEFAULT NULL,
author_names VARCHAR(500) DEFAULT NULL,
publish_time DATE DEFAULT NULL,
publish_org VARCHAR(200) DEFAULT NULL,
description TEXT,
status TINYINT DEFAULT 1,
auditor_id BIGINT DEFAULT NULL,
audit_time DATETIME DEFAULT NULL,
audit_opinion VARCHAR(500) DEFAULT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
create_by BIGINT DEFAULT NULL,
deleted TINYINT DEFAULT 0,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 创建评审表
CREATE TABLE IF NOT EXISTS review (
id BIGINT NOT NULL AUTO_INCREMENT,
project_id BIGINT NOT NULL,
reviewer_id BIGINT NOT NULL,
review_type TINYINT NOT NULL,
score DECIMAL(5,1) DEFAULT NULL,
opinion TEXT,
result TINYINT DEFAULT NULL,
status TINYINT DEFAULT 1,
review_time DATETIME DEFAULT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted TINYINT DEFAULT 0,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;