Skip to content

Sealt/Evolved

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evolved Logo

Evolved

高校学习生活社区平台 / 后端

特性技术栈快速开始项目结构API 文档业务模型贡献指南开源协议

Spring Boot Java MyBatis-Plus MySQL Redis ElasticSearch License


📖 项目简介

Evolved 是一个面向高等院校在校学生的综合性学习生活社区平台后端,致力于帮助大学生打破信息茧房、促进资源平等、提倡互助分享、提升综合能力。

🎯 解决的问题

  • 信息获取困难:大学生获取校内信息的渠道分散,通知迟发、漏发、不发现象频发
  • 资源分布不均:高质量学习资源散落各处,查找难度大,质量参差不齐
  • 交流渠道有限:各班级、专业和学院之间缺乏高效的交流渠道
  • 缺乏信息解读:学生亟需相关解读帮助作出基于自身情况的更佳决策

✨ 特性

🔍 打破信息茧房 提供本校学生获取信息最快、最准确的途径,并提供全面的信息视角解读
📚 促进资源平等 建立高校资源库,为本校学生提供尽可能平等的资源检索及使用服务
🤝 提倡互助分享 基于互助和分享策略提供信息和资源服务,提高主动学习意识
🚀 提高综合能力 依托多种形式开展促进个人能力提高的科普事业

🛠️ 技术栈

核心框架

技术 说明 版本
Spring Boot 快速应用构建框架 3.2.2
MyBatis Plus ORM 增强框架 3.5.5
Netty 异步事件驱动网络框架 4.1.109

数据存储

技术 说明
MySQL 关系型数据库
Redis 高性能键值存储(缓存、单点登录)
ElasticSearch 分布式搜索引擎(全文检索)

安全认证

技术 说明
JWT 跨域身份验证
AOP 切面编程实现自定义权限注解

开发工具

技术 说明
Knife4j API 接口文档
Hutool Java 工具类库
Lombok 简化代码开发
Apache Mahout 推荐算法库

🚀 快速开始

环境要求

  • JDK 17+
  • Maven 3.8+
  • MySQL 8.0+
  • Redis 7.0+
  • ElasticSearch 8.x

安装步骤

  1. 克隆项目

    git clone https://github.com/Sealt/evolved.git
    cd evolved
  2. 配置数据库

    # 导入数据库结构
    mysql -u root -p < src/main/resources/schema.sql
  3. 修改配置文件

    # src/main/resources/application.yml
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/evolved
        username: your_username
        password: your_password
      redis:
        host: localhost
        port: 6379
      elasticsearch:
        uris: http://localhost:9200
  4. 构建并运行

    # 使用 Maven
    mvn clean package -DskipTests
    java -jar target/evolved-0.0.1-SNAPSHOT.jar
    
    # 或使用 Maven 插件
    mvn spring-boot:run
  5. 访问接口文档

    http://localhost:8080/doc.html
    

📁 项目结构

evolved/
├── src/main/java/com/benin/evolved/
│   ├── annotation/        # 自定义注解(权限、AutoResultMap)
│   ├── aop/               # AOP 切面(权限校验、日志)
│   ├── common/            # 通用响应类
│   ├── config/            # 配置类(跨域、Jackson、分页等)
│   ├── constant/          # 常量定义
│   ├── controller/        # 控制器层
│   ├── esdao/             # ElasticSearch DAO
│   ├── exception/         # 自定义异常处理
│   ├── handler/           # 处理器
│   ├── interceptor/       # JWT 拦截器
│   ├── job/               # 定时任务
│   ├── mapper/            # MyBatis Mapper
│   ├── model/             # 数据模型
│   │   ├── dto/           # 数据传输对象
│   │   ├── entity/        # 数据库实体
│   │   ├── enums/         # 枚举类
│   │   └── vo/            # 视图对象
│   ├── netty/             # Netty WebSocket 服务
│   ├── recommend/         # 推荐算法实现
│   ├── service/           # 服务层
│   ├── utils/             # 工具类
│   └── websocket/         # WebSocket 相关
├── src/main/resources/
│   ├── application.yml    # 应用配置
│   └── schema.sql         # 数据库结构
└── pom.xml                # Maven 依赖

🏗️ 系统架构

系统架构图

平台采用前后端分离架构,使用 HTTP 协议及 AJAX 技术实现数据同步,充分解耦前端界面逻辑与后端业务逻辑。

后端架构特点

  • 基于 SpringBoot 3 快速搭建,采用 SpringMVC 框架
  • 使用 MyBatis + MyBatis Plus 加速数据应用层开发
  • 集成 AOP 切面编程Scheduler 定时任务事务注解
  • 项目文件目录合理分层,可维护性强

后端架构图


📊 业务模型

平台按照模型优先的理念进行设计,将研学服务所需信息进行数据化和实体化。

核心模型

核心模型

模型 说明
事件 研究生考试、学科竞赛、综合素质测评、奖学金评定等一站式总览
节点 事件过程中的重要内容,如备考、择校、报名、考试、复试、录取等流程
信息 通知内容、网络发布的各类内容及对学生有价值的内容
经验 用户自身的经历分享或对信息的内容补充
资源 学习材料载体,包含文字、图片和视频等多种形式的文件
项目 分类后的资源归属,便于用户检索

支撑模型

支撑模型

模型 说明
用户 平台账号系统,包含用户名称、头像、个人介绍等属性
互动 点赞、评论、收藏、获取等行为抽象
热门 定期对数据进行热度排序,产出热门内容

功能模块

模块设计

  • 用户模块 • 消息模块 • 发布模块 • 互动模块 • 热门模块
  • 信息流模块 • 信息模块 • 事件模块 • 资源模块 • 搜索模块

📡 API 文档

接口概览

模块 基础路径 说明
用户接口 /api/user 注册、登录、用户信息管理
发布接口 /api/publish 信息、经验、资源等实体的创建
互动接口 /api/action 点赞、收藏、评论、关注等互动行为
信息接口 /api/info 信息和经验实体的获取
事件接口 /api/event 事件和节点实体的获取
息流接口 /api/flow 核心模型的信息流拉取
资源接口 /api/res 项目、资源、资源库的操作
热门接口 /api/hot 热门搜索、信息、事件和资源数据
搜索接口 /api/search 全文检索和搜索记录
模块接口 /api/mode 首页 Banner、功能入口等运营操作

用户接口示例

点击展开完整接口列表
接口名称 请求方式 监听地址
短信验证码注册/登录 POST /loginBySms
退出登录 POST /logout
获取大学列表 GET /getUniversity
选择大学加入 GET /SignWithUniversity
账号密码登录 POST /loginByAccount
获取短信验证码 POST /getSms
校验短信验证码 POST /checkSms
获取用户信息 POST /getUserInfo
上传头像 POST /uploadAvatar
上传个人背景图片 POST /uploadBgImg
修改用户名 POST /editUserName
修改性别 POST /editGender
修改简介 POST /editBio
修改密码 POST /editPassword
提交认证 POST /submitAuth
拉取关注列表 GET /getFollow
拉取粉丝列表 GET /getFans
获取登录用户信息 GET /getLoginUser

更多接口详情请访问 /doc.html 查看 Knife4j 在线文档


🔧 核心技术实现

JWT + Token 鉴权

  • 用户登录后生成具备短时有效性的 JWT Token
  • 基于 Redis 实现单点登录功能
  • 采用 User-Role-Permission 三层权限设计

基于 WebSocket 的即时通讯

  • 引入 Netty 服务器实现 WebSocket 通信
  • 支持私信、在线状态推送、消息提醒
  • 单例模式维护用户连接 Channel

推荐算法

  • 基于 协同过滤算法 实现个性化推荐
  • 使用 Apache Mahout 库计算用户相似度
  • 支持点击率、转化率、停留时间等效果评估

全文检索

  • 基于 ElasticSearch 实现中文全文检索
  • 集成 IK 中文分词器 提升检索准确度
  • 定时任务同步 MySQL 数据到 ES

热门算法

  • 基于浏览量、点赞量、评论量、收藏量计算热度指数
  • 使用 Scheduled 定时任务定期轮换热门数据
  • 支持热门评论展示

📄 数据库设计

数据库结构定义文件位于:

src/main/resources/schema.sql

📜 开源协议

本项目基于 MIT License 开源协议发布。


⭐ 如果这个项目对你有帮助,请给一个 Star 支持一下!

Made with ❤️ by Benin

About

Evolved: Backend Project for University Learning and Life Community

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages