# 萤火虫博客后端 **Repository Path**: yehcnet/back-blog ## Basic Information - **Project Name**: 萤火虫博客后端 - **Description**: 萤火虫博客后端代码 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-05-17 - **Last Updated**: 2021-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 萤火虫博客后端 # 一、前言 前后端分离: 前端项目:https://gitee.com/yehcnet/front-blog 后端项目:https://gitee.com/yehcnet/back-blog * 核心框架:SpringBoot * ORM 框架:MyBatis * MVC 框架:Spring MVC * 前端JS:vue.js * Markdown 编辑器:editor.md * 数据库:MySQL5.7 * Java环境:jdk1.8 * tomcat版本:10 * maven版本:3.6.3 # 二、数据库表设计 ## 2.1 用户表user UID(用户ID)、username(用户名)、password(用户密码)、email(用户邮箱)、img(用户头像)、sex(用户性别)、date(创建日期)、phone(用户手机)、uuid(用户唯一标识) ## 2.2 博文表essay EID(博文ID)、(title)博文标题、content(博文内容(markeddown格式))、date(发布日期)、email(发表邮箱)、liked(点赞数)、visited(浏览数)、kind(分类) ## 2.3 草稿表draft DID(草稿ID)、title(草稿标题)、content(草稿内容)、date(保存时间)、email(用户邮箱) ## 2.4 评论表comment CID(评论ID)、username(用户名)、email(用户邮箱)、date(评论时间)、eid(文章ID)、content(评论内容) ## 2.5 留言表word WID(留言ID)、username(用户名)、email(邮箱)、content(留言内容)date(留言时间) # 三、模块功能 根据数据库表的设计,完善所有表的实体类(pojo) ## 3.1 用户模块 功能: 1. 用户登录: 2. 用户注册: 3. ... 接口:/user 1. /login:用户登录,需要判断用户名和密码是否一致 2. /regist:用户注册,采用单例模式+同步锁实现同步性注册 3. /getUser:获取所有用的部分非私密数据,实现用户列表功能 4. /getUserByEmail:通过email得到用户信息,实现判断用户是否重复注册,或者判断用户的唯一标识与邮箱是否一致 5. ... ## 3.2 博文模块 功能: 1. 发表博文: 2. 删除博文: 3. 编辑博文: 4. ... 接口:/essay 1. /create:文章发布,需要先判断用户是否有权限,即email与uuid标识是否一致,再进行文章发布 2. /delete:文章删除,需要先判断用户是否有权限,即email与uuid标识是否一致,再进行文章删除 3. /edit:文章编辑,需要先判断用户是否有权限,即email与uuid标识是否一致,再进行文章编辑 4. /hot:获取最热,浏览量最多的八篇文章 5. /new:获取最新发布的八篇文章 6. /EID:通过文章EID获取某一篇文章的详细信息 7. /count:获取所有文章的数量 8. /kind:获取某一类型的文章 9. /page:通过page页面控制返回的文章列表,一页9篇 10. /pagelist:通过page页面控制返回的文章列表,一页5篇 11. /visited:获取所有文章的浏览量总和 12. /email:通过用户邮箱email,获取所有属于他的文章 13. ... ## 3.3 草稿模块 功能: 1. 保存草稿: 2. 读取草稿: 3. 自动保存: 4. ... 接口:/draft 1. create:草稿保存,需要先判断用户是否有权限,即email与uuid标识是否一致,再进行草稿保存,如果该用户已经存在草稿则覆盖旧的草稿 2. /getD:在每次打开新编辑器时会先读取草稿 3. /deleteD:草稿删除每次发表新文章前都会先判断是否存在草稿,如果存在先删除草稿再发布新博文 4. ... ## 3.4 留言模块 功能: 1. 留言: 2. ... 接口:/word 1. /say:发表留言,需要用户填写用户名和邮箱和内容 2. /getW:获取所有的留言内容 3. ... ## 3.5 评论模块 功能: 1. 评论: 2. ... 接口:/comment 1. /say:发表评论,需要用户填写用户名和邮箱和内容 2. /getW:根据文章EID获取该文章的所有评论 3. ... ## 3.6 图片模块 功能: 1. 图片上传: 2. ... 接口:/img 1. /test:获取用户上传的图片,保存在本地,调用uuid更改图片名称,返回用户一个在线地址 2. ... # 四、接口文档 ## 4.1 用户接口 ### 4.1.1 用户登录 接口地址:/user/login 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :----- | :------- | | email | 是 | String | 用户邮箱 | | password | 是 | String | 密码 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.1.2 用户注册 接口地址:/user/regist 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :----- | :------- | | email | 是 | String | 用户邮箱 | | password | 是 | String | 密码 | | username | 是 | String | 用户名 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.1.3 获取所有用户 接口地址:/user/getUser 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | null | | | | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 用户列表数组 | ### 4.1.4 获取用户通过邮箱 接口地址:/user/getUserByEmail 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :---- | :-------- | :----- | :------- | | email | 是 | String | 用户邮箱 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 用户信息 | ## 4.2 博文接口 ### 4.2.1 博文发布 接口地址:/essay/create 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :--------- | :------------------------- | | email | 是 | String | 用户邮箱 | | title | 是 | String | 博文标题 | | content | 是 | String | 博文内容 | | kind | 是 | String | 博文类型 | | **uuid** | **是** | **String** | **判断用户是否登录的表示** | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.2.2 博文删除 接口地址:/essay/delete 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :--------- | :------------------------- | | email | 是 | String | 用户邮箱 | | eid | 是 | int | 博文ID | | **uuid** | **是** | **String** | **判断用户是否登录的表示** | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.2.3 博文编辑 接口地址:/essay/edit 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :--------- | :------------------------- | | email | 是 | String | 用户邮箱 | | title | 是 | String | 博文标题 | | content | 是 | String | 博文内容 | | kind | 是 | String | 博文类型 | | eid | 是 | int | 博文ID | | **uuid** | **是** | **String** | **判断用户是否登录的表示** | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.2.4 获取最热文章 接口地址:/essay/hot 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | null | | | | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 文章数组 | ### 4.2.5 获取最新文章 接口地址:/essay/new 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | null | | | | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 文章数组 | ### 4.2.6 获取文章通过EID 接口地址:/essay/EID 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :----- | | EID | 是 | int | 文章ID | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 文章详细信息 | ### 4.2.7 获取文章总数 接口地址:/essay/count 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | null | | | | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 文章总数 | ### 4.2.8 获取某一类型的文章 接口地址:/essay/kind 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :----- | :------- | | kind | 是 | String | 文章类型 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 文章数组 | ### 4.2.9 根据页码获取文章 接口地址:/essay/page 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | page | 是 | int | 页码 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 文章数组,一页最多9篇博文 | ### 4.2.10 根据页码获取文章 接口地址:/essay/pagelist 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | page | 是 | int | 页码 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 文章数组,一页最多5篇博文 | ### 4.2.11 获取所有文章浏览总数 接口地址:/essay/visited 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | null | | | | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 所有文章浏览总数 | ### 4.2.12 获取某一用户的文章 接口地址:/essay/email 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :---- | :-------- | :----- | :------- | | email | 是 | String | 用户邮箱 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 文章数组 | ## 4.3 草稿接口 ### 4.3.1 草稿保存 接口地址:/draft/create 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :--------- | :------------------------- | | email | 是 | String | 用户邮箱 | | title | 是 | String | 博文标题 | | content | 是 | String | 博文内容 | | **uuid** | **是** | **String** | **判断用户是否登录的表示** | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.3.2 草稿删除 接口地址:/draft/deleteD 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :---- | :-------- | :----- | :------- | | email | 是 | String | 用户邮箱 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.3.3 草稿获取 接口地址:/draft/getD 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :--------- | :------------------------- | | email | 是 | String | 用户邮箱 | | **uuid** | **是** | **String** | **判断用户是否登录的表示** | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 草稿详细信息 | ## 4.4 留言接口 ### 4.4.1 留言发表 接口地址:/word/say 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :----- | :------- | | username | 是 | String | 用户名 | | email | 是 | String | 用户邮箱 | | content | 是 | String | 留言内容 | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.4.2 留言获取 接口地址:/word/getW 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | null | | | | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 留言数组 | ## 4.5 评论接口 ### 4.5.1 留言发表 接口地址:/comment/say 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :------- | :-------- | :----- | :------- | | username | 是 | String | 用户名 | | email | 是 | String | 用户邮箱 | | content | 是 | String | 留言内容 | | eid | 是 | int | 文章ID | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | null | ### 4.5.2 留言获取 接口地址:/comment/getW 返回格式:json 请求方式:get/post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :----- | | eid | 是 | int | 文章ID | 返回参数: | 名称 | 类型 | 说明 | | :--- | :----- | :-------------------------------- | | code | String | 返回码 200 为成功 其他 为失败 | | msg | String | 返回说明 | | data | Object | 评论数组 | ## 4.6 图片接口 ## 4.6 图片接口 ### 4.6.1 图片上传 接口地址:/img/test 返回格式:json 请求方式:post 请求参数说明: | 名称 | 必填/格式 | 类型 | 说明 | | :--- | :-------- | :--- | :--- | | file | 是 | file | 图片 | 返回参数: | 名称 | 类型 | 说明 | | :------ | :----- | :------------------------ | | success | int | 返回码 1为成功 0为失败 | | message | String | 返回说明 | | url | String | 图片url | # 五、前端代码 代码放在gieee中:https://gitee.com/yehcnet/front-blog # 六、后端代码 代码放在gieee中:https://gitee.com/yehcnet/back-blog # 六、统一返回类 1. String code;返回码:200成功,其他失败 2. String msg;返回说明信息 3. Object data;返回数据