CREATE TABLE `user` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) UNIQUE NOT NULL,
`role` VARCHAR(20) NOT NULL,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE `project` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`title` VARCHAR(200) NOT NULL,
`description` TEXT,
`start_date` DATE NOT NULL,
`end_date` DATE,
`status` VARCHAR(20) DEFAULT 'pending',
`principal_id` BIGINT,
FOREIGN KEY (principal_id) REFERENCES user(id)

);
CREATE TABLE `achievement` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`title` VARCHAR(200) NOT NULL,
`type` VARCHAR(50) NOT NULL, -- 可以是论文、专利、软著等
`author_ids` TEXT, -- 存储多个作者ID,用逗号分隔
`publication_date` DATE,
`project_id` BIGINT,
FOREIGN KEY (project_id) REFERENCES project(id)
);
CREATE TABLE `user_project` (
`user_id` BIGINT,
`project_id` BIGINT,
`role` VARCHAR(50),
PRIMARY KEY (user_id, project_id),
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (project_id) REFERENCES project(id)
);
// 使用Axios获取所有项目
axios.get('/api/projects')
.then(response => {
this.projects = response.data;
})
.catch(error => {
console.error('获取项目失败:', error);
});
@PostMapping("/projects")
public ResponseEntity
Project savedProject = projectService.save(project);
return ResponseEntity.status(HttpStatus.CREATED).body(savedProject);
}
public Project save(Project project) {
User principal = userService.findById(project.getPrincipalId());
if (!principal.getRole().equals("admin") && !principal.getRole().equals("researcher")) {
throw new AccessDeniedException("只有管理员或研究人员可以创建项目");
}
return projectRepository.save(project);
}

本站部分内容及素材来源于互联网,如有侵权,联系必删!
客服经理