diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..990dddb --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,5 @@ +FROM eclipse-temurin:21-jdk-alpine +WORKDIR /app +COPY target/*.jar app.jar +EXPOSE 8080 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index bdf32a6..da681fe 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -3,45 +3,26 @@ server: spring: datasource: + url: jdbc:mysql://mysql:3306/innovation_platform?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai + username: innovation + password: innovation123 driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/innovation_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - username: root - password: root123456 - jackson: - date-format: yyyy-MM-dd HH:mm:ss - time-zone: GMT+8 + sql: + init: + mode: always + schema-locations: classpath:schema.sql + data-locations: classpath:data.sql mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml - type-aliases-package: com.innovation.platform.entity - global-config: - db-config: - id-type: auto - logic-delete-field: deleted - logic-delete-value: 1 - logic-not-delete-value: 0 configuration: map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl sa-token: - token-name: Authorization + token-name: satoken timeout: 86400 active-timeout: -1 is-concurrent: true is-share: true token-style: uuid - is-log: true - -knife4j: - enable: true - openapi: - title: 高校创新创业项目孵化平台API - description: 高校创新创业项目孵化平台接口文档 - version: v1.0.0 - group: - default: - group-name: default - api-rule: package - api-rule-resources: - - com.innovation.platform.controller + is-log: false diff --git a/backend/src/main/resources/schema.sql b/backend/src/main/resources/schema.sql new file mode 100644 index 0000000..65dee80 --- /dev/null +++ b/backend/src/main/resources/schema.sql @@ -0,0 +1,133 @@ +-- 创建用户表 +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) +) 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; diff --git a/backend/target/classes/application.yml b/backend/target/classes/application.yml index bdf32a6..da681fe 100644 --- a/backend/target/classes/application.yml +++ b/backend/target/classes/application.yml @@ -3,45 +3,26 @@ server: spring: datasource: + url: jdbc:mysql://mysql:3306/innovation_platform?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai + username: innovation + password: innovation123 driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/innovation_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - username: root - password: root123456 - jackson: - date-format: yyyy-MM-dd HH:mm:ss - time-zone: GMT+8 + sql: + init: + mode: always + schema-locations: classpath:schema.sql + data-locations: classpath:data.sql mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml - type-aliases-package: com.innovation.platform.entity - global-config: - db-config: - id-type: auto - logic-delete-field: deleted - logic-delete-value: 1 - logic-not-delete-value: 0 configuration: map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl sa-token: - token-name: Authorization + token-name: satoken timeout: 86400 active-timeout: -1 is-concurrent: true is-share: true token-style: uuid - is-log: true - -knife4j: - enable: true - openapi: - title: 高校创新创业项目孵化平台API - description: 高校创新创业项目孵化平台接口文档 - version: v1.0.0 - group: - default: - group-name: default - api-rule: package - api-rule-resources: - - com.innovation.platform.controller + is-log: false diff --git a/backend/target/classes/data.sql b/backend/target/classes/data.sql new file mode 100644 index 0000000..1455eb6 --- /dev/null +++ b/backend/target/classes/data.sql @@ -0,0 +1,39 @@ +-- 预埋测试数据 + +-- 1. 管理员账号 (密码: admin123) +INSERT INTO sys_user (username, password, real_name, gender, role_type, status) VALUES +('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt9hQIu', '系统管理员', 1, 3, 1); + +-- 2. 教师账号 (密码: teacher123) +INSERT INTO sys_user (username, password, real_name, gender, role_type, status) VALUES +('teacher001', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt9hQIu', '张教授', 1, 2, 1), +('teacher002', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt9hQIu', '李老师', 2, 2, 1); + +-- 3. 学生账号 (密码: student123) +INSERT INTO sys_user (username, password, real_name, gender, role_type, status) VALUES +('student001', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt9hQIu', '王小明', 1, 1, 1), +('student002', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt9hQIu', '李小红', 2, 1, 1), +('student003', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt9hQIu', '张小华', 1, 1, 1); + +-- 4. 教师信息 +INSERT INTO teacher_info (user_id, teacher_no, college, title, research_field) VALUES +(2, 'T2024001', '计算机学院', '教授', '人工智能'), +(3, 'T2024002', '计算机学院', '副教授', '大数据'); + +-- 5. 学生信息 +INSERT INTO stu_info (user_id, student_no, college, major, grade, class_name, advisor_id) VALUES +(4, 'S2021001', '计算机学院', '计算机科学与技术', '2021', '计科2101', 2), +(5, 'S2021002', '计算机学院', '软件工程', '2021', '软工2101', 2), +(6, 'S2022001', '计算机学院', '计算机科学与技术', '2022', '计科2201', 3); + +-- 6. 测试项目 +INSERT INTO project (project_no, project_name, project_type, project_level, leader_id, advisor_id, description, status) VALUES +('PRJ2024001', '基于AI的智能问答系统', 1, 2, 4, 2, '本项目旨在开发一个基于大语言模型的智能问答系统', 3), +('PRJ2024002', '校园二手交易平台', 2, 1, 5, 3, '搭建一个面向高校学生的二手物品交易平台', 1); + +-- 7. 项目成员 +INSERT INTO project_member (project_id, user_id, member_order, role) VALUES +(1, 4, 1, 2), +(1, 5, 2, 1), +(2, 5, 1, 2), +(2, 6, 2, 1); diff --git a/backend/target/classes/schema.sql b/backend/target/classes/schema.sql new file mode 100644 index 0000000..65dee80 --- /dev/null +++ b/backend/target/classes/schema.sql @@ -0,0 +1,133 @@ +-- 创建用户表 +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) +) 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; diff --git a/backend/target/innovation-platform-1.0.0.jar b/backend/target/innovation-platform-1.0.0.jar new file mode 100644 index 0000000..edfd390 Binary files /dev/null and b/backend/target/innovation-platform-1.0.0.jar differ diff --git a/backend/target/innovation-platform-1.0.0.jar.original b/backend/target/innovation-platform-1.0.0.jar.original new file mode 100644 index 0000000..b764df0 Binary files /dev/null and b/backend/target/innovation-platform-1.0.0.jar.original differ diff --git a/backend/target/maven-archiver/pom.properties b/backend/target/maven-archiver/pom.properties new file mode 100644 index 0000000..390a8a5 --- /dev/null +++ b/backend/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=innovation-platform +groupId=com.innovation +version=1.0.0 diff --git a/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/backend/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..362244e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,37 @@ +version: '3.8' +services: + mysql: + image: mysql:8.0 + container_name: innovation-mysql + environment: + MYSQL_ROOT_PASSWORD: root123456 + MYSQL_DATABASE: innovation_platform + MYSQL_USER: innovation + MYSQL_PASSWORD: innovation123 + ports: + - "3307:3306" + volumes: + - mysql-data:/var/lib/mysql + networks: + - innovation-network + + backend: + build: ./backend + container_name: innovation-backend + depends_on: + - mysql + environment: + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/innovation_platform?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai + SPRING_DATASOURCE_USERNAME: innovation + SPRING_DATASOURCE_PASSWORD: innovation123 + ports: + - "8080:8080" + networks: + - innovation-network + +networks: + innovation-network: + driver: bridge + +volumes: + mysql-data: