2991692032 3 days ago
parent b9b9fd2f46
commit f628c6dece

4
.gitignore vendored

@ -1,5 +1 @@
UniLife开发进度与计划.md
UniLife接口文档.md
UniLife项目文档.md
文档说明.md
.idea/

@ -3,7 +3,7 @@
<component name="AugmentWebviewStateStore">
<option name="stateMap">
<map>
<entry key="CHAT_STATE" value="eyJjdXJyZW50Q29udmVyc2F0aW9uSWQiOiJjZmRkMmFjMy02YjgyLTQ5MWUtODc0YS1iOTU2MTM4NTJjODAiLCJjb252ZXJzYXRpb25zIjp7IjcxNjQ2OWJkLTU0MWUtNDZkYi1hODhlLTk2MDE1NDk4NDczYiI6eyJpZCI6IjcxNjQ2OWJkLTU0MWUtNDZkYi1hODhlLTk2MDE1NDk4NDczYiIsImNyZWF0ZWRBdElzbyI6IjIwMjUtMDUtMDVUMDQ6NTk6MTguNjg2WiIsImxhc3RJbnRlcmFjdGVkQXRJc28iOiIyMDI1LTA1LTA1VDA0OjU5OjE4LjY4NloiLCJjaGF0SGlzdG9yeSI6W10sImZlZWRiYWNrU3RhdGVzIjp7fSwidG9vbFVzZVN0YXRlcyI6e30sImRyYWZ0RXhjaGFuZ2UiOnsicmVxdWVzdF9tZXNzYWdlIjoiIiwicmljaF90ZXh0X2pzb25fcmVwciI6eyJ0eXBlIjoiZG9jIiwiY29udGVudCI6W3sidHlwZSI6InBhcmFncmFwaCJ9XX0sInN0YXR1cyI6ImRyYWZ0In0sInJlcXVlc3RJZHMiOltdLCJpc1Bpbm5lZCI6ZmFsc2UsImlzU2hhcmVhYmxlIjpmYWxzZSwiZXh0cmFEYXRhIjp7Imhhc0RpcnR5RWRpdHMiOmZhbHNlfSwicGVyc29uYVR5cGUiOjB9LCJjZmRkMmFjMy02YjgyLTQ5MWUtODc0YS1iOTU2MTM4NTJjODAiOnsiaWQiOiJjZmRkMmFjMy02YjgyLTQ5MWUtODc0YS1iOTU2MTM4NTJjODAiLCJjcmVhdGVkQXRJc28iOiIyMDI1LTA1LTA1VDA0OjU5OjE4Ljg0NloiLCJsYXN0SW50ZXJhY3RlZEF0SXNvIjoiMjAyNS0wNS0wNVQwNDo1OToxOC44NDZaIiwiY2hhdEhpc3RvcnkiOltdLCJmZWVkYmFja1N0YXRlcyI6e30sInRvb2xVc2VTdGF0ZXMiOnt9LCJkcmFmdEV4Y2hhbmdlIjp7InJlcXVlc3RfbWVzc2FnZSI6IiIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgifV19LCJzdGF0dXMiOiJkcmFmdCJ9LCJyZXF1ZXN0SWRzIjpbXSwiaXNQaW5uZWQiOmZhbHNlLCJpc1NoYXJlYWJsZSI6ZmFsc2UsImV4dHJhRGF0YSI6eyJoYXNEaXJ0eUVkaXRzIjpmYWxzZX0sInBlcnNvbmFUeXBlIjowfX0sImFnZW50RXhlY3V0aW9uTW9kZSI6Im1hbnVhbCIsImlzQWdlbnRFZGl0c0NvbGxhcHNlZCI6dHJ1ZSwic29ydENvbnZlcnNhdGlvbnNCeSI6Imxhc3RNZXNzYWdlVGltZXN0YW1wIn0=" />
<entry key="CHAT_STATE" value="eyJjdXJyZW50Q29udmVyc2F0aW9uSWQiOiIzN2I1YzFiNS0yM2VjLTQ5NzEtOTQ4Zi02ZDVhZTdlNWQ0ZTAiLCJjb252ZXJzYXRpb25zIjp7IjhlNmY4ZTYwLTc0NjItNGJjMi04ODI0LTdkMGY3Yzk0ODBiYiI6eyJpZCI6IjhlNmY4ZTYwLTc0NjItNGJjMi04ODI0LTdkMGY3Yzk0ODBiYiIsImNyZWF0ZWRBdElzbyI6IjIwMjUtMDUtMTFUMDM6NTY6MDUuOTAyWiIsImxhc3RJbnRlcmFjdGVkQXRJc28iOiIyMDI1LTA1LTExVDAzOjU2OjA1LjkwMloiLCJjaGF0SGlzdG9yeSI6W10sImZlZWRiYWNrU3RhdGVzIjp7fSwidG9vbFVzZVN0YXRlcyI6e30sImRyYWZ0RXhjaGFuZ2UiOnsicmVxdWVzdF9tZXNzYWdlIjoiIiwicmljaF90ZXh0X2pzb25fcmVwciI6eyJ0eXBlIjoiZG9jIiwiY29udGVudCI6W3sidHlwZSI6InBhcmFncmFwaCJ9XX0sInN0YXR1cyI6ImRyYWZ0In0sInJlcXVlc3RJZHMiOltdLCJpc1Bpbm5lZCI6ZmFsc2UsImlzU2hhcmVhYmxlIjpmYWxzZSwiZXh0cmFEYXRhIjp7Imhhc0RpcnR5RWRpdHMiOmZhbHNlfSwicGVyc29uYVR5cGUiOjB9LCIzN2I1YzFiNS0yM2VjLTQ5NzEtOTQ4Zi02ZDVhZTdlNWQ0ZTAiOnsiaWQiOiIzN2I1YzFiNS0yM2VjLTQ5NzEtOTQ4Zi02ZDVhZTdlNWQ0ZTAiLCJjcmVhdGVkQXRJc28iOiIyMDI1LTA1LTExVDAzOjU2OjA1Ljk5MloiLCJsYXN0SW50ZXJhY3RlZEF0SXNvIjoiMjAyNS0wNS0xMVQwMzo1NjowNS45OTJaIiwiY2hhdEhpc3RvcnkiOltdLCJmZWVkYmFja1N0YXRlcyI6e30sInRvb2xVc2VTdGF0ZXMiOnt9LCJkcmFmdEV4Y2hhbmdlIjp7InJlcXVlc3RfbWVzc2FnZSI6IiIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgifV19LCJzdGF0dXMiOiJkcmFmdCJ9LCJyZXF1ZXN0SWRzIjpbXSwiaXNQaW5uZWQiOmZhbHNlLCJpc1NoYXJlYWJsZSI6ZmFsc2UsImV4dHJhRGF0YSI6eyJoYXNEaXJ0eUVkaXRzIjpmYWxzZX0sInBlcnNvbmFUeXBlIjowfX0sImFnZW50RXhlY3V0aW9uTW9kZSI6Im1hbnVhbCIsImlzQWdlbnRFZGl0c0NvbGxhcHNlZCI6dHJ1ZSwic29ydENvbnZlcnNhdGlvbnNCeSI6Imxhc3RNZXNzYWdlVGltZXN0YW1wIn0=" />
</map>
</option>
</component>

@ -0,0 +1,386 @@
# UniLife开发进度与计划
## 目录
- [一、当前开发进度](#一当前开发进度)
- [1.1 已完成功能](#11-已完成功能)
- [1.2 本次开发内容](#12-本次开发内容)
- [二、下一步开发计划](#二下一步开发计划)
- [2.1 课程表与日程管理模块](#21-课程表与日程管理模块)
- [2.2 搜索功能模块](#22-搜索功能模块)
- [2.3 前端页面实现](#23-前端页面实现)
- [2.4 AI辅助学习模块](#24-ai辅助学习模块)
- [2.5 积分系统模块](#25-积分系统模块)
- [三、开发阶段规划](#三开发阶段规划)
- [3.1 阶段一:基础功能完善](#31-阶段一基础功能完善)
- [3.2 阶段二:核心功能开发](#32-阶段二核心功能开发)
- [3.3 阶段三:高级功能开发](#33-阶段三高级功能开发)
- [3.4 阶段四:优化与测试](#34-阶段四优化与测试)
- [四、技术难点与解决方案](#四技术难点与解决方案)
- [4.1 评论嵌套结构](#41-评论嵌套结构)
- [4.2 点赞功能实现](#42-点赞功能实现)
- [4.3 文件上传与存储](#43-文件上传与存储)
- [4.4 课程表与日程管理](#44-课程表与日程管理)
- [4.5 搜索功能实现](#45-搜索功能实现)
- [五、后续优化建议](#五后续优化建议)
- [5.1 性能优化](#51-性能优化)
- [5.2 安全性优化](#52-安全性优化)
- [5.3 用户体验优化](#53-用户体验优化)
- [5.4 代码质量优化](#54-代码质量优化)
## 一、当前开发进度
### 1.1 已完成功能
#### 前端
- ✅ 基础环境搭建Vue 3 + TypeScript + Vite
- ✅ 基础组件库集成Element Plus
- ✅ HTTP请求封装Axios
- ✅ 页面原型设计
#### 后端
- ✅ 用户认证模块
- 用户注册
- 用户登录(密码登录)
- 邮箱验证码获取
- 邮箱验证码登录
- JWT认证与拦截器
- ✅ 用户信息管理模块
- 获取用户个人信息
- 更新用户个人信息
- 修改用户密码
- 上传用户头像
- 更新用户邮箱
- ✅ 论坛功能模块
- 帖子发布、获取、更新、删除API
- 帖子点赞功能
- 评论发布、获取、删除API
- 评论点赞功能
- 分类管理API
- ✅ 学习资源共享模块
- 资源上传、获取、更新、删除API
- 资源下载功能
- 资源点赞功能
- 资源分类查询
- 用户资源管理
- ✅ 项目文档
- 接口文档
- 开发进度文档
- 开发计划文档
- ✅ 课程表与日程管理模块
- 课程创建、获取、更新、删除API
- 日程创建、获取、更新、删除API
- 课程冲突检测功能
- 日程提醒功能(邮件通知)
### 1.2 本次开发内容
在本次开发中,我们完成了以下工作:
#### 1.2.1 学习资源共享模块实现
1. 设计并实现了资源相关的实体类、DTO和VO
- Resource实体类定义资源的基本属性和关系
- CreateResourceDTO用于创建和更新资源的数据传输对象
- ResourceVO用于返回给前端的资源视图对象包含额外信息
2. 设计并实现了ResourceMapper接口和XML映射文件
- 实现了资源的CRUD操作
- 支持按分类、用户和关键词查询
- 实现了资源点赞和下载计数功能
3. 设计并实现了ResourceService接口和实现类
- 实现了资源上传逻辑,包括文件存储
- 实现了资源下载逻辑
- 实现了资源分类和搜索逻辑
- 实现了权限控制和安全检查
4. 设计并实现了ResourceController提供资源相关的RESTful API
- 资源上传API
- 资源下载API
- 资源列表和详情API
- 资源搜索API
- 用户资源管理API
#### 1.2.2 文档完善与更新
1. 创建了完整的API接口文档
- 详细记录了所有已实现API的请求参数和响应格式
- 按模块分类组织,便于查阅
- 包含了认证、用户信息、论坛功能和资源共享等模块
2. 更新了开发进度文档
- 记录了已完成的功能模块
- 规划了下一步的开发计划
- 分析了技术难点和解决方案
- 提出了后续优化建议
#### 1.2.3 课程表与日程管理模块实现
1. 设计并实现了课程和日程相关的实体类、DTO和VO
- Course实体类定义课程的基本属性和关系
- Schedule实体类定义日程的基本属性和关系
- CreateCourseDTO和CourseVO用于课程的创建、更新和展示
- CreateScheduleDTO和ScheduleVO用于日程的创建、更新和展示
2. 设计并实现了CourseMapper和ScheduleMapper接口及XML映射文件
- 实现了课程和日程的CRUD操作
- 支持按用户、时间和日期查询
- 实现了课程和日程的冲突检测功能
3. 设计并实现了CourseService和ScheduleService接口及实现类
- 实现了课程管理逻辑,包括创建、查询、更新和删除
- 实现了日程管理逻辑,包括创建、查询、更新和删除
- 实现了课程冲突检测逻辑
- 实现了日程提醒功能,包括邮件通知
4. 设计并实现了CourseController和ScheduleController
- 课程管理API包括创建、获取、更新和删除课程
- 日程管理API包括创建、获取、更新和删除日程
- 课程冲突检测API
- 日程提醒处理API
## 二、下一步开发计划
### 2.1 搜索功能模块
**优先级**:中
**任务**
1. 设计并实现搜索相关的DTO和VO
- SearchDTO
- SearchResultVO
2. 设计并实现SearchService接口和实现类
- 全文搜索逻辑
- 分类搜索逻辑
- 搜索结果排序
3. 设计并实现SearchController
- 全局搜索API
- 分类搜索API
- 搜索建议API
4. 实现全文搜索功能
- 帖子内容搜索
- 资源内容搜索
- 用户信息搜索
5. 实现分类搜索功能
- 按分类筛选
- 按标签筛选
- 高级筛选条件
### 2.3 前端页面实现
**优先级**:高
**任务**
1. 实现用户认证相关页面
- 登录页面
- 注册页面
- 找回密码页面
2. 实现用户信息管理相关页面
- 个人主页
- 个人设置页面
- 头像上传组件
3. 实现论坛功能相关页面
- 帖子列表页面
- 帖子详情页面
- 帖子发布/编辑页面
- 评论组件
4. 实现资源共享相关页面
- 资源列表页面
- 资源详情页面
- 资源上传页面
5. 实现课程表与日程相关页面
- 课程表页面
- 日程管理页面
- 日程添加/编辑页面
### 2.4 AI辅助学习模块
**优先级**:低
**任务**
1. 调研并选择合适的AI服务
2. 完成学习计划制定API
3. 完成智能提醒API
4. 实现前端AI助手页面
### 2.5 积分系统模块
**优先级**:低
**任务**
1. 完成积分规则设计
2. 完成积分获取、消费API
3. 完成积分排行榜API
4. 实现前端积分展示功能
5. 实现前端积分排行榜页面
## 三、开发阶段规划
### 3.1 阶段一基础功能完善2周
#### 用户信息管理模块(已完成)
- 完成用户个人信息获取API
- 完成用户个人信息更新API
- 完成用户密码修改API
- 完成用户头像上传API
- 完成用户邮箱更新API
#### 论坛功能模块(基础部分)(已完成)
- 完成帖子表、评论表、分类表的数据库设计
- 完成帖子发布、获取、更新、删除API
- 完成评论发布、获取API
### 3.2 阶段二核心功能开发3周
#### 论坛功能模块(高级部分)(已完成)
- 完成点赞、收藏功能API
- 完成帖子分类管理API
- 完成帖子热门排序算法
#### 学习资源共享模块(已完成)
- 完成资源表的数据库设计
- 完成资源上传、下载、分类API
- 完成资源权限管理API
#### 课程表与日程管理模块(已完成)
- 完成课程表、日程表的数据库设计
- 完成课程创建、获取、更新、删除API
- 完成日程创建、获取、更新、删除API
- 完成课程冲突检测功能
- 完成日程提醒功能(邮件通知)
### 3.3 阶段三高级功能开发3周
#### 搜索功能模块(待开发)
- 完成全文搜索功能API
- 完成分类搜索功能API
- 实现前端搜索结果页面
- 实现前端搜索建议功能
#### 积分系统模块(待开发)
- 完成积分规则设计
- 完成积分获取、消费API
- 完成积分排行榜API
- 实现前端积分展示功能
- 实现前端积分排行榜页面
#### AI辅助学习模块待开发
- 调研并选择合适的AI服务
- 完成学习计划制定API
- 完成智能提醒API
- 实现前端AI助手页面
### 3.4 阶段四优化与测试2周
#### 性能优化(待开发)
- 前端性能优化(代码分割、懒加载等)
- 后端性能优化(缓存、索引等)
- 数据库性能优化
#### 测试与修复(待开发)
- 单元测试
- 集成测试
- 用户界面测试
- Bug修复
## 四、技术难点与解决方案
### 4.1 评论嵌套结构
**难点**:评论可能有多级嵌套回复,需要合理设计数据结构和查询方式。
**解决方案**
1. 在数据库中使用parent_id字段记录父评论ID
2. 查询时先获取一级评论,再获取每个一级评论的回复
3. 使用递归方式构建评论树结构
### 4.2 点赞功能实现
**难点**:需要记录用户点赞状态,并保证点赞/取消点赞操作的原子性。
**解决方案**
1. 创建专门的点赞表记录用户点赞关系
2. 使用唯一索引确保一个用户只能点赞一次
3. 使用事务确保点赞操作的原子性
### 4.3 文件上传与存储
**难点**:处理大文件上传,确保存储安全,提供高效的下载体验。
**解决方案**
1. 实现分片上传,将大文件分成多个小块上传,减轻服务器压力
2. 使用对象存储服务如阿里云OSS、七牛云等存储文件提高可靠性和访问速度
3. 设置文件类型和大小限制,防止恶意文件上传
4. 实现文件MD5校验避免重复上传相同文件
5. 使用CDN加速文件下载
### 4.4 课程表与日程管理
**难点**:课程表数据结构设计,日程冲突检测,提醒功能实现。
**解决方案**
1. 设计灵活的课程表数据结构,支持周期性课程和特殊课程
2. 使用算法检测日程冲突,提供冲突解决建议
3. 使用定时任务实现日程提醒功能
4. 提供多种提醒方式(站内通知、邮件等)
5. 实现日程导入/导出功能,支持与其他日历系统同步
### 4.5 搜索功能实现
**难点**:实现高效的全文搜索,处理大量数据的搜索性能问题。
**解决方案**
1. 使用Elasticsearch或MySQL全文索引实现搜索功能
2. 对搜索结果进行缓存,减少重复搜索的开销
3. 实现搜索结果分页和懒加载,提高用户体验
4. 使用分词技术提高中文搜索的准确性
5. 实现搜索结果排序和过滤功能
## 五、后续优化建议
### 5.1 性能优化
1. 添加缓存机制,减少数据库查询
- 使用Redis缓存热门数据
- 实现本地缓存减轻数据库压力
2. 优化SQL查询添加必要的索引
- 分析慢查询日志
- 优化复杂查询
3. 实现分页查询,减少数据传输量
4. 使用异步处理耗时操作
- 文件处理
- 邮件发送
- 数据统计
### 5.2 安全性优化
1. 完善权限控制系统
- 基于角色的访问控制
- 资源级别的权限控制
2. 加强输入验证和过滤
- 防止SQL注入
- 防止XSS攻击
3. 实现敏感操作的二次验证
4. 加强密码安全性
- 密码强度检测
- 定期修改密码提醒
### 5.3 用户体验优化
1. 实现实时通知功能
- WebSocket实现即时消息
- 消息推送机制
2. 优化页面加载速度
- 资源懒加载
- 组件按需加载
3. 添加更多交互反馈
- 操作成功/失败提示
- 加载状态指示
4. 实现个性化推荐
- 基于用户行为的内容推荐
- 热门内容推荐
### 5.4 代码质量优化
1. 增加单元测试和集成测试
- 提高测试覆盖率
- 自动化测试流程
2. 规范代码风格
- 使用代码格式化工具
- 制定统一的命名规范
3. 完善异常处理机制
- 全局异常处理
- 详细的错误日志
4. 重构复杂代码
- 提取公共方法
- 优化代码结构

File diff suppressed because it is too large Load Diff

@ -0,0 +1,516 @@
# UniLife项目文档
## 目录
- [一、项目概述](#一项目概述)
- [1.1 项目简介](#11-项目简介)
- [1.2 技术栈](#12-技术栈)
- [1.3 项目结构](#13-项目结构)
- [二、开发状态](#二开发状态)
- [2.1 已完成功能](#21-已完成功能)
- [2.2 待实现功能](#22-待实现功能)
- [三、开发计划](#三开发计划)
- [3.1 课程表与日程管理模块](#31-课程表与日程管理模块)
- [3.2 搜索功能模块](#32-搜索功能模块)
- [3.3 前端页面实现](#33-前端页面实现)
- [3.4 AI辅助学习模块](#34-ai辅助学习模块)
- [3.5 积分系统模块](#35-积分系统模块)
- [四、技术难点与解决方案](#四技术难点与解决方案)
- [4.1 文件上传与存储](#41-文件上传与存储)
- [4.2 课程表与日程管理](#42-课程表与日程管理)
- [4.3 搜索功能实现](#43-搜索功能实现)
- [4.4 用户认证与安全](#44-用户认证与安全)
- [4.5 实时通知](#45-实时通知)
- [五、数据库设计](#五数据库设计)
- [5.1 用户表 (users)](#51-用户表-users)
- [5.2 帖子表 (posts)](#52-帖子表-posts)
- [5.3 评论表 (comments)](#53-评论表-comments)
- [5.4 分类表 (categories)](#54-分类表-categories)
- [5.5 资源表 (resources)](#55-资源表-resources)
- [5.6 课程表 (courses)](#56-课程表-courses)
- [5.7 日程表 (schedules)](#57-日程表-schedules)
- [六、开发规范](#六开发规范)
- [6.1 代码规范](#61-代码规范)
- [6.2 提交规范](#62-提交规范)
- [6.3 文档规范](#63-文档规范)
- [七、后续优化建议](#七后续优化建议)
- [7.1 性能优化](#71-性能优化)
- [7.2 安全性优化](#72-安全性优化)
- [7.3 用户体验优化](#73-用户体验优化)
- [7.4 代码质量优化](#74-代码质量优化)
## 一、项目概述
### 1.1 项目简介
UniLife 是一款面向学生的在线论坛,致力于提升校园生活体验。其口号为 "有你生活,优你生活"核心功能包括论坛交流、学习资源共享、课程管理、AI 学习辅助等。项目初期以网站形式开发,后续可能扩展为移动端应用。
### 1.2 技术栈
#### 前端技术栈
- 框架Vue 3 + TypeScript
- 构建工具Vite
- UI组件库Element Plus
- HTTP客户端Axios
- 路由Vue Router
- 表单验证VeeValidate + Yup
#### 后端技术栈
- 框架Spring Boot 3
- 数据库MySQL
- ORM框架MyBatis
- 缓存Redis
- 认证JWT
- 邮件服务Spring Mail
- 工具库Hutool
- API文档Knife4j
### 1.3 项目结构
#### 前端结构
```
Front/vue-unilife/
├── public/ # 静态资源
├── src/
│ ├── assets/ # 资源文件
│ ├── components/ # 组件
│ ├── utils/ # 工具类
│ ├── views/ # 页面
│ ├── router/ # 路由
│ ├── store/ # 状态管理
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
└── package.json # 项目配置
```
#### 后端结构
```
unilife-server/
├── src/main/java/com/unilife/
│ ├── common/ # 通用类
│ ├── config/ # 配置类
│ ├── controller/ # 控制器
│ ├── interceptor/ # 拦截器
│ ├── mapper/ # 数据访问层
│ ├── model/ # 数据模型
│ │ ├── dto/ # 数据传输对象
│ │ ├── entity/ # 实体类
│ │ └── vo/ # 视图对象
│ ├── service/ # 服务层
│ │ └── impl/ # 服务实现
│ └── utils/ # 工具类
└── src/main/resources/
├── mappers/ # MyBatis映射文件
└── application.yml # 应用配置
```
## 二、开发状态
### 2.1 已完成功能
#### 前端
- ✅ 基础环境搭建Vue 3 + TypeScript + Vite
- ✅ 基础组件库集成Element Plus
- ✅ HTTP请求封装Axios
- ✅ 页面原型设计
#### 后端
- ✅ 用户认证模块(注册、登录、验证码)
- ✅ 用户信息管理模块(个人信息、密码修改、头像上传)
- ✅ 论坛功能模块(帖子、评论、点赞、分类)
- ✅ 学习资源共享模块(资源上传、下载、点赞、分类)
- ✅ 项目文档(接口文档、开发进度、开发计划)
### 2.2 待实现功能
- ❌ 课程表与日程管理模块
- ❌ 搜索功能模块
- ❌ 前端页面实现
- ❌ AI辅助学习模块
- ❌ 积分系统模块
## 三、开发计划
### 3.1 课程表与日程管理模块
**优先级**:高
**任务**
1. 设计并实现课程和日程相关的实体类、DTO和VO
- Course实体类
- Schedule实体类
- 相关的DTO和VO
2. 设计并实现CourseMapper和ScheduleMapper接口及XML映射文件
- 课程的CRUD操作
- 日程的CRUD操作
- 按时间和用户查询
3. 设计并实现CourseService和ScheduleService接口及实现类
- 课程导入逻辑
- 日程管理逻辑
- 日程提醒逻辑
4. 设计并实现CourseController和ScheduleController
- 课程管理API
- 日程管理API
- 日程提醒API
5. 实现课程导入功能
- 手动添加课程
- 批量导入课程
- 课程冲突检测
6. 实现日程提醒功能
- 定时提醒
- 邮件通知
- 提醒设置
### 3.2 搜索功能模块
**优先级**:中
**任务**
1. 设计并实现搜索相关的DTO和VO
- SearchDTO
- SearchResultVO
2. 设计并实现SearchService接口和实现类
- 全文搜索逻辑
- 分类搜索逻辑
- 搜索结果排序
3. 设计并实现SearchController
- 全局搜索API
- 分类搜索API
- 搜索建议API
4. 实现全文搜索功能
- 帖子内容搜索
- 资源内容搜索
- 用户信息搜索
5. 实现分类搜索功能
- 按分类筛选
- 按标签筛选
- 高级筛选条件
### 3.3 前端页面实现
**优先级**:高
**任务**
1. 实现用户认证相关页面
- 登录页面
- 注册页面
- 找回密码页面
2. 实现用户信息管理相关页面
- 个人主页
- 个人设置页面
- 头像上传组件
3. 实现论坛功能相关页面
- 帖子列表页面
- 帖子详情页面
- 帖子发布/编辑页面
- 评论组件
4. 实现资源共享相关页面
- 资源列表页面
- 资源详情页面
- 资源上传页面
5. 实现课程表与日程相关页面
- 课程表页面
- 日程管理页面
- 日程添加/编辑页面
### 3.4 AI辅助学习模块
**优先级**:低
**任务**
1. 调研并选择合适的AI服务
2. 完成学习计划制定API
3. 完成智能提醒API
4. 实现前端AI助手页面
### 3.5 积分系统模块
**优先级**:低
**任务**
1. 完成积分规则设计
2. 完成积分获取、消费API
3. 完成积分排行榜API
4. 实现前端积分展示功能
5. 实现前端积分排行榜页面
## 四、技术难点与解决方案
### 4.1 文件上传与存储
**难点**:处理大文件上传,确保存储安全,提供高效的下载体验。
**解决方案**
1. 实现分片上传,将大文件分成多个小块上传,减轻服务器压力
2. 使用对象存储服务如阿里云OSS、七牛云等存储文件提高可靠性和访问速度
3. 设置文件类型和大小限制,防止恶意文件上传
4. 实现文件MD5校验避免重复上传相同文件
5. 使用CDN加速文件下载
### 4.2 课程表与日程管理
**难点**:课程表数据结构设计,日程冲突检测,提醒功能实现。
**解决方案**
1. 设计灵活的课程表数据结构,支持周期性课程和特殊课程
2. 使用算法检测日程冲突,提供冲突解决建议
3. 使用定时任务实现日程提醒功能
4. 提供多种提醒方式(站内通知、邮件等)
5. 实现日程导入/导出功能,支持与其他日历系统同步
### 4.3 搜索功能实现
**难点**:实现高效的全文搜索,处理大量数据的搜索性能问题。
**解决方案**
1. 使用Elasticsearch或MySQL全文索引实现搜索功能
2. 对搜索结果进行缓存,减少重复搜索的开销
3. 实现搜索结果分页和懒加载,提高用户体验
4. 使用分词技术提高中文搜索的准确性
5. 实现搜索结果排序和过滤功能
### 4.4 用户认证与安全
**难点**:确保用户数据安全,防止未授权访问。
**解决方案**
1. 使用JWT进行认证实现权限控制
2. 加密敏感数据,如密码
3. 实现角色和权限管理
4. 防范常见安全威胁如XSS和CSRF攻击
5. 实现登录异常检测和防护
### 4.5 实时通知
**难点**:实现实时消息推送。
**解决方案**
1. 使用WebSocket或服务器发送事件(SSE)
2. 实现消息队列处理大量通知
3. 设计通知优先级和分类
4. 提供通知设置和管理功能
5. 实现离线通知存储和同步
## 五、数据库设计
### 5.1 用户表 (users)
| 字段名 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ----------------------------------------------------- | ------------------------------------ |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 用户ID |
| username | VARCHAR(50) | NOT NULL, UNIQUE | 用户名 |
| email | VARCHAR(100) | NOT NULL, UNIQUE | 邮箱地址(学校邮箱) |
| password | VARCHAR(255) | NOT NULL | 密码(加密存储) |
| nickname | VARCHAR(50) | NOT NULL | 昵称 |
| avatar | VARCHAR(255) | | 头像URL |
| bio | TEXT | | 个人简介 |
| gender | TINYINT | | 性别0-未知, 1-男, 2-女) |
| student_id | VARCHAR(20) | UNIQUE | 学号 |
| department | VARCHAR(100) | | 院系 |
| major | VARCHAR(100) | | 专业 |
| grade | VARCHAR(20) | | 年级 |
| points | INT | DEFAULT 0 | 积分 |
| role | TINYINT | DEFAULT 0 | 角色0-普通用户, 1-版主, 2-管理员) |
| status | TINYINT | DEFAULT 1 | 状态0-禁用, 1-启用) |
| is_verified | TINYINT | DEFAULT 0 | 是否验证0-未验证, 1-已验证) |
| login_ip | VARCHAR(50) | | 最近登录IP |
| login_time | DATETIME | | 最近登录时间 |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 5.2 帖子表 (posts)
| 字段名 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ----------------------------------------------------- | ------------------------------ |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 帖子ID |
| user_id | BIGINT | NOT NULL, FOREIGN KEY | 发布用户ID |
| title | VARCHAR(100) | NOT NULL | 帖子标题 |
| content | TEXT | NOT NULL | 帖子内容 |
| category_id | BIGINT | NOT NULL, FOREIGN KEY | 分类ID |
| view_count | INT | DEFAULT 0 | 浏览次数 |
| like_count | INT | DEFAULT 0 | 点赞次数 |
| comment_count | INT | DEFAULT 0 | 评论次数 |
| status | TINYINT | DEFAULT 1 | 状态0-删除, 1-正常, 2-置顶) |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 5.3 评论表 (comments)
| 字段名 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ----------------------------------------------------- | ------------------------ |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 评论ID |
| post_id | BIGINT | NOT NULL, FOREIGN KEY | 帖子ID |
| user_id | BIGINT | NOT NULL, FOREIGN KEY | 评论用户ID |
| content | TEXT | NOT NULL | 评论内容 |
| parent_id | BIGINT | | 父评论ID回复某条评论 |
| like_count | INT | DEFAULT 0 | 点赞次数 |
| status | TINYINT | DEFAULT 1 | 状态0-删除, 1-正常) |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 5.4 分类表 (categories)
| 字段名 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ----------------------------------------------------- | ---------------------- |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 分类ID |
| name | VARCHAR(50) | NOT NULL, UNIQUE | 分类名称 |
| description | VARCHAR(255) | | 分类描述 |
| icon | VARCHAR(255) | | 分类图标 |
| sort | INT | DEFAULT 0 | 排序 |
| status | TINYINT | DEFAULT 1 | 状态0-禁用, 1-启用) |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 5.5 资源表 (resources)
| 字段名 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ----------------------------------------------------- | ---------------------- |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 资源ID |
| user_id | BIGINT | NOT NULL, FOREIGN KEY | 上传用户ID |
| title | VARCHAR(100) | NOT NULL | 资源标题 |
| description | TEXT | | 资源描述 |
| file_url | VARCHAR(255) | NOT NULL | 文件URL |
| file_size | BIGINT | NOT NULL | 文件大小(字节) |
| file_type | VARCHAR(50) | NOT NULL | 文件类型 |
| category_id | BIGINT | NOT NULL, FOREIGN KEY | 分类ID |
| download_count | INT | DEFAULT 0 | 下载次数 |
| like_count | INT | DEFAULT 0 | 点赞次数 |
| status | TINYINT | DEFAULT 1 | 状态0-删除, 1-正常) |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 5.6 课程表 (courses)
| 字段名 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ----------------------------------------------------- | ---------------------- |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 课程ID |
| user_id | BIGINT | NOT NULL, FOREIGN KEY | 用户ID |
| name | VARCHAR(100) | NOT NULL | 课程名称 |
| teacher | VARCHAR(50) | | 教师姓名 |
| location | VARCHAR(100) | | 上课地点 |
| day_of_week | TINYINT | NOT NULL | 星期几1-7 |
| start_time | TIME | NOT NULL | 开始时间 |
| end_time | TIME | NOT NULL | 结束时间 |
| start_week | TINYINT | NOT NULL | 开始周次 |
| end_week | TINYINT | NOT NULL | 结束周次 |
| color | VARCHAR(20) | | 显示颜色 |
| status | TINYINT | DEFAULT 1 | 状态0-删除, 1-正常) |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 5.7 日程表 (schedules)
| 字段名 | 类型 | 约束 | 说明 |
| ----------- | ------------ | ----------------------------------------------------- | ---------------------- |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 日程ID |
| user_id | BIGINT | NOT NULL, FOREIGN KEY | 用户ID |
| title | VARCHAR(100) | NOT NULL | 日程标题 |
| description | TEXT | | 日程描述 |
| start_time | DATETIME | NOT NULL | 开始时间 |
| end_time | DATETIME | NOT NULL | 结束时间 |
| location | VARCHAR(100) | | 地点 |
| is_all_day | TINYINT | DEFAULT 0 | 是否全天0-否, 1-是) |
| reminder | TINYINT | | 提醒时间(分钟) |
| color | VARCHAR(20) | | 显示颜色 |
| status | TINYINT | DEFAULT 1 | 状态0-删除, 1-正常) |
| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
## 六、开发规范
### 6.1 代码规范
- **前端**
- 遵循ESLint配置使用Prettier格式化
- 组件命名采用PascalCase
- 变量命名采用camelCase
- 使用TypeScript类型定义
- 组件按功能模块组织
- **后端**
- 遵循阿里巴巴Java开发手册
- 类名采用PascalCase
- 方法名和变量名采用camelCase
- 常量名采用全大写下划线分隔
- 包名全小写
- 接口和实现类命名规范
### 6.2 提交规范
- 使用语义化的提交信息
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 代码重构
- test: 测试相关
- chore: 构建过程或辅助工具的变动
- 每个功能或修复在单独的分支上开发
- 提交前进行代码审查
- 定期合并主分支到开发分支
### 6.3 文档规范
- API文档使用Swagger/Knife4j生成
- 重要功能编写设计文档
- 定期更新开发文档
- 代码中添加必要的注释
- 复杂算法和业务逻辑需要详细注释
## 七、后续优化建议
### 7.1 性能优化
1. 添加缓存机制,减少数据库查询
- 使用Redis缓存热门数据
- 实现本地缓存减轻数据库压力
2. 优化SQL查询添加必要的索引
- 分析慢查询日志
- 优化复杂查询
3. 实现分页查询,减少数据传输量
4. 使用异步处理耗时操作
- 文件处理
- 邮件发送
- 数据统计
### 7.2 安全性优化
1. 完善权限控制系统
- 基于角色的访问控制
- 资源级别的权限控制
2. 加强输入验证和过滤
- 防止SQL注入
- 防止XSS攻击
3. 实现敏感操作的二次验证
4. 加强密码安全性
- 密码强度检测
- 定期修改密码提醒
### 7.3 用户体验优化
1. 实现实时通知功能
- WebSocket实现即时消息
- 消息推送机制
2. 优化页面加载速度
- 资源懒加载
- 组件按需加载
3. 添加更多交互反馈
- 操作成功/失败提示
- 加载状态指示
4. 实现个性化推荐
- 基于用户行为的内容推荐
- 热门内容推荐
### 7.4 代码质量优化
1. 增加单元测试和集成测试
- 提高测试覆盖率
- 自动化测试流程
2. 规范代码风格
- 使用代码格式化工具
- 制定统一的命名规范
3. 完善异常处理机制
- 全局异常处理
- 详细的错误日志
4. 重构复杂代码
- 提取公共方法
- 优化代码结构

@ -1,72 +0,0 @@
3daacf2 (HEAD -> main) Revert
8b57c29 (origin/main, origin/HEAD, czq) Stop tracking
c79ff80 test
6a5cf75 更新
78ef254 tmp
5f87197 分类管理,评论,资源,课程
f4a8658 用户信息管理,帖子模块
f632c54 用户信息管理,帖子模块
ca6ab29 升级为springboot3,更新开发文档
33c72dc 升级为springboot3,更新开发文档
9863456 +logo
cec742a 软件体系结构
9bbc131 原型图
f208ba4 原型图
b772fb5 添加Token
204dd28 原型图/个人设置
5720af5 axios完成
af73bbc 完成个人信息界面的表单验证
a4e4fa5 pics
16cfbd5 Delete '图片素材/2a25599c42b1f75029ac3cf8ccf0d5d7.png'
e9d0c89 ADD file via upload
be57df6 Delete '图片素材/pics'
fd9c972 ADD file via upload
fff3563 Delete '图片素材/需求规格说明图'
91b33f3 Add 需求规格说明图
91ac306 Delete '图片素材/3afd20c18a72d94f41e18259f2039100.png'
239eb5a ADD file via upload
2d43df1 ADD file via upload
c6fcbd2 Delete 'unilife软件需求规格说明书.docx'
5e1b17f ADD file via upload
3c2d331 文档
a48e551 个人界面
af1e136 Merge branch 'main' of https://bdgit.educoder.net/pizvue73f/unilife
8a61ff1 验收测试计划书
9e7d617 开发文档更新
d05eb50 用户信息管理接口
1351060 个人信息展示界面布局完成
561dbc6 Merge branch 'main' of https://bdgit.educoder.net/pizvue73f/unilife
a98ea9c 界面初步修改
83f94ea 需求获取文档
04509d7 完成侧边栏的切换功能缺个人画原型图TAT
d6b42b2 添加了显示IP归属地的功能
3adff4b 侧边栏初步实现
3bde499 修改注册表单错误
4908ad6 前端的/users/code改成post方法,传递json改成正确格式
126c1e9 界面跳转
f80b341 Merge branch 'main' of https://bdgit.educoder.net/pizvue73f/unilife
5e1494e 前端bug修改表单可以正确显示
4483fdf Merge remote-tracking branch 'origin/main'
155c336 jwt实现token
fb05160 错误信息提示完成
f8cd2a1 发送邮箱验证码功能及邮箱密码登录功能
98c9cd6 发送邮箱验证码功能初步实现
5c148bb 后端加了一点成功的返回消息
be45d15 axios连接完毕但是没有相应的返回检查即提示用户密码错误等等错误信息提示依然有错改不对了
a106852 文档
795c3dd 焦点访谈报告
4b23ae9 任务项目书
0b923dd Merge branch 'main' of https://bdgit.educoder.net/pizvue73f/unilife
f88eb51 完成axios交互除了验证码注册和密码登录错误信息显示依旧有bug
86da7d9 开发环境添加
4ae6e4c 代码框架及用户注册接口
283973c 后端init
68837be 完成登录和注册页面,其中登录界面可以选择密码和邮箱两种登录方式
8fd6b41 图片素材
94cb4de Merge branch 'main' of https://bdgit.educoder.net/pizvue73f/unilife
34df869 前端环境
dc564e5 readme
e74e446 readme
8196f94 readme
c112817 README.md
d10ebd1 Initial commit

@ -0,0 +1,73 @@
# UniLife项目文档整理说明
## 文档整理目的
为了使项目文档更加清晰、精简和易于维护,我们对项目文档进行了整理和重组。整理的主要目的是:
1. 消除文档之间的重复内容
2. 提供更清晰的文档结构
3. 使文档内容更加集中和专注
4. 便于团队成员查找和使用文档
## 文档整理结果
### 保留的核心文档
以下是整理后保留在项目根目录的核心文档:
1. **README.md**
- 项目简介
- 功能特性概述
- 团队成员信息
2. **UniLife项目文档.md**
- 项目概述(简介、技术栈、项目结构)
- 开发状态(已完成功能、待实现功能)
- 开发计划(各模块详细计划)
- 技术难点与解决方案
- 数据库设计(各表结构)
- 开发规范(代码规范、提交规范、文档规范)
- 后续优化建议
3. **UniLife接口文档.md**
- API基础信息
- 用户认证模块API
- 用户信息管理模块API
- 论坛功能模块API
- 学习资源共享模块API
- 待实现模块说明
4. **UniLife开发进度与计划.md**
- 当前开发进度(已完成功能、本次开发内容)
- 下一步开发计划(各模块详细任务)
- 开发阶段规划(四个阶段的任务和状态)
- 技术难点与解决方案
- 后续优化建议
5. **前端开发计划.md**
- 项目概述
- 当前开发状态
- 前后端接口对接计划
- 页面开发计划
- 开发优先级
## 文档使用建议
1. **新团队成员**首先阅读README.md了解项目概况然后阅读UniLife项目文档.md获取详细信息。
2. **前端开发人员**重点关注UniLife接口文档.md和前端开发计划.md。
3. **后端开发人员**重点关注UniLife项目文档.md中的数据库设计部分和UniLife接口文档-精简版.md。
4. **项目管理人员**重点关注UniLife开发进度与计划.md了解项目进度和计划。
## 文档维护规则
1. **文档更新**:当需要更新文档时,请直接修改对应的核心文档,而不是创建新的文档。
2. **版本控制**:所有文档更改应通过版本控制系统进行跟踪,并在更改时添加适当的注释。
3. **内容一致性**:确保不同文档之间的内容保持一致,避免信息冲突。
4. **定期审查**:每个迭代结束时,应对文档进行审查和更新,确保文档与当前项目状态一致。
Loading…
Cancel
Save