From 78ef254a0cfba9618b76dee95a1b8bb509fdb356 Mon Sep 17 00:00:00 2001 From: 2991692032 Date: Mon, 5 May 2025 13:02:19 +0800 Subject: [PATCH] tmp --- .idea/AugmentWebviewStateStore.xml | 10 + Front/vue-unilife/package-lock.json | 1 + UniLife开发文档-更新版.md | 776 ---------------------------- UniLife开发文档.md | 408 --------------- UniLife开发计划.md | 200 ------- 5 files changed, 11 insertions(+), 1384 deletions(-) create mode 100644 .idea/AugmentWebviewStateStore.xml delete mode 100644 UniLife开发文档-更新版.md delete mode 100644 UniLife开发文档.md delete mode 100644 UniLife开发计划.md diff --git a/.idea/AugmentWebviewStateStore.xml b/.idea/AugmentWebviewStateStore.xml new file mode 100644 index 0000000..81f5ca6 --- /dev/null +++ b/.idea/AugmentWebviewStateStore.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/Front/vue-unilife/package-lock.json b/Front/vue-unilife/package-lock.json index 72ea10e..0dcd290 100644 --- a/Front/vue-unilife/package-lock.json +++ b/Front/vue-unilife/package-lock.json @@ -8,6 +8,7 @@ "name": "vue-unilife", "version": "0.0.0", "dependencies": { + "@element-plus/icons-vue": "^2.3.1", "@vue/shared": "^3.5.13", "axios": "^1.8.3", "element-plus": "^2.9.7", diff --git a/UniLife开发文档-更新版.md b/UniLife开发文档-更新版.md deleted file mode 100644 index a405432..0000000 --- a/UniLife开发文档-更新版.md +++ /dev/null @@ -1,776 +0,0 @@ -# UniLife开发文档(更新版) - -[TOC] - -## 一、项目概述 - -### 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) -- 页面原型设计 - -#### 后端 -- 基础环境搭建(Spring Boot 3) -- 数据库设计(用户表) -- 用户认证模块 - - 用户注册 - - 用户登录 - - 邮箱验证码获取 - - 邮箱验证码登录 -- IP地址定位服务 - -### 2.2 待实现功能 - -#### 前端 -- 所有页面的具体实现 -- 状态管理 -- 路由配置 -- 表单验证 -- 用户认证与授权 -- 响应式设计 - -#### 后端 -- 用户信息管理模块 - - 获取用户信息 - - 更新用户信息 - - 修改密码 - - 上传头像 -- 论坛功能模块 - - 帖子发布/编辑/删除 - - 评论/回复 - - 点赞/收藏 -- 学习资源共享模块 - - 资源上传/下载 - - 资源分类/搜索 -- 课程表与日程管理模块 - - 课程导入/编辑 - - 日程安排/提醒 -- AI辅助学习模块 - - 学习计划制定 - - 智能提醒 -- 搜索功能模块 - - 全文搜索 - - 分类搜索 -- 积分系统模块 - - 积分获取/消费 - - 积分规则管理 - -## 三、API规范 - -### 3.1 基础信息 - -- **基础URL**: `http://localhost:8087`(本地测试) -- **接口格式**: RESTful API -- **数据格式**: JSON -- **字符编码**: UTF-8 -- **认证方式**: JWT (JSON Web Token) - -#### HTTP方法 -- **GET**: 获取资源 -- **POST**: 创建资源 -- **PUT**: 更新资源(全量更新) -- **PATCH**: 部分更新资源 -- **DELETE**: 删除资源 - -### 3.2 响应规范 - -#### 响应状态码 -- **200**: 成功 -- **400**: 请求参数错误 -- **401**: 未授权 -- **403**: 禁止访问 -- **404**: 资源不存在 -- **500**: 服务器内部错误 - -#### 响应格式 - -成功响应: -```json -{ - "code": 200, - "message": "success", - "data": { - "key": "value" - } -} -``` - -注: -- code: 200表示成功 -- data: 包含实际返回数据 - -错误响应: -```json -{ - "code": 400, - "message": "参数错误", - "data": null -} -``` - -注:message字段包含错误信息 - -## 四、数据库设计 - -### 4.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 | 更新时间 | - -### 4.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 | 更新时间 | - -### 4.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 | 更新时间 | - -### 4.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 | 更新时间 | - -### 4.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 | 更新时间 | - -### 4.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 | 更新时间 | - -### 4.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 | 更新时间 | - -## 五、API功能实现 - -### 5.1 用户认证模块 - -#### 5.1.1 用户注册 - -- **URL**: `/users/register` -- **方法**: POST -- **描述**: 创建新用户账号 - -请求参数: -```json -{ - "username": "student123", - "email": "student@school.edu", - "password": "Secure@Password123", - "nickname": "学生昵称", - "studentId": "20220101001", - "department": "计算机学院", - "major": "软件工程", - "grade": "2023级" -} -``` - -响应结果: -```json -{ - "code": 200, - "message": "注册成功", - "data": { - "userId": 12345, - "username": "student123", - "nickname": "学生昵称" - } -} -``` - -#### 5.1.2 用户密码登录 - -- **URL**: `/users/login` -- **方法**: POST -- **描述**: 用户登录 - -请求参数: -```json -{ - "username": "student123", - "password": "Secure@Password123" -} -``` - -注:username字段可以是用户名或邮箱 - -响应结果: -```json -{ - "code": 200, - "message": "登录成功", - "data": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", - "userInfo": { - "userId": 12345, - "username": "student123", - "nickname": "学生昵称", - "avatar": "https://example.com/avatar.jpg", - "role": 0, - "isVerified": true, - "status": 1 - } - } -} -``` - -#### 5.1.3 获取邮箱验证码 - -- **URL**: `/users/code` -- **方法**: POST -- **描述**: 向指定邮箱发送登录验证码 - -请求参数: -```json -{ - "email": "student@school.edu" -} -``` - -响应结果: -```json -{ - "code": 200, - "message": "验证码已发送", - "data": null -} -``` - -#### 5.1.4 邮箱验证码登录 - -- **URL**: `/users/login/code` -- **方法**: POST -- **描述**: 使用邮箱和验证码进行登录 - -请求参数: -```json -{ - "email": "student@school.edu", - "code": "123456" -} -``` - -成功响应: -```json -{ - "code": 200, - "message": "登录成功", - "data": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", - "userInfo": { - "userId": 12345, - "username": "student123", - "nickname": "学生昵称", - "avatar": "https://example.com/avatar.jpg", - "role": 0 - } - } -} -``` - -### 5.2 用户信息管理模块(待实现) - -#### 5.2.1 获取用户个人信息 - -- **URL**: `/users/profile` -- **方法**: GET -- **描述**: 获取当前登录用户的个人资料信息 - -响应结果: -```json -{ - "code": 200, - "message": "success", - "data": { - "id": 12345, - "username": "student123", - "email": "student@school.edu", - "nickname": "测试员", - "avatar": "https://example.com/avatars/default.png", - "bio": "这是一个个人简介", - "gender": 2, - "studentId": "20220101001", - "department": "计算机学院", - "major": "软件工程", - "grade": "2023级", - "points": 100, - "role": 0, - "isVerified": 1 - } -} -``` - -#### 5.2.2 更新用户个人信息 - -- **URL**: `/users/profile` -- **方法**: PUT -- **描述**: 更新当前登录用户的个人资料 - -请求参数: -```json -{ - "nickname": "新昵称", - "bio": "这是更新后的个人简介", - "gender": 2 -} -``` - -响应结果: -```json -{ - "code": 200, - "message": "更新成功", - "data": null -} -``` - -#### 5.2.3 修改用户密码 - -- **URL**: `/users/password` -- **方法**: PUT -- **描述**: 修改当前登录用户的密码 - -请求参数: -```json -{ - "code": "验证码", - "newPassword": "新密码" -} -``` - -响应结果: -```json -{ - "code": 200, - "message": "密码修改成功", - "data": null -} -``` - -#### 5.2.4 上传用户头像 - -- **URL**: `/users/avatar` -- **方法**: POST -- **描述**: 上传或更新用户头像 - -请求参数: -``` -file: [图片文件] -``` - -响应结果: -```json -{ - "code": 200, - "message": "头像上传成功", - "data": { - "avatar": "https://example.com/avatars/user_123456.jpg" - } -} -``` - -#### 5.2.5 更新用户邮箱 - -- **URL**: `/users/email` -- **方法**: PUT -- **描述**: 更新用户邮箱地址 - -请求参数: -```json -{ - "email": "new_email@school.edu", - "code": "123456" -} -``` - -注:code字段为邮箱验证码 - -响应结果: -```json -{ - "code": 200, - "message": "邮箱更新成功", - "data": null -} -``` - -### 5.3 论坛功能模块(待实现) - -#### 5.3.1 获取帖子列表 - -- **URL**: `/posts` -- **方法**: GET -- **描述**: 获取帖子列表,支持分页和筛选 - -请求参数: -``` -page: 1 -size: 10 -category: 1 -sort: latest -``` - -响应结果: -```json -{ - "code": 200, - "message": "success", - "data": { - "total": 100, - "list": [ - { - "id": 1, - "title": "帖子标题", - "summary": "帖子摘要...", - "userId": 12345, - "nickname": "发布者昵称", - "avatar": "https://example.com/avatar.jpg", - "categoryId": 1, - "categoryName": "学习交流", - "viewCount": 100, - "likeCount": 20, - "commentCount": 5, - "createdAt": "2023-05-01 12:00:00" - } - ] - } -} -``` - -#### 5.3.2 获取帖子详情 - -- **URL**: `/posts/{id}` -- **方法**: GET -- **描述**: 获取帖子详情 - -响应结果: -```json -{ - "code": 200, - "message": "success", - "data": { - "id": 1, - "title": "帖子标题", - "content": "帖子内容...", - "userId": 12345, - "nickname": "发布者昵称", - "avatar": "https://example.com/avatar.jpg", - "categoryId": 1, - "categoryName": "学习交流", - "viewCount": 100, - "likeCount": 20, - "commentCount": 5, - "isLiked": true, - "createdAt": "2023-05-01 12:00:00", - "updatedAt": "2023-05-01 12:00:00" - } -} -``` - -#### 5.3.3 发布帖子 - -- **URL**: `/posts` -- **方法**: POST -- **描述**: 发布新帖子 - -请求参数: -```json -{ - "title": "帖子标题", - "content": "帖子内容...", - "categoryId": 1 -} -``` - -响应结果: -```json -{ - "code": 200, - "message": "发布成功", - "data": { - "postId": 1 - } -} -``` - -#### 5.3.4 更新帖子 - -- **URL**: `/posts/{id}` -- **方法**: PUT -- **描述**: 更新帖子 - -请求参数: -```json -{ - "title": "更新后的标题", - "content": "更新后的内容...", - "categoryId": 2 -} -``` - -响应结果: -```json -{ - "code": 200, - "message": "更新成功", - "data": null -} -``` - -#### 5.3.5 删除帖子 - -- **URL**: `/posts/{id}` -- **方法**: DELETE -- **描述**: 删除帖子 - -响应结果: -```json -{ - "code": 200, - "message": "删除成功", - "data": null -} -``` - -#### 5.3.6 获取评论列表 - -- **URL**: `/posts/{postId}/comments` -- **方法**: GET -- **描述**: 获取帖子的评论列表 - -请求参数: -``` -page: 1 -size: 20 -``` - -响应结果: -```json -{ - "code": 200, - "message": "success", - "data": { - "total": 50, - "list": [ - { - "id": 1, - "content": "评论内容...", - "userId": 12345, - "nickname": "评论者昵称", - "avatar": "https://example.com/avatar.jpg", - "likeCount": 5, - "isLiked": false, - "createdAt": "2023-05-01 12:30:00", - "replies": [ - { - "id": 2, - "content": "回复内容...", - "userId": 54321, - "nickname": "回复者昵称", - "avatar": "https://example.com/avatar2.jpg", - "likeCount": 2, - "isLiked": true, - "createdAt": "2023-05-01 12:35:00" - } - ] - } - ] - } -} -``` - -#### 5.3.7 发表评论 - -- **URL**: `/comments` -- **方法**: POST -- **描述**: 发表评论或回复 - -请求参数: -```json -{ - "postId": 1, - "content": "评论内容...", - "parentId": null -} -``` - -注:parentId字段用于回复某条评论,回复时设置为父评论ID,发表新评论时设为null - -响应结果: -```json -{ - "code": 200, - "message": "评论成功", - "data": { - "commentId": 3 - } -} -``` - -#### 5.3.8 点赞/取消点赞 - -- **URL**: `/posts/{id}/like` -- **方法**: POST -- **描述**: 点赞 diff --git a/UniLife开发文档.md b/UniLife开发文档.md deleted file mode 100644 index eb3c115..0000000 --- a/UniLife开发文档.md +++ /dev/null @@ -1,408 +0,0 @@ -[TOC] - -## 一、API规范 - -### 1.1 基础信息 - - - -- **基础URL**: `http://localhost:8080`(本地测试) - -- **接口格式**: RESTful API - -- **数据格式**: JSON - -- **字符编码**: UTF-8 - -- **认证方式**: JWT (JSON Web Token) - - - -- **GET**: 获取资源 -- **POST**: 创建资源 -- **PUT**: 更新资源(全量更新) -- **PATCH**: 部分更新资源 -- **DELETE**: 删除资源 - -### 1.2 响应规范 - -#### 响应状态码 - -- **200**: 成功 -- **400**: 请求参数错误 -- **401**: 未授权 -- **403**: 禁止访问 -- **404**: 资源不存在 -- **500**: 服务器内部错误 - -#### 后端相应格式 - -成功响应: - -```json -{ - "code": 200, // 200表示成功 - "message": "success", - "data": { // 实际返回数据 - // ... - } -} -``` - -错误相应: - -```json -{ - "code": 400, - "message": "参数错误", // 错误信息 - "data": null -} -``` - -## 二、 数据库设计 - -### 2.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 | 密码(加密存储 | -| | | | | -| 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 | 更新时间 | - -#### 建表语句 - -```sql -CREATE TABLE `users` ( - `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID', - `username` VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名', - `email` VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱地址(学校邮箱)', - `password` VARCHAR(255) NOT NULL COMMENT '密码(加密存储)', - `nickname` VARCHAR(50) NOT NULL COMMENT '昵称', - `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像URL', - `bio` TEXT DEFAULT NULL COMMENT '个人简介', - `gender` TINYINT DEFAULT 0 COMMENT '性别(0-未知, 1-男, 2-女)', - `student_id` VARCHAR(20) UNIQUE DEFAULT NULL COMMENT '学号', - `department` VARCHAR(100) DEFAULT NULL COMMENT '院系', - `major` VARCHAR(100) DEFAULT NULL COMMENT '专业', - `grade` VARCHAR(20) DEFAULT NULL COMMENT '年级', - `points` INT DEFAULT 0 COMMENT '积分', - `role` TINYINT DEFAULT 0 COMMENT '角色(0-普通用户, 1-版主, 2-管理员)', - `status` TINYINT DEFAULT 1 COMMENT '状态(0-禁用, 1-启用)', - `is_verified` TINYINT DEFAULT 0 COMMENT '是否验证(0-未验证, 1-已验证)', - `login_ip` VARCHAR(50) DEFAULT NULL COMMENT '最近登录IP', - `login_time` DATETIME DEFAULT NULL COMMENT '最近登录时间', - `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - INDEX `idx_email` (`email`), - INDEX `idx_username` (`username`), - INDEX `idx_student_id` (`student_id`), - INDEX `idx_role` (`role`), - INDEX `idx_status` (`status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'; -``` - - - -## 三、Api功能实现 - -### 3.1用户认证模块 - -#### 3.1.1 用户注册 - -- **URL**: `/users/register` - -- **方法**: POST - -- **描述**: 创建新用户账号 - - 请求参数: - - ```json - { - "username": "student123", - "email": "student@school.edu", - "password": "Secure@Password123", - "nickname": "学生昵称", - "studentId": "20220101001", - "department": "计算机学院", - "major": "软件工程", - "grade": "2023级" - } - ``` - - 响应结果: - - ```json - { - "code": 200, - "message": "注册成功", - "data": { - "userId": 12345, - "username": "student123", - "nickname": "学生昵称" - } - } - ``` - - -#### 3.1.2 用户密码登录 - -- **URL**: `/users/login` -- **方法**: POST -- **描述**: 用户登录 - -请求参数: - -```json -{ - "username": "student123", // 用户名或邮箱 - "password": "Secure@Password123" -} -``` - -响应结果: - -```json -{ - "code": 200, - "message": "登录成功", - "data": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", - "userInfo": { - "userId": 12345, - "username": "student123", - "nickname": "学生昵称", - "avatar": "https://example.com/avatar.jpg", - "role": 0, - "isVerified": true, - "status": 1 - } - } -} -``` - -#### 3.1.3 获取邮箱验证码 - -- **URL**: `/users/code` - -- **方法**: POST - -- **描述**: 向指定邮箱发送登录验证码 - - 请求参数 - - ```json - { - "email": "student@school.edu" - } - ``` - - 响应结果: - - ```json - { - "code": 200, - "message": "验证码已发送", - "data": null - } - ``` - -#### 3.1.4 邮箱验证码登录 - -- **URL**: `/users/login/code` -- **方法**: POST -- **描述**: 使用邮箱和验证码进行登录 - -请求参数 - -```json -{ - "email": "student@school.edu", - "code": "123456" -} -``` - -成功响应: - -```json -{ - "code": 200, - "message": "登录成功", - "data": { - "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", - "userInfo": { - "userId": 12345, - "username": "student123", - "nickname": "学生昵称", - "avatar": "https://example.com/avatar.jpg", - "role": 0 - } - } -} -``` - -### 3.2用户信息管理模块 - -#### 3.2.1获取用户个人信息 - -#### 请求信息 - -- **URL**: `/users/profile` -- **方法**: `GET` -- **描述**: 获取当前登录用户的个人资料信息 - -#### 响应结果 - -```json -Copy{ - "code": 200, - "message": "success", - "data": { - "id": 12345, - "username": "student123", - "email": "student@school.edu", - "nickname": "测试员", - "avatar": "https://example.com/avatars/default.png", - "bio": "这是一个个人简介", - "gender": 2, - "studentId": "20220101001", - "department": "计算机学院", - "major": "软件工程", - "grade": "2023级", - "points": 100, - "role": 0, - "isVerified": 1 - } -} -``` - -#### 3.2.2 更新用户个人信息 - -#### 请求信息 - -- **URL**: `/users/profile` -- **方法**: `PUT` -- **描述**: 更新当前登录用户的个人资料 - - - -#### 请求参数 - -```json -Copy{ - "nickname": "新昵称", - "bio": "这是更新后的个人简介", - "gender": 2, -} -``` - -#### 响应结果 - -```json -Copy{ - "code": 200, - "message": "更新成功", - "data": null -} -``` - -#### 3.2.3 修改用户密码 - -#### 请求信息 - -- **URL**: `/users/password` -- **方法**: `PUT` -- **描述**: 修改当前登录用户的密码 - -#### 请求参数 - -```json -Copy{ - "code": "验证码", - "newPassword": "新密码", -} -``` - -#### 响应结果 - -```json -Copy{ - "code": 200, - "message": "密码修改成功", - "data": null -} -``` - -#### 3.2.4 上传用户头像 - -#### 请求信息 - -- **URL**: `/users/avatar` -- **方法**: `POST` -- **描述**: 上传或更新用户头像 - - - -#### 请求参数 - -``` -Copy - -file: [图片文件] -``` - -#### 响应结果 - -```json -Copy{ - "code": 200, - "message": "头像上传成功", - "data": { - "avatar": "https://example.com/avatars/user_123456.jpg" - } -} -``` - -### 2.5 更新用户邮箱 - -#### 请求信息 - -- **URL**: `/users/email` -- **方法**: `PUT` -- **描述**: 更新用户邮箱地址 - -#### 请求参数 - -```json -Copy{ - "email": "new_email@school.edu", - "code": "123456" // 邮箱验证码 -} -``` - -#### 响应结果 - -```json -Copy{ - "code": 200, - "message": "邮箱更新成功", - "data": null -} -``` diff --git a/UniLife开发计划.md b/UniLife开发计划.md deleted file mode 100644 index e02e163..0000000 --- a/UniLife开发计划.md +++ /dev/null @@ -1,200 +0,0 @@ -# UniLife开发计划 - -## 一、项目概述 - -UniLife是一款面向学生的在线论坛,致力于提升校园生活体验。项目采用前后端分离架构,前端使用Vue 3 + TypeScript,后端使用Spring Boot 3。 - -## 二、当前进度 - -### 已完成功能 -- 基础环境搭建(前后端) -- 用户认证模块(注册、登录、验证码) -- 数据库设计(用户表) -- 页面原型设计 - -### 待开发功能 -- 用户信息管理模块 -- 论坛功能模块 -- 学习资源共享模块 -- 课程表与日程管理模块 -- AI辅助学习模块 -- 搜索功能模块 -- 积分系统模块 - -## 三、开发计划 - -### 阶段一:基础功能完善(2周) - -#### 1. 用户信息管理模块 -- **优先级**:高 -- **负责人**:待定 -- **任务**: - - 完成用户个人信息获取API - - 完成用户个人信息更新API - - 完成用户密码修改API - - 完成用户头像上传API - - 完成用户邮箱更新API - - 实现前端个人主页页面 - - 实现前端个人设置页面 - -#### 2. 论坛功能模块(基础部分) -- **优先级**:高 -- **负责人**:待定 -- **任务**: - - 完成帖子表、评论表、分类表的数据库设计 - - 完成帖子发布、获取、更新、删除API - - 完成评论发布、获取API - - 实现前端帖子列表页面 - - 实现前端帖子详情页面 - - 实现前端帖子发布/编辑页面 - -### 阶段二:核心功能开发(3周) - -#### 3. 论坛功能模块(高级部分) -- **优先级**:中 -- **负责人**:待定 -- **任务**: - - 完成点赞、收藏功能API - - 完成帖子分类管理API - - 完成帖子热门排序算法 - - 实现前端点赞、收藏功能 - - 实现前端分类筛选功能 - -#### 4. 学习资源共享模块 -- **优先级**:中 -- **负责人**:待定 -- **任务**: - - 完成资源表的数据库设计 - - 完成资源上传、下载、分类API - - 完成资源权限管理API - - 实现前端资源列表页面 - - 实现前端资源详情页面 - - 实现前端资源上传页面 - -#### 5. 课程表与日程管理模块 -- **优先级**:中 -- **负责人**:待定 -- **任务**: - - 完成课程表、日程表的数据库设计 - - 完成课程导入、编辑API - - 完成日程安排、提醒API - - 实现前端课程表页面 - - 实现前端日程管理页面 - -### 阶段三:高级功能开发(3周) - -#### 6. 搜索功能模块 -- **优先级**:中 -- **负责人**:待定 -- **任务**: - - 完成全文搜索功能API - - 完成分类搜索功能API - - 实现前端搜索结果页面 - - 实现前端搜索建议功能 - -#### 7. 积分系统模块 -- **优先级**:低 -- **负责人**:待定 -- **任务**: - - 完成积分规则设计 - - 完成积分获取、消费API - - 完成积分排行榜API - - 实现前端积分展示功能 - - 实现前端积分排行榜页面 - -#### 8. AI辅助学习模块 -- **优先级**:低 -- **负责人**:待定 -- **任务**: - - 调研并选择合适的AI服务 - - 完成学习计划制定API - - 完成智能提醒API - - 实现前端AI助手页面 - -### 阶段四:优化与测试(2周) - -#### 9. 性能优化 -- **优先级**:中 -- **负责人**:待定 -- **任务**: - - 前端性能优化(代码分割、懒加载等) - - 后端性能优化(缓存、索引等) - - 数据库性能优化 - -#### 10. 测试与修复 -- **优先级**:高 -- **负责人**:全体成员 -- **任务**: - - 单元测试 - - 集成测试 - - 用户界面测试 - - Bug修复 - -## 四、模块分工建议 - -### 前端开发 -1. **用户界面组件**:负责通用组件、布局、样式等 -2. **用户认证与信息管理**:负责登录、注册、个人信息等页面 -3. **论坛功能**:负责帖子列表、详情、发布等页面 -4. **学习资源与课程表**:负责资源共享、课程表等页面 -5. **AI与搜索功能**:负责AI助手、搜索等页面 - -### 后端开发 -1. **用户服务**:负责用户认证、信息管理等API -2. **内容服务**:负责帖子、评论、资源等API -3. **课程与日程服务**:负责课程表、日程管理等API -4. **AI与搜索服务**:负责AI助手、搜索等API -5. **系统服务**:负责积分系统、通知等API - -## 五、技术难点与解决方案 - -### 1. 用户认证与安全 -- **难点**:确保用户数据安全,防止未授权访问 -- **解决方案**:使用JWT进行认证,实现权限控制,加密敏感数据 - -### 2. 文件上传与存储 -- **难点**:处理大文件上传,确保存储安全 -- **解决方案**:实现分片上传,使用对象存储服务,设置文件类型和大小限制 - -### 3. 实时通知 -- **难点**:实现实时消息推送 -- **解决方案**:使用WebSocket或服务器发送事件(SSE) - -### 4. 搜索功能 -- **难点**:实现高效的全文搜索 -- **解决方案**:考虑使用Elasticsearch或MySQL全文索引 - -### 5. AI功能集成 -- **难点**:选择合适的AI服务并集成 -- **解决方案**:调研开源AI模型或使用第三方AI服务API - -## 六、开发规范 - -### 代码规范 -- 前端:遵循ESLint配置,使用Prettier格式化 -- 后端:遵循阿里巴巴Java开发手册 - -### 提交规范 -- 使用语义化的提交信息 -- 每个功能或修复在单独的分支上开发 -- 提交前进行代码审查 - -### 文档规范 -- API文档使用Swagger/Knife4j生成 -- 重要功能编写设计文档 -- 定期更新开发文档 - -## 七、项目管理 - -### 进度跟踪 -- 每周进行一次进度汇报 -- 使用GitHub Projects或Trello跟踪任务 - -### 会议安排 -- 每周一次全体会议 -- 需要时进行临时技术讨论 - -### 风险管理 -- 定期评估项目风险 -- 制定应急预案 -- 保持良好的团队沟通 \ No newline at end of file