高校学习生活社区平台 / 后端
特性 • 技术栈 • 快速开始 • 项目结构 • API 文档 • 业务模型 • 贡献指南 • 开源协议
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
-
克隆项目
git clone https://github.com/Sealt/evolved.git cd evolved -
配置数据库
# 导入数据库结构 mysql -u root -p < src/main/resources/schema.sql
-
修改配置文件
# 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
-
构建并运行
# 使用 Maven mvn clean package -DskipTests java -jar target/evolved-0.0.1-SNAPSHOT.jar # 或使用 Maven 插件 mvn spring-boot:run
-
访问接口文档
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/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
- 基于 Redis 实现单点登录功能
- 采用 User-Role-Permission 三层权限设计
- 引入 Netty 服务器实现 WebSocket 通信
- 支持私信、在线状态推送、消息提醒
- 单例模式维护用户连接 Channel
- 基于 协同过滤算法 实现个性化推荐
- 使用 Apache Mahout 库计算用户相似度
- 支持点击率、转化率、停留时间等效果评估
- 基于 ElasticSearch 实现中文全文检索
- 集成 IK 中文分词器 提升检索准确度
- 定时任务同步 MySQL 数据到 ES
- 基于浏览量、点赞量、评论量、收藏量计算热度指数
- 使用 Scheduled 定时任务定期轮换热门数据
- 支持热门评论展示
数据库结构定义文件位于:
src/main/resources/schema.sql
本项目基于 MIT License 开源协议发布。
⭐ 如果这个项目对你有帮助,请给一个 Star 支持一下!
Made with ❤️ by Benin





