# schoolfan **Repository Path**: Good__night/schoolfan ## Basic Information - **Project Name**: schoolfan - **Description**: 一个校园番管理系统,基于SSM和springboot完成,里面有留言墙、二手交易、和失物招领等功能。 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2021-11-03 - **Last Updated**: 2025-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, SSM, SpringBoot, 留言板 ## README #### 1.前端 - JS框架:JQuery - CSS框架:[Semantic UI官网](https://semantic-ui.com/) - Markdown编辑器:[编辑器 Markdown](https://pandao.github.io/editor.md/) - 代码高亮:[代码高亮 prism](https://github.com/PrismJS/prism) - 动画效果:[动画 animate.css](https://daneden.github.io/animate.css/) - 文章目录:[目录生成 Tocbot](https://tscanlin.github.io/tocbot/) - 音乐盒[:zplayer](https://gitee.com/supperzh/zplayer) - 照片墙[:lightbox插件](https://github.com/JavaScript-Kit/jkresponsivegallery) #### 2.后端 - 核心框架:SpringBoot 2.2.5 - 项目构建:jdk1.8、Maven 3 - 持久层框架:Mybatis - 模板框架:Thymeleaf - 分页插件:PageHelper # - 加密:MD5加密 - 运行环境:腾讯云Centos7 #### 3.数据库 - MySQL 5.7 ### 二、功能需求 因为是校园番,所以没有做用户权限管理,只是简单的区分了一下普通用户和管理员用户,这里就根据普通用户和管理员用户来讲述功能需求,其实从上一篇博文的前端页面就能大致的看出需求了 #### 1.普通用户 - 查看文章信息:文章列表、推荐文章、文章标题、文章内容、发布时间、访问量以及评论等信息 - 查看分类文章:分类列表、分类文章信息 - 查看时间轴:按照文章时间发布顺序查看文章 - 搜索文章:导航栏右边搜索框根据关键字搜索 - 听音乐:上一曲、下一曲、音量控制、播放顺序控制、查看歌词等 - 留言:留言并回复 - 查看友链:查看并访问博主在友链页面添加的友链连接 - 查看相册信息:相册列表、照片名称、照片拍摄地点、时间、照片描述 #### 2.管理员用户(栈主) - 拥有普通用户所有功能权限 - 登录:在主页路径下加“/admin”,可进入登录页面,根据数据库的用户名和密码进行登录 - 文章管理:查询文章列表、新增文章、编辑文章、删除文章、搜索文章 - 分类管理:查询分类列表、新增分类、编辑分类、删除分类 - 友链管理:查询友链列表、新增友链、编辑友链、删除友链 - 相册管理:查询相册列表、新增照片、编辑照片、删除照片 - 消息管理:登录后恢复评论留言会显示栈主的头像信息,并能显示删除消息按键,可以对消息进行删除 ### 三、数据库设计 > 由于博主最开始是使用jpa作为持久层开发此博客的,数据表是由jpa框架自动生成的,在使用mybatis为持久层的时候就沿用了jpa生成的数据库,但是对评论表和留言表进行了改动,如果同样是先用jpa,再用mybatis开发的伙伴这里要注意一下,如果直接使用mybatis开发的则可以忽略 #### 1.数据表 - 博客数据表:t_blog - 分类数据表:t_type - 用户数据表:t_user - 评论数据表:t_comment - 留言数据表:t_message - 友链数据表:t_friend - 相册数据表:t_picture #### 2.实体关系 ![image](https://note.youdao.com/yws/api/personal/file/CACBEF653E6745BF834B892952BFA816?method=download&shareKey=946ce6c8c2a0c84b107053cc254088f2) - 博客和分类是多对一的关系:一个博客对应一个分类,一个分类可以对应多个博客 - 博客和用户是多对一的关系:一个博客对应一个用户,一个用户可以对应多个博客 - 博客和评论是一对多的关系:一个博客可以对应多个评论,一个评论对应一个博客 - 评论和回复是一对多的关系:一个评论可以对应多个回复,一个回复对应一个评论 > 留言和评论是一样的,还有友链和相册数据表和其他表没有关联 - 博客属性:标题、内容、首图、标记、浏览次数、赞赏开启、版权开启、评论开启、是否发布、创建时间、更新时间、描述 - 分类属性:分类名称 - 用户属性:昵称、用户名、密码、邮箱、类型、头像、创建时间、更新时间 - 评论属性:昵称、邮箱、头像、评论内容、创建时间、博客id、父评论id、管理员id - 留言属性:昵称、邮箱、头像、留言内容、创建时间、父留言id、管理员id - 友链属性:网址、名称、创建时间、图片地址 - 相册属性:图片地址、图片描述、图片名称、拍摄时间地点 #### 4.建表语句 ```java /* Navicat MySQL Data Transfer Source Server : 127.0.0.1 Source Server Version : 50554 Source Host : localhost:3306 Source Database : schoolfan Target Server Type : MYSQL Target Server Version : 50554 File Encoding : 65001 Date: 2021-11-01 10:39:50 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `t_blog` -- ---------------------------- DROP TABLE IF EXISTS `t_blog`; CREATE TABLE `t_blog` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `appreciation` bit(1) NOT NULL, `commentabled` bit(1) NOT NULL, `content` longtext, `create_time` datetime DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `first_picture` varchar(255) DEFAULT NULL, `flag` varchar(255) DEFAULT NULL, `published` bit(1) NOT NULL, `recommend` bit(1) NOT NULL, `share_statement` bit(1) NOT NULL, `title` varchar(255) DEFAULT NULL, `update_time` datetime DEFAULT NULL, `views` int(11) DEFAULT NULL, `type_id` bigint(20) DEFAULT NULL, `user_id` bigint(20) DEFAULT NULL, `comment_count` int(255) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, KEY `FK292449gwg5yf7ocdlmswv9w4j` (`type_id`) USING BTREE, KEY `FK8ky5rrsxh01nkhctmo7d48p82` (`user_id`) USING BTREE, CONSTRAINT `FK292449gwg5yf7ocdlmswv9w4j` FOREIGN KEY (`type_id`) REFERENCES `t_type` (`id`), CONSTRAINT `FK8ky5rrsxh01nkhctmo7d48p82` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; -- ---------------------------- -- Records of t_blog -- ---------------------------- INSERT INTO `t_blog` VALUES ('1', '', '', '###风景超棒的云端清吧悦吧\r\n\r\n去过很多次了 室外靠窗的位置最喜欢 可以鸟瞰珠江夜景 视野开阔 一览无余 风景优美有低消 建议提前预定室内以前里面有乐队演奏 晚上的曲子还是偏欢快的 到了周末人会多 不过空间还蛮大的人均的话一百多一杯酒 选择挺多的 也有无酒精的 和小吃室外有风吹就很舒服', '2021-10-23 07:25:02', '去过很多次了 室外靠窗的位置最喜欢 可以鸟瞰珠江夜景 视野开阔 一览无余 风景优美有低消 建议提前预定室内以前里面有乐队演奏 晚上的曲子还是偏欢快的 到了周末人会多 不过空间还蛮大的人均的话一百多一杯酒 选择挺多的 也有无酒精的 和小吃室外有风吹就很舒服', 'https://qcloud.dpfile.com/pc/v2UVFKjp_V5ESNimu8pQytLCn9fDFmjDO5rphzGU1yWrppd5nAzZ7irlqFq5lAEqNZvK3RMEnSZusP-oHmeixOpEuctC7NDQ04iV_zcg7BUYPeq-iX-oD-RLc_uA0GHhp6cjSpPcu-UE8TQHZIi94A.jpg', '', '', '', '', '风景超棒的云端清吧悦吧', '2021-10-23 08:18:30', '2', '1', '2', '0'); INSERT INTO `t_blog` VALUES ('2', '', '', '###本人在西区大门对面道里捡到一钱包,里面有身份证,银行卡,现金若干,有丢失者请与本人联系。15539999269\r\n', '2021-10-23 08:18:19', '本人在西区大门对面道里捡到一钱包', 'https://picsum.photos/id/1025/200/300', '', '', '', '', '本人在西区大门对面道里捡到一钱包', '2021-10-23 08:19:45', '2', '2', '2', '0'); INSERT INTO `t_blog` VALUES ('3', '', '', '###希望一直如少年,干净纯粹心安。', '2021-10-23 10:05:52', '少年', 'https://picsum.photos/536/354', '', '', '', '', '少年', '2021-10-23 10:19:08', '0', '4', '2', '0'); INSERT INTO `t_blog` VALUES ('4', '', '', '##其次我们行于匆匆,为何匆匆未来', '2021-10-23 10:07:01', '其次我们行于匆匆,为何匆匆未来', 'https://picsum.photos/seed/picsum/536/354', '', '', '', '', '其次我们行于匆匆,为何匆匆未来', '2021-10-23 10:18:33', '0', '4', '2', '0'); INSERT INTO `t_blog` VALUES ('5', '', '', '#自律且努力,别让生活太安逸', '2021-10-23 10:11:31', '自律且努力,别让生活太安逸', 'https://i.picsum.photos/id/997/200/200.jpg?hmac=J9wMccIJgdwcAV_BlxcoN1N_oKWGt4Wb8EqkKqp-4gE', '', '', '', '', '自律且努力,别让生活太安逸', '2021-10-23 10:18:01', '5', '4', '2', '2'); -- ---------------------------- -- Table structure for `t_comment` -- ---------------------------- DROP TABLE IF EXISTS `t_comment`; CREATE TABLE `t_comment` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nickname` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `avatar` varchar(255) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `blog_id` bigint(20) DEFAULT NULL, `parent_comment_id` bigint(20) DEFAULT NULL, `admin_comment` bit(1) NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; -- ---------------------------- -- Records of t_comment -- ---------------------------- INSERT INTO `t_comment` VALUES ('1', '还想听晚安么', '822021336@qq.com', 'sss', '/images/me.jpg', '2021-10-23 10:12:52', '5', '-1', ''); INSERT INTO `t_comment` VALUES ('2', 's', '822021336@qq.com', 'zscz', '/images/me.jpg', '2021-10-23 10:12:59', '5', '1', ''); -- ---------------------------- -- Table structure for `t_friend` -- ---------------------------- DROP TABLE IF EXISTS `t_friend`; CREATE TABLE `t_friend` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `blogaddress` varchar(255) NOT NULL, `blogname` varchar(255) NOT NULL, `create_time` datetime DEFAULT NULL, `pictureaddress` varchar(255) NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; -- ---------------------------- -- Records of t_friend -- ---------------------------- INSERT INTO `t_friend` VALUES ('1', 'https://email.163.com/', '三大城市', '2021-10-26 02:51:41', 'https://img2.woyaogexing.com/2021/09/30/f2571857611a4b6e912760e251c4ac67.jpg'); -- ---------------------------- -- Table structure for `t_message` -- ---------------------------- DROP TABLE IF EXISTS `t_message`; CREATE TABLE `t_message` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nickname` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `avatar` varchar(255) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `parent_message_id` bigint(20) DEFAULT NULL, `admin_message` bit(1) NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; -- ---------------------------- -- Records of t_message -- ---------------------------- INSERT INTO `t_message` VALUES ('1', '还想听晚安么', '822021336@qq.com', '你好', null, '2021-10-23 07:26:44', '-1', ''); INSERT INTO `t_message` VALUES ('2', '还想听晚安么', '822021336@qq.com', '额归属感撒大V', null, '2021-10-23 07:27:14', '-1', ''); INSERT INTO `t_message` VALUES ('3', '上档次撒大V', '822021336@qq.com', '的对对对', null, '2021-10-23 07:27:30', '-1', ''); -- ---------------------------- -- Table structure for `t_picture` -- ---------------------------- DROP TABLE IF EXISTS `t_picture`; CREATE TABLE `t_picture` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `pictureaddress` varchar(255) DEFAULT NULL, `picturedescription` varchar(255) DEFAULT NULL, `picturename` varchar(255) DEFAULT NULL, `picturetime` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; -- ---------------------------- -- Records of t_picture -- ---------------------------- INSERT INTO `t_picture` VALUES ('1', 'https://qcloud.dpfile.com/pc/v2UVFKjp_V5ESNimu8pQytLCn9fDFmjDO5rphzGU1yWrppd5nAzZ7irlqFq5lAEqNZvK3RMEnSZusP-oHmeixOpEuctC7NDQ04iV_zcg7BUYPeq-iX-oD-RLc_uA0GHhp6cjSpPcu-UE8TQHZIi94A.jpg', '离去的都是风景,留下的才是人生。', '离去的都是风景', '21'); INSERT INTO `t_picture` VALUES ('2', 'https://i.picsum.photos/id/997/200/200.jpg?hmac=J9wMccIJgdwcAV_BlxcoN1N_oKWGt4Wb8EqkKqp-4gE', '修勾', '修勾', '21'); INSERT INTO `t_picture` VALUES ('3', 'https://picsum.photos/id/1008/200/300', 'beautiful', 'beautiful', '21'); INSERT INTO `t_picture` VALUES ('4', 'https://picsum.photos/536/354', '风景', '风景', '21'); -- ---------------------------- -- Table structure for `t_tag` -- ---------------------------- DROP TABLE IF EXISTS `t_tag`; CREATE TABLE `t_tag` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of t_tag -- ---------------------------- -- ---------------------------- -- Table structure for `t_type` -- ---------------------------- DROP TABLE IF EXISTS `t_type`; CREATE TABLE `t_type` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; -- ---------------------------- -- Records of t_type -- ---------------------------- INSERT INTO `t_type` VALUES ('1', '吃喝玩乐'); INSERT INTO `t_type` VALUES ('2', '寻物启事'); INSERT INTO `t_type` VALUES ('3', '二手交易'); INSERT INTO `t_type` VALUES ('4', '情感文案'); -- ---------------------------- -- Table structure for `t_user` -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `avatar` varchar(255) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `nickname` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `type` int(11) DEFAULT NULL, `update_time` datetime DEFAULT NULL, `username` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; -- ---------------------------- -- Records of t_user -- ---------------------------- INSERT INTO `t_user` VALUES ('2', '/images/me.jpg', '2021-06-14 14:39:56', '822021336@qq.com', '还想听晚安么', '123456', null, '2021-06-14 14:40:29', 'xixi'); INSERT INTO `t_user` VALUES ('3', 'C:\\Users\\asus\\Pictures\\素材\\me.png', null, null, null, null, null, null, null); ```