From 9a1dc9687c89e51608fcc48e0cc9ffd2b203e73c Mon Sep 17 00:00:00 2001 From: likingcode Date: Sun, 1 Mar 2026 17:14:49 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=EF=BC=9A=E7=A7=BB=E9=99=A4=E5=AD=A6=E5=88=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/pom.xml | 92 +++++++++++++++++++ .../InnovationPlatformApplication.java | 16 ++++ .../platform/common/PageResult.java | 28 ++++++ .../innovation/platform/common/Result.java | 56 +++++++++++ .../platform/entity/Achievement.java | 30 ++++++ .../entity/AchievementAttachment.java | 23 +++++ .../platform/entity/BaseEntity.java | 30 ++++++ .../platform/entity/CreditAppeal.java | 25 +++++ .../platform/entity/CreditDetail.java | 24 +++++ .../platform/entity/CreditRule.java | 24 +++++ .../innovation/platform/entity/Project.java | 30 ++++++ .../platform/entity/ProjectAttachment.java | 24 +++++ .../platform/entity/ProjectMember.java | 22 +++++ .../innovation/platform/entity/Review.java | 24 +++++ .../platform/entity/ReviewScoreItem.java | 22 +++++ .../innovation/platform/entity/StuInfo.java | 23 +++++ .../innovation/platform/entity/SysConfig.java | 18 ++++ .../innovation/platform/entity/SysLog.java | 25 +++++ .../innovation/platform/entity/SysUser.java | 23 +++++ .../platform/entity/TeacherInfo.java | 19 ++++ backend/src/main/resources/application.yml | 47 ++++++++++ frontend | 1 + 22 files changed, 626 insertions(+) create mode 100644 backend/pom.xml create mode 100644 backend/src/main/java/com/innovation/platform/InnovationPlatformApplication.java create mode 100644 backend/src/main/java/com/innovation/platform/common/PageResult.java create mode 100644 backend/src/main/java/com/innovation/platform/common/Result.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/Achievement.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/AchievementAttachment.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/BaseEntity.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/CreditAppeal.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/CreditDetail.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/CreditRule.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/Project.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/ProjectAttachment.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/ProjectMember.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/Review.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/ReviewScoreItem.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/StuInfo.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/SysConfig.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/SysLog.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/SysUser.java create mode 100644 backend/src/main/java/com/innovation/platform/entity/TeacherInfo.java create mode 100644 backend/src/main/resources/application.yml create mode 160000 frontend diff --git a/backend/pom.xml b/backend/pom.xml new file mode 100644 index 0000000..8996a9d --- /dev/null +++ b/backend/pom.xml @@ -0,0 +1,92 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 3.2.3 + + + + com.innovation + innovation-platform + 1.0.0 + innovation-platform + 高校创新创业项目孵化平台 + + + 17 + 3.5.5 + 1.37.0 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-aop + + + com.mysql + mysql-connector-j + runtime + + + com.baomidou + mybatis-plus-spring-boot3-starter + ${mybatis-plus.version} + + + cn.dev33 + sa-token-spring-boot3-starter + ${sa-token.version} + + + org.projectlombok + lombok + true + + + cn.hutool + hutool-all + 5.8.25 + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + 4.4.0 + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + diff --git a/backend/src/main/java/com/innovation/platform/InnovationPlatformApplication.java b/backend/src/main/java/com/innovation/platform/InnovationPlatformApplication.java new file mode 100644 index 0000000..cdc86b9 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/InnovationPlatformApplication.java @@ -0,0 +1,16 @@ +package com.innovation.platform; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 高校创新创业项目孵化平台启动类 + */ +@SpringBootApplication +@MapperScan("com.innovation.platform.mapper") +public class InnovationPlatformApplication { + public static void main(String[] args) { + SpringApplication.run(InnovationPlatformApplication.class, args); + } +} diff --git a/backend/src/main/java/com/innovation/platform/common/PageResult.java b/backend/src/main/java/com/innovation/platform/common/PageResult.java new file mode 100644 index 0000000..e6b70dd --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/common/PageResult.java @@ -0,0 +1,28 @@ +package com.innovation.platform.common; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.Data; +import java.io.Serializable; +import java.util.List; + +/** + * 分页结果 + */ +@Data +public class PageResult implements Serializable { + private List records; + private Long total; + private Long size; + private Long current; + private Long pages; + + public static PageResult of(IPage page) { + PageResult result = new PageResult<>(); + result.setRecords(page.getRecords()); + result.setTotal(page.getTotal()); + result.setSize(page.getSize()); + result.setCurrent(page.getCurrent()); + result.setPages(page.getPages()); + return result; + } +} diff --git a/backend/src/main/java/com/innovation/platform/common/Result.java b/backend/src/main/java/com/innovation/platform/common/Result.java new file mode 100644 index 0000000..b17e8e7 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/common/Result.java @@ -0,0 +1,56 @@ +package com.innovation.platform.common; + +import lombok.Data; +import java.io.Serializable; + +/** + * 统一响应结果 + */ +@Data +public class Result implements Serializable { + private Integer code; + private String message; + private T data; + private Long timestamp; + + public Result() { + this.timestamp = System.currentTimeMillis(); + } + + public static Result success() { + Result result = new Result<>(); + result.setCode(200); + result.setMessage("操作成功"); + return result; + } + + public static Result success(T data) { + Result result = new Result<>(); + result.setCode(200); + result.setMessage("操作成功"); + result.setData(data); + return result; + } + + public static Result success(String message, T data) { + Result result = new Result<>(); + result.setCode(200); + result.setMessage(message); + result.setData(data); + return result; + } + + public static Result error(String message) { + Result result = new Result<>(); + result.setCode(500); + result.setMessage(message); + return result; + } + + public static Result error(Integer code, String message) { + Result result = new Result<>(); + result.setCode(code); + result.setMessage(message); + return result; + } +} diff --git a/backend/src/main/java/com/innovation/platform/entity/Achievement.java b/backend/src/main/java/com/innovation/platform/entity/Achievement.java new file mode 100644 index 0000000..8bb9a47 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/Achievement.java @@ -0,0 +1,30 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 成果实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("achievement") +public class Achievement extends BaseEntity { + private Long projectId; + private Integer achievementType; + private String achievementName; + private Integer achievementLevel; + private String authorNames; + private LocalDate publishTime; + private String publishOrg; + private String description; + private BigDecimal credit; + private Integer status; + private Long auditorId; + private LocalDateTime auditTime; + private String auditOpinion; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/AchievementAttachment.java b/backend/src/main/java/com/innovation/platform/entity/AchievementAttachment.java new file mode 100644 index 0000000..a7449cf --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/AchievementAttachment.java @@ -0,0 +1,23 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 成果附件实体 + */ +@Data +@TableName("achievement_attachment") +public class AchievementAttachment implements Serializable { + private Long id; + private Long achievementId; + private String fileName; + private String filePath; + private Long fileSize; + private String fileType; + private LocalDateTime createTime; + private Long createBy; + private Integer deleted; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/BaseEntity.java b/backend/src/main/java/com/innovation/platform/entity/BaseEntity.java new file mode 100644 index 0000000..422ec62 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/BaseEntity.java @@ -0,0 +1,30 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 基础实体类 + */ +@Data +public class BaseEntity implements Serializable { + @TableId(type = IdType.AUTO) + private Long id; + + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @TableField(fill = FieldFill.INSERT) + private Long createBy; + + @TableField(fill = FieldFill.UPDATE) + private Long updateBy; + + @TableLogic + private Integer deleted; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/CreditAppeal.java b/backend/src/main/java/com/innovation/platform/entity/CreditAppeal.java new file mode 100644 index 0000000..f52cb09 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/CreditAppeal.java @@ -0,0 +1,25 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 学分申诉实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("credit_appeal") +public class CreditAppeal extends BaseEntity { + private Long creditDetailId; + private Long userId; + private String appealReason; + private String appealEvidence; + private Integer status; + private Long handlerId; + private LocalDateTime handleTime; + private String handleResult; + private BigDecimal adjustedCredit; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/CreditDetail.java b/backend/src/main/java/com/innovation/platform/entity/CreditDetail.java new file mode 100644 index 0000000..490e7eb --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/CreditDetail.java @@ -0,0 +1,24 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +/** + * 学分明细实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("credit_detail") +public class CreditDetail extends BaseEntity { + private Long userId; + private Long projectId; + private Long achievementId; + private Integer creditSource; + private BigDecimal credit; + private BigDecimal coefficient; + private Long ruleId; + private String remark; + private Integer status; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/CreditRule.java b/backend/src/main/java/com/innovation/platform/entity/CreditRule.java new file mode 100644 index 0000000..520aa02 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/CreditRule.java @@ -0,0 +1,24 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +/** + * 学分规则实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("credit_rule") +public class CreditRule extends BaseEntity { + private String ruleName; + private Integer ruleType; + private Integer targetType; + private Integer targetLevel; + private BigDecimal baseCredit; + private BigDecimal leaderCoefficient; + private BigDecimal memberCoefficient; + private String description; + private Integer status; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/Project.java b/backend/src/main/java/com/innovation/platform/entity/Project.java new file mode 100644 index 0000000..e4bb058 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/Project.java @@ -0,0 +1,30 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 项目实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("project") +public class Project extends BaseEntity { + private String projectNo; + private String projectName; + private Integer projectType; + private Integer projectLevel; + private Long leaderId; + private Long advisorId; + private String description; + private String researchPlan; + private String expectedResult; + private BigDecimal budget; + private Integer status; + private LocalDate startTime; + private LocalDate endTime; + private String college; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/ProjectAttachment.java b/backend/src/main/java/com/innovation/platform/entity/ProjectAttachment.java new file mode 100644 index 0000000..e4b4f06 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/ProjectAttachment.java @@ -0,0 +1,24 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 项目附件实体 + */ +@Data +@TableName("project_attachment") +public class ProjectAttachment implements Serializable { + private Long id; + private Long projectId; + private String fileName; + private String filePath; + private Long fileSize; + private String fileType; + private Integer attachmentType; + private LocalDateTime createTime; + private Long createBy; + private Integer deleted; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/ProjectMember.java b/backend/src/main/java/com/innovation/platform/entity/ProjectMember.java new file mode 100644 index 0000000..37f3044 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/ProjectMember.java @@ -0,0 +1,22 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 项目成员实体 + */ +@Data +@TableName("project_member") +public class ProjectMember implements Serializable { + private Long id; + private Long projectId; + private Long userId; + private Integer memberOrder; + private Integer role; + private LocalDateTime joinTime; + private LocalDateTime createTime; + private Integer deleted; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/Review.java b/backend/src/main/java/com/innovation/platform/entity/Review.java new file mode 100644 index 0000000..49a898a --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/Review.java @@ -0,0 +1,24 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 评审实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("review") +public class Review extends BaseEntity { + private Long projectId; + private Long reviewerId; + private Integer reviewType; + private BigDecimal score; + private String opinion; + private Integer result; + private Integer status; + private LocalDateTime reviewTime; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/ReviewScoreItem.java b/backend/src/main/java/com/innovation/platform/entity/ReviewScoreItem.java new file mode 100644 index 0000000..a795200 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/ReviewScoreItem.java @@ -0,0 +1,22 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 评审评分项实体 + */ +@Data +@TableName("review_score_item") +public class ReviewScoreItem implements Serializable { + private Long id; + private Long reviewId; + private String itemName; + private BigDecimal itemScore; + private BigDecimal maxScore; + private String itemComment; + private LocalDateTime createTime; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/StuInfo.java b/backend/src/main/java/com/innovation/platform/entity/StuInfo.java new file mode 100644 index 0000000..c161aeb --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/StuInfo.java @@ -0,0 +1,23 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +/** + * 学生信息实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("stu_info") +public class StuInfo extends BaseEntity { + private Long userId; + private String studentNo; + private String college; + private String major; + private String grade; + private String className; + private Long advisorId; + private BigDecimal totalCredit; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/SysConfig.java b/backend/src/main/java/com/innovation/platform/entity/SysConfig.java new file mode 100644 index 0000000..25c4087 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/SysConfig.java @@ -0,0 +1,18 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 系统配置实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_config") +public class SysConfig extends BaseEntity { + private String configKey; + private String configValue; + private String configName; + private String description; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/SysLog.java b/backend/src/main/java/com/innovation/platform/entity/SysLog.java new file mode 100644 index 0000000..a64fbb4 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/SysLog.java @@ -0,0 +1,25 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 系统日志实体 + */ +@Data +@TableName("sys_log") +public class SysLog implements Serializable { + private Long id; + private Long userId; + private String username; + private String operation; + private String method; + private String params; + private String ip; + private Long time; + private Integer result; + private String errorMsg; + private LocalDateTime createTime; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/SysUser.java b/backend/src/main/java/com/innovation/platform/entity/SysUser.java new file mode 100644 index 0000000..dea753c --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/SysUser.java @@ -0,0 +1,23 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_user") +public class SysUser extends BaseEntity { + private String username; + private String password; + private String realName; + private Integer gender; + private String phone; + private String email; + private String avatar; + private Integer status; + private Integer roleType; +} diff --git a/backend/src/main/java/com/innovation/platform/entity/TeacherInfo.java b/backend/src/main/java/com/innovation/platform/entity/TeacherInfo.java new file mode 100644 index 0000000..2f7d518 --- /dev/null +++ b/backend/src/main/java/com/innovation/platform/entity/TeacherInfo.java @@ -0,0 +1,19 @@ +package com.innovation.platform.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 教师信息实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("teacher_info") +public class TeacherInfo extends BaseEntity { + private Long userId; + private String teacherNo; + private String college; + private String title; + private String researchField; +} diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml new file mode 100644 index 0000000..bdf32a6 --- /dev/null +++ b/backend/src/main/resources/application.yml @@ -0,0 +1,47 @@ +server: + port: 8080 + +spring: + datasource: + 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 + +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 + 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 diff --git a/frontend b/frontend new file mode 160000 index 0000000..9d26c11 --- /dev/null +++ b/frontend @@ -0,0 +1 @@ +Subproject commit 9d26c118759ab7391c5dc031dc4b41b575d4a8ab