从零开始搭建日志系统(5)-第一版完成

git项目地址
git项目地址

https://github.com/MrITzhongzi/blog-system.git

第一版功能梳理
  1. 用户注册,登录
  2. 发表文章
  3. 图片上传
  4. 数据分页和密码加密
新增功能
  1. PageHelper分页器加入 springboot分页器集成教程
  2. 查询所有文章和查询某个用户文章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`);

后言

第一版虽然几天就开发完了,这对我是一个从零到一的过程。希望自己和看到的你,再接再厉,不断学习。快乐编程。

未完待遇………………

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITzhongzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值