# mblog **Repository Path**: depth-abyss/mblog ## Basic Information - **Project Name**: mblog - **Description**: 基于Springboot开发的一个小而简洁的个人博客网站 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: http://121.199.26.61:8088/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-08-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 开发目的 针对于目前比较流行个springboot框架,以学习为目的,开发了一套属于自己的个人博客系统,用于记录自己在平时工作中遇到的一些问题,以及对自己学习的一些知识点进行了总结归纳。 ## 功能需求 ### 页面元素 网站页面主要包含三部分元素:导航、正文、底部。 导航:展示站点中的主要功能模块,包含首页、分类、标签、归档、个人信息、友情链接和登录查询操作按钮。 正文:根据所在页面不同展示相应的结果。 底部:网站的基础信息,这里将底部设计为“个人微信二维码”,“邮箱和QQ联系信息”,“网站备注说明信息” ### 页面详细设计 #### 首页 **导航栏内容:** 游客访问:首页 分类 标签 归档 关于我 友链 登录用户:首页 分类 标签 归档 我的空间 关于我 友链 **正文内容:** - 左边展示区 - 占比:11/16 - 内容:系统收录博客数量;博客 :标题、简介、作者头像、作者、浏览量、发布时间、所属分类、封面图;分页元素。 - 右边展示区 - 占比:5/16 - 内容:网站信息、分类、标签、最新推荐、本章信息、传送门、公众号二维码 **底部footer** 我的二维码、联系我、站点说明 #### 分类 - 左边展示区 - 分类名称、分类下的文章数量,选中后变色;分页元素 - 右边展示区 - 标签、最新推荐、本章信息、传送门、公众号二维码 #### 标签 - 左边展示区 - 标签名称、标签下的文章数量,选中后变色;分页元素 - 右边展示区 - 分类、最新推荐、本章信息、传送门、公众号二维码 #### 归档 - 左边展示区 - 年份;文章数量;文章标题、发布时间、查看次数、点赞次数、原创标志;分页元素 - 右边展示区 - 分类、标签、最新推荐、本章信息、传送门、公众号二维码 #### 我的空间 暂无内容 #### 关于我 - 左边展示区 - 照片 - 右边展示区 - 网站名片、关于我、爱好、技能 #### 友情链接 - 左边展示区 12/16 - 好友博客;大佬博客;学习网站 - 右边展示区 4/12 - 网站名片、分类标签、最新推荐、本章信息、传送门、公众号二维码 ### 表结构设计 #### 相册表(album) ```mysql CREATE TABLE album ( ID INT(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '编号', NAME VARCHAR(256) COMMENT '名称', SHOW_IMG VARCHAR(256) COMMENT '封面图', SHOW_FLAG VARCHAR(8) COMMENT '是否展示', INTRODUCTION VARCHAR(1024) COMMENT '介绍', CREATE_TIME VARCHAR(32) COMMENT '创建时间', CREATOR VARCHAR(32) COMMENT '创建人', LOCATION VARCHAR(256) COMMENT '地点', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='相册表'; ``` #### 相册照片表(albumimg) ```mysql CREATE TABLE albumimg ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', ALBUM_ID INT NOT NULL COMMENT '相册编号', IMG_NAME VARCHAR(256) COMMENT '照片名称', IMG_PATH VARCHAR(256) COMMENT '照片路径', INTRODUCTION VARCHAR(1024) COMMENT '介绍', ADD_TIME VARCHAR(32) COMMENT '添加时间', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='相册照片表'; ``` #### 文章表(artical) ```mysql CREATE TABLE artical ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', TITLE VARCHAR(256) COMMENT '标题', SUMMARY VARCHAR(1024) COMMENT '摘要', CREATE_ID VARCHAR(32) COMMENT '创建人', CREATE_DATE VARCHAR(32) COMMENT '创建日期', CREATE_TIME VARCHAR(32) COMMENT '创建时间', UPDATE_TIME VARCHAR(32) COMMENT '更新时间', CONTENT longtext COMMENT '内容', INDEX_PICTURE VARCHAR(256) COMMENT '首页图片', TYPE_ID INT COMMENT '分类', REPRINT_FLAG VARCHAR(8) COMMENT '是否转载', REPRINT_URL VARCHAR(256) COMMENT '转载地址', VIEW_TIMES INT COMMENT '查看次数', LIKE_TIMES INT COMMENT '点赞次数', SHOW_FLAG VARCHAR(8) COMMENT '是否公开', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin; ``` #### 文章标签关联表(articaltag) ```mysql CREATE TABLE articaltag ( ARTICAL_ID INT NOT NULL COMMENT '文章编号', TAG_ID INT NOT NULL COMMENT '标签编号', PRIMARY KEY (ARTICAL_ID, TAG_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='文章标签关联表'; ``` #### 点赞记录表(likerecord) ```mysql CREATE TABLE likerecord ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', LIKE_DATE VARCHAR(32) NOT NULL COMMENT '访问日期', IP_ADDRESS VARCHAR(32) NOT NULL COMMENT 'IP地址', ARTICAL_ID INT NOT NULL COMMENT '文章编号', LAST_LIKE_TIME VARCHAR(32) COMMENT '最近一次点赞时间', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='点赞记录表'; ``` #### 友情链接表(link) ```mysql CREATE TABLE link ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', WEBNAME VARCHAR(32) COMMENT '网站名称', MOTTO VARCHAR(256) COMMENT '介绍', URL VARCHAR(256) COMMENT '网站地址', WEBICON VARCHAR(256) COMMENT '网站图标', WEBMASTER VARCHAR(32) COMMENT '站长姓名', WECHAT VARCHAR(32) COMMENT '微信号', PHONE VARCHAR(32) COMMENT '站长手机号', EMAIL VARCHAR(32) COMMENT '站长邮箱', TYPE VARCHAR(8) COMMENT '分类', STATUS VARCHAR(8) COMMENT '状态', CREATETIME VARCHAR(32) COMMENT '创建时间', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='友情链接表'; ``` #### 留言表(MESSAGE) ```mysql CREATE TABLE MESSAGE ( ID INT NOT NULL AUTO_INCREMENT COMMENT '消息编号', ARTICAL_ID INT COMMENT '文章编号', ACCOUNT VARCHAR(32) COMMENT '用户名', CONTENT VARCHAR(1024) COMMENT '留言内容', MESSAGE_TIME VARCHAR(32) COMMENT '留言时间', STATUS VARCHAR(8) COMMENT '状态', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='留言表'; ``` #### 留言回复表(messagereply) ```mysql CREATE TABLE messagereply ( ID INT NOT NULL AUTO_INCREMENT, MSGID INT COMMENT '消息编号', FROMACCOUNT VARCHAR(32) COMMENT '发消息用户', TOACCOUNT VARCHAR(32) COMMENT '收消息用户', CONTENT VARCHAR(1024) COMMENT '留言内容', REPLYTIME VARCHAR(32) COMMENT '回复时间', STATUS VARCHAR(8) COMMENT '状态', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='留言回复表'; ``` #### 我的信息表(myinfo) ```mysql CREATE TABLE myinfo ( ID INT NOT NULL COMMENT '编号', NICKNAME VARCHAR(32) COMMENT '网名', NAME VARCHAR(32) COMMENT '站长姓名', WEBNAME VARCHAR(32) COMMENT '网站名称', OCCUPATION VARCHAR(32) COMMENT '职业', ADDRESS VARCHAR(256) COMMENT '地址', EMAIL VARCHAR(256) COMMENT '邮箱', WEBSITE VARCHAR(256) COMMENT '网址', QQ VARCHAR(32) COMMENT 'QQ号码', WECHAT VARCHAR(32) COMMENT '微信号', WEBICON VARCHAR(32) COMMENT '网站图标', MOTTO VARCHAR(256) COMMENT '座右铭', PROPHOTO VARCHAR(32) COMMENT '头像', GITEE VARCHAR(256) COMMENT 'gitee', GITHUB VARCHAR(256) COMMENT 'github', WEIBO VARCHAR(256) COMMENT '新浪微博', BRANDIMG VARCHAR(32) COMMENT '网站LOGO', RECORD VARCHAR(256) COMMENT '备案号', CREATETIME VARCHAR(32) COMMENT '创建时间', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='我的信息表'; ``` #### 重置密码记录表(resetpwdlog) ```mysql CREATE TABLE resetpwdlog ( ACCOUNT VARCHAR(32) NOT NULL COMMENT '帐号', TOKEN VARCHAR(256) NOT NULL COMMENT 'token码', EMAIL VARCHAR(32) COMMENT '邮箱', SUBMIT_TIME VARCHAR(32) COMMENT '提交时间', PRIMARY KEY (ACCOUNT) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='重置密码记录表'; ``` #### 资源表(s_resc_manage) ```mysql CREATE TABLE s_resc_manage ( RESC_ICON VARCHAR(32) COMMENT '资源图标', RESC_NAME VARCHAR(32) COMMENT '资源名称', RESC_ID VARCHAR(32) NOT NULL COMMENT '资源编号', ORDER_ID INT NOT NULL COMMENT '排序编号', USE_FLAG VARCHAR(8) COMMENT '使用标志 on off', PRIMARY KEY (RESC_ID, ORDER_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='资源表'; ``` #### 菜单表(s_resc_menu) ```mysql CREATE TABLE s_resc_menu ( TARGET VARCHAR(32) COMMENT '目标地', SPREAD TINYINT(1) COMMENT '是否展开 true false', HREF VARCHAR(200) NOT NULL COMMENT '链接地址', ICON VARCHAR(8) COMMENT '菜单图标', TITLE VARCHAR(32) COMMENT '名称', RESC_ID VARCHAR(32) NOT NULL COMMENT '资源编号', ORDER_ID INT COMMENT '排序编号', USE_FLAG VARCHAR(8) COMMENT '使用标志 on off', PRIMARY KEY (HREF, RESC_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='菜单表'; ``` #### 标签表(tag) ```mysql CREATE TABLE tag ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', NAME VARCHAR(32) COMMENT '标签名称', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='标签表'; ``` #### 分类表(type) ```mysql CREATE TABLE type ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', NAME VARCHAR(32) COMMENT '分类名称', SHOW_FLAG VARCHAR(8) COMMENT '是否展示', INTRODUCTION VARCHAR(1024) COMMENT '介绍', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='分类表'; ``` #### 用户表(USER) ```mysql CREATE TABLE USER ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', ACCOUNT VARCHAR(32) COMMENT '帐号', PASSWORD VARCHAR(256) COMMENT '密码', NICKNAME VARCHAR(32) COMMENT '昵称', SEX VARCHAR(8) COMMENT '性别', AGE INT COMMENT '年龄', NAME VARCHAR(32) COMMENT '真实姓名', PROPHOTO VARCHAR(32) COMMENT '头像', EMAIL VARCHAR(32) COMMENT '邮箱', MOBILE VARCHAR(32) COMMENT '手机号', TYPE VARCHAR(8) COMMENT '用户类型', CREATE_TIME VARCHAR(32) COMMENT '创建时间', UPDATE_TIME VARCHAR(32) COMMENT '更新时间', STATUS VARCHAR(8) COMMENT '用户状态', LAST_LOGIN_TIME VARCHAR(32) COMMENT '上次登录时间', ERROR_COUNT INT, PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='用户信息表'; ``` #### 文章查看记录表(viewrecord) ```mysql CREATE TABLE viewrecord ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', VISIT_DATE VARCHAR(32) NOT NULL COMMENT '访问日期', IP_ADDRESS VARCHAR(32) NOT NULL COMMENT 'IP地址', ARTICAL_ID INT NOT NULL COMMENT '文章编号', LAST_VISIT_TIME VARCHAR(32) COMMENT '最近一次访问时间', VISIT_COUNT INT COMMENT '访问次数', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='文章查看记录表'; ``` #### 网站访问记录表(visitrecord) ```mysql CREATE TABLE visitrecord ( ID INT NOT NULL AUTO_INCREMENT COMMENT '编号', VISIT_DATE VARCHAR(32) NOT NULL COMMENT '访问日期', IP_ADDRESS VARCHAR(32) COMMENT 'IP地址', LAST_VISIT_TIME VARCHAR(32) COMMENT '最近访问时间', VISIT_COUNT INT COMMENT '访问次数', PRIMARY KEY (ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_bin COMMENT='网站访问记录表'; ``` ## 逻辑功能 #### 角色设定 - 普通游客:可以访问网站中公开的内容,比如公开的文章,公开的分类 - 注册用户:可以访问"我的空间模块",可以设置自己的文章是否公开,可以设置自己的个性化信息。 - 管理员:可以管理系统中的文章、分类、标签等,可以编辑站点信息,管理用户。向所有用户发送消息。 - 黑名单IP用户:禁止访问本网站(暂未实现) #### 逻辑说明 ##### 前端 - 游客登录情况下,展示所有网站中公开的内容。 - 用户登录情况下,展示公开的内容以及自己名下创建的内容(目前还未实现用户自己创建内容功能,只有通过赋予管理员的权限后实现)。 - 管理员登录后展示网站中所有的内容。 ##### 后端 - 分类管理:分类下存在文章不允许删除 - 标签管理:标签下存在文章不允许删除 - 文章管理:管理员可以对已经发布的文章进行删除 - 相册管理:管理员可以创建相册,创建相册后可以将照片放入到相册中。如果相册中有照片,则无法直接对相册进行删除操作,必须先删除照片,再删除相册。 - 用户管理:对用户进行解锁、锁定和查看资料操作。 - 导航菜单管理:设置网站头部的访问菜单元素信息。 - 功能菜单管理:根据编码内容设定菜单所属的导航菜单,同时设置菜单的操作。 - 网站配置中心:网站的系统参数配置,用户展示给用户网站的整个轮廓信息。 ## 开发技术 ### 前端 前端页面UI:semanticUI 前端框架:thymeleaf 文章内容的编写和查看:markdown editmd组件进行编写。 管理端:layui框架。 ### 后端 后台开发框架:springboot springMVC mybits mybits-plus 数据库:mysql 分页组件:pagehelper JDK:1.8 数据源管理组件:Druid