Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

MyBlog个人博客系统

传送门

项目介绍

MyBlog主要是基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理和友链管理等。学习 Java 也有一段时间了,这个是本人第一个真正意义上项目,希望借此项目锻炼自己编码能力,激励自己多写文章。

鸣谢:本项目在诸多方面,特别是UI设计方面,借鉴学习了Halo

如果本项目对你有帮助,不妨点个Star,你的支持就是对我行动的最大鼓励!

技术使用

规范实现

  • 统一请求响应
  • 统一异常处理
  • Java Bean Validation参数校验
  • 面向AOP编程:通过自定义注解实现接口限流、操作日志记录等
  • ……

开发环境

  • 工具:IntelliJ IDEA
  • JDK 1.8
  • 数据库:MySQL 8.0.15
  • 项目构建:后端Maven、前端 Webpack

后端

  • Web框架:Spring Boot
  • 安全框架:Spring Security
  • 字段校验:Spring Validation
  • 持久层:MyBatis-Plus
  • 接口文档:Swagger2
  • Lombok:请确保您的 IDE 安装了此插件
  • 使用简单的自定义缓存,可更换成 Redis
  • 其他:Thumbnailatorwordfilter、等等

前端

快速开始

1、新建数据库myblogdb,选择编码为utf8mb4;然后导入项目源码下resources目录的表结构schema.sql

2、环境准备完毕后,修改配置文件application-dev.yaml中的datasource配置即可以开发环境运行:

你也可以配置博客的一些属性,其配置前缀为my-blog

属性默认值说明
doc-enablefalseswagger api文档是否启用
admin-path“admin”后台管理入口,不需要添加'/'
admin-web-path“classpath:/admin/”管理端WEB静态文件所在目录
app-web-path“classpath:/app/”展示前端WEB静态文件所在目录
allow-login-failure-seconds3600允许连续登录失败的时间(单位秒)
allow-login-failure-count10允许连续登录失败的次数
remember-me-token-validity-seconds604800登录记住我token时间(单位秒)
file-save-path“[user.home]/MyBlog/files”上传文件保存路径

请将打包后的管理端 / 展示前端文件分别放置以上属性admin-web-path / app-web-path目录

项目结构

.|--src.main.java
|---xyz.snwjas.blog//源码
|---annotation//注解
|---aspect//aop切入点
|---config//配置
|---constant//常量
|---controller//控制器
|	|---admin//后台控制器
|	|---app//前台控制器
|---exception//自定义异常
|---handler//处理器
|---interceptor//拦截器
|---mapper//MyBatis mapper接口
|	|---xml//MyBatis mapper xml 文件
|---model//模型
|	|---base//基本接口/类
|	|---entity//实体类
|	|---enums//枚举常量
|	|---params//查询参数
|	|---vo//视图对象
|---schedule//定时任务
|---service//业务接口
|	|---impl//业务接口实现类
|---support//其他的一些支持类
|	|---cache//自定义缓存
|	|---security//Spring Security 认证逻辑
|	|---wordfilter//敏感词过滤器
|---utils//工具包
|---resources//资源
|---admin//后台web资源
|---app//前台web资源
|---static//静态资源
|---wordfilter//敏感词文件

数据库设计

数据库名:myblogdb,数据库统一编码:utf8mb4

本项目共设计了 11个表,分别是:user(用户表)、blog(文章表)、category(分类表)、tag(标签表)、blog_tag(文章标签关联表)、comment(评论表)、attachment(附件表)、link(友链表)、options(系统选项/设置表)、log(日志表)和statistics(数据统计表),具体设计如下:

user : 用户表

字段类型约束说明
idint(11) unsigned主键用户id
usernamevarchar(63)not null用户名
passwordvarchar(255)not null密码
nicknamevarchar(127)昵称
emailvarchar(127)邮箱
avatarvarchar(1023)头像链接
descriptionvarchar(1023)个人描述
update_timetimestamp更新时间
create_timetimestamp创建时间

blog : 博客文章表

可以将 original_content 和 format_content 抽离出一张表。

字段类型约束说明
idint(11) unsigned主键博客id
titlevarchar(255)not null文章标题
original_contentlongtext原格式(markdown)文章内容
format_contentlongtext格式化(html)文章内容
urlvarchar(255)文章访问链接
summaryvarchar(511)文章摘要
thumbnailvarchar(1023)文章缩略图链接
top_rankint(11)文章置顶排行
allow_commenttinyint(4) unsigned0: 不允许; 1: 允许(默认)
likesint(11) unsigned点赞的人数
visitsint(11) unsigned访问人数
statustinyint(4) unsigned文章状态
update_timetimestamp更新时间
create_timetimestamp创建时间

category : 博客分类表

字段类型约束说明
idint(11) unsigned主键分类id
namevarchar(63)not null分类名
parent_idint(11) unsigned父分类id,0顶层分类
descriptionvarchar(127)分类描述
update_timetimestamp更新时间
create_timetimestamp创建时间

tag : 博客标签表

字段类型约束说明
idint(11) unsigned主键标签id
namevarchar(63)not null标签名
update_timetimestamp更新时间
create_timetimestamp创建时间

blog_tag : 博客标签关联表

字段类型约束说明
idint(11) unsigned主键博客标签id
tag_idint(11) unsignednot null标签id
blog_idint(11) unsignednot null博客id
update_timetimestamp更新时间
create_timetimestamp创建时间

comment : 博客评论表

字段类型约束说明
idint(11) unsigned主键评论id
parent_idint(11) unsigned父评论id,0顶层评论,默认0
contentvarchar(1023)not null评论内容
authorvarchar(64)not null评论作者
emailvarchar(127)not null评论作者邮箱
avatarvarchar(1023)评论作者头像
ip_addressint(11)评论作者的IPv4地址,整型
user_agentvarchar(511)评论作者的用户代理
blog_idint(11) unsignednot null博客id
statustinyint(4) unsigned评论状态
is_admintinyint(4) unsigned0: 访客(默认); 1: 管理员
update_timetimestamp更新时间
create_timetimestamp创建时间

attachment : 附件表

字段类型约束说明
idint(11) unsigned主键文件id
namevarchar(255)not null文件名
sizeint(11) unsignednot null文件大小(字节)
pathvarchar(1023)not null文件路径
media_typevarchar(127)not null互联网媒体类型
thumb_pathvarchar(1023)文件缩略图路径
widthint(11) unsigned文件为图片时,图片的宽度像素
heightint(11) unsigned文件为图片时,图片的高度像素
update_timetimestamp更新时间
create_timetimestamp创建时间

link : 友链表

字段类型约束说明
idint(11) unsigned主键友链id
namevarchar(127)not null友链名称
urlvarchar(255)not null友链链接
logovarchar(1023)友链logo
top_rankint(11)友链排行
descriptionvarchar(255)友链描述
update_timetimestamp更新时间
create_timetimestamp创建时间

options : 系统设置

字段类型约束说明
idint(11) unsigned主键系统设置id
option_keyvarchar(127)not null
option_valuevarchar(1023)not null
update_timetimestamp更新时间
create_timetimestamp创建时间

log : 日志表

字段类型约束说明
idint(11) unsigned主键日志id
contentvarchar(1023)操作内容
typetinyint(4) unsigned操作类型
ip_addressint(11)操作人的ipv4地址,整型
update_timetimestamp更新时间
create_timetimestamp创建时间

statistics : 统计表(统计每日的数据)

字段类型约束说明
idint(11) unsigned主键统计id
web_visit_countint(11) unsigned网站访问量
blog_visit_countint(11) unsigned文章访问量
comment_countint(11) unsigned评论数量
datetimestampnot null统计日期
update_timetimestamp更新时间
create_timetimestamp创建时间

speciallist : 特殊清单

字段类型约束说明
idint(11) unsigned主键ID
typetinyint(4) unsigned类型
contentvarchar(511)内容
update_timetimestamp更新时间
create_timetimestamp创建时间

About

MyBlog主要是基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统

Topics

Resources

Stars

61 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages