git项目地址
git项目地址
https://github.com/MrITzhongzi/blog-system.git
第一版功能梳理
- 用户注册,登录
- 发表文章
- 图片上传
- 数据分页和密码加密
新增功能
- PageHelper分页器加入 springboot分页器集成教程
- 查询所有文章和查询某个用户文章api增加
遇到的坑
使用PageHelper时,mapper中的sql语句结尾不能 分号。因为PageHeiper会对sql进行拼接分页处理,加分号的话会导致sql语法错误。
--------------------------------------------------------------------------------------
第一版 api梳理
用户模块
功能梳理:
1.用户注册时需提供用户名、用户密码、用户手号、昵称。
2.用户登录时可以采用用户名或邮箱或手机号进行登录。
3.用户可以发布博文、发表评论、回复,还可以添加其他用友。
- 用户注册:
- api: /api/user/register post
- 参数: username password phone nickname
- 同一个手机号只能注册一个,后台会自动检测,密码不能包空字符串,并且后台自动加密存入数据库
- 返回数据
{
"code": 0,
"description": "成功",
"data": {
"phone": "17862806854",
"nickname": "以勒"
}
}
- 用户登录:
- api: /api/user/login post
- 参数: phone password
- 登录成功后,后台会返回
jwt
生成的token
,访问后续的接口都需要验证token的合法性
- 返回数据格式
{
"code": 0,
"description": "success",
"data": {
"phone": "17862806857",
"nickname": "以勒",
"username": "lihongwei",
"token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsaWhvbmd3ZWkiLCJpZCI6NTYsInBhc3N3b3JkIjoiLTRuMzVvNGQxaWlxZjVqZGE4MDg2bDd2N2R0ODJmdTduIiwiaWF0IjoxNTg2OTExNjc0LCJleHAiOjE1ODc1MTY0NzR9.SWHz1aCVlhvBESbTHYno-VTTiA6mjdxxmWnRvslTaPw"
}
}
文章
功能梳理:
1. 用户可以发表文章
2. 每篇文章都有自己的点赞数,浏览量,评论
3. 每篇文章都有自己相关的图文
- 发布文章
- api: /api/article/publish post
- 参数: title content
- 发布博文需要携带登录生成的token
- 返回结果
{
"code": 0,
"description": "文章插入成功",
"data": null
}
- 图片上传:
- api: /api/img/upload_img post
- 参数: img (MultipartFile类型)
- 上传成功后图片会存放到七牛云,并将响应的图片名字存到数据库
- 需要携带token
- 返回数据格式
{
"code": 0,
"description": "上传成功",
"data": {
"imageName": "ff065a3b7f5c40db905614dee23ce6b7png",
"imagePath": "http://q8eezq1qm.bkt.clouddn.com/ff065a3b7f5c40db905614dee23ce6b7png?e=1587023135&token=N0Jk2mJqhLzI_6qkWuwnwxtvqDoKL7cziO_Z0ugf:Wis3Z6mOE8onDHj_oirTPPVUXIs="
}
}
博客文章图片渲染思路:
给 img标签增加一个 data-img-name的标签,用来存储七牛云上图片的名字。
然后前端遍历所有图片,用该名字从服务器获取链接,并把响应的链接替换上即可。
<img style="max-width: 200px;" src="./video_cover.png" data-img-name="" alt="">
- 查询所有文章列表
- api: /api/article/all get
- 参数:page size
- 查询所有的文章列表,支持分页,返回的数据格式如下
- 返回结果如下:
{
"code": 0,
"description": "success",
"data": {
"data": [
{
"articleId": 2,
"userId": 56,
"articleTitle": "ddd",
"articleContent": "erere",
"articleViews": 100,
"articleCommentCount": 0,
"articleDate": null,
"articleLikeCount": 0
},
{
"articleId": 3,
"userId": 56,
"articleTitle": "ddd",
"articleContent": "erere",
"articleViews": 0,
"articleCommentCount": 0,
"articleDate": null,
"articleLikeCount": 0
}
],
"total_size": 6,
"total_page": 3,
"current_page": 1
}
}
- 查询某个用户的文章列表
- api: /api/article/user_article get
- 参数:page size
- 查询所有的文章列表,支持分页,返回的数据格式如下
- 返回结果如下:
{
"code": 0,
"description": "success",
"data": {
"data": [
{
"articleId": 2,
"userId": 56,
"articleTitle": "ddd",
"articleContent": "erere",
"articleViews": 100,
"articleCommentCount": 0,
"articleDate": null,
"articleLikeCount": 0
},
{
"articleId": 3,
"userId": 56,
"articleTitle": "ddd",
"articleContent": "erere",
"articleViews": 0,
"articleCommentCount": 0,
"articleDate": null,
"articleLikeCount": 0
}
],
"total_size": 6,
"total_page": 3,
"current_page": 1
}
}
第一版 sql数据库表创建
CREATE TABLE `lhw_user` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`user_ip` varchar(20) NOT NULL COMMENT '用户ip',
`user_name` varchar(20) NOT NULL COMMENT '用户名',
`user_password` varchar(15) NOT NULL,
`user_email` varchar(30) NOT NULL,
`user_profile_photo` varchar(255) NOT NULL COMMENT '用户头像',
`user_registration_time` datetime NULL COMMENT '注册时间',
`user_birthday` date NULL COMMENT '用户生日',
`user_age` tinyint(4) NULL COMMENT '用户年龄',
`user_telephone_number` int(11) NOT NULL COMMENT '用户手机号',
`user_nickname` varchar(20) NOT NULL COMMENT '用户昵称',
PRIMARY KEY (`user_id`)
);
CREATE TABLE `lhw_user_firends` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键标识',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`user_friends_id` bigint(20) NOT NULL COMMENT '好友ID',
`user_note` varchar(20) NOT NULL COMMENT '好友备注',
`user_status` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `lhw_articles` (
`article_id` bigint(255) NOT NULL AUTO_INCREMENT COMMENT '博文ID',
`user_id` bigint(20) NOT NULL COMMENT '发表用户的ID',
`article_title` text NOT NULL COMMENT '博文标题',
`article_content` longtext NOT NULL COMMENT '博文内容',
`article_views` bigint(20) NOT NULL COMMENT '博文浏览量',
`article_comment_count` bigint(20) NOT NULL COMMENT '评论总数',
`article_date` datetime NULL COMMENT '发表时间',
`article_like_count` bigint(20) NOT NULL COMMENT '点赞数',
PRIMARY KEY (`article_id`)
);
CREATE TABLE `lhw_sorts` (
`sort_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID',
`sort_name` varchar(50) NOT NULL COMMENT '分类名称',
`sort_alias` varchar(15) NOT NULL COMMENT '分类别名',
`sort_description` text NOT NULL COMMENT '分类描述',
`parent_sort_id` bigint(20) NOT NULL COMMENT '父分类ID',
PRIMARY KEY (`sort_id`)
)
COMMENT = '文章分类表';
CREATE TABLE `lhw_set_article_sort` (
`article_id` bigint(20) NOT NULL COMMENT '文章ID',
`sort_id` bigint(20) NOT NULL COMMENT '分类ID',
PRIMARY KEY (`article_id`, `sort_id`)
)
COMMENT = '文章和分类对应表';
CREATE TABLE `lhw_labels` (
`label_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '标签ID',
`label_name` varchar(20) NOT NULL COMMENT '标签名称',
`label_alias` varchar(15) NOT NULL COMMENT '标签别名',
`label_description` text NOT NULL COMMENT '标签描述',
PRIMARY KEY (`label_id`)
)
COMMENT = '标签 表';
CREATE TABLE `lhw_set_article_label` (
`article_id` bigint(20) NOT NULL COMMENT '文章ID',
`label_id` bigint(20) NOT NULL COMMENT '标签ID',
PRIMARY KEY (`article_id`, `label_id`)
)
COMMENT = '文章 标签 对应表';
CREATE TABLE `lhw_comments` (
`comment_id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) NOT NULL,
`article_id` bigint(20) NOT NULL,
`comment_like_count` bigint(20) NOT NULL COMMENT '评论点赞数',
`comment_date` datetime NULL COMMENT '评论日期',
`comment_content` text NOT NULL COMMENT '评论内容',
`parent_comment_id` bigint(20) NOT NULL COMMENT '父评论ID',
PRIMARY KEY (`comment_id`)
)
COMMENT = '文章评论表';
ALTER TABLE `lhw_user_firends` ADD CONSTRAINT `fk_lhw_user_firends_lhw_user_firends_1` FOREIGN KEY (`user_id`) REFERENCES `lhw_user` (`user_id`);
ALTER TABLE `lhw_articles` ADD CONSTRAINT `fk_lhw_articles_lhw_articles_1` FOREIGN KEY (`user_id`) REFERENCES `lhw_user` (`user_id`);
ALTER TABLE `lhw_set_article_sort` ADD CONSTRAINT `fk_lhw_set_article_sort_lhw_set_article_sort_1` FOREIGN KEY (`sort_id`) REFERENCES `lhw_sorts` (`sort_id`);
ALTER TABLE `lhw_set_article_sort` ADD CONSTRAINT `fk_lhw_set_article_sort` FOREIGN KEY (`article_id`) REFERENCES `lhw_articles` (`article_id`);
ALTER TABLE `lhw_set_article_label` ADD CONSTRAINT `fk_lhw_set_article_label_lhw_set_article_label_1` FOREIGN KEY (`label_id`) REFERENCES `lhw_labels` (`label_id`);
ALTER TABLE `lhw_set_article_label` ADD CONSTRAINT `fk_lhw_set_article_label` FOREIGN KEY (`article_id`) REFERENCES `lhw_articles` (`article_id`);
ALTER TABLE `lhw_comments` ADD CONSTRAINT `fk_lhw_comments_lhw_comments_1` FOREIGN KEY (`user_id`) REFERENCES `lhw_user` (`user_id`);
ALTER TABLE `lhw_comments` ADD CONSTRAINT `fk_lhw_comments` FOREIGN KEY (`article_id`) REFERENCES `lhw_articles` (`article_id`);
后言
第一版虽然几天就开发完了,这对我是一个从零到一的过程。希望自己和看到的你,再接再厉,不断学习。快乐编程。
未完待遇………………