https://community.buguagaoshu.com/
目前还是MVC模式,开发完成后可能会考虑前后端分离
已完成登陆注册,发帖,回复评论,点赞,markdown编辑,消息通知,图片文件上传,个人界信息编辑,热门话题,问题与用户的搜索,热门帖子与话题,以及后台管理(在主页输入url /admin 进入)设置首页置顶问题,管理社区,远程查看日志,设置等
部分权限验证,关注用户,话题以及问题
还有一个简单的在线聊天室
待完成找回密码,删除未使用图片
后端使用 Spring boot 和 mybatis 开发
密码加密采用 Spring Security 的 Bcrypt 加密
页面模板使用 Thymeleaf
前端页面设计使用 BootStrap4
热门话题与热门问题每一小时更新一次
每两小时处理一次离线用户
每六小时同步一次管理数据
你可以选择到releases中下载直接运行或这自己打包。
不管怎样,你都需要先使用 database.sql 脚本创建数据库
与配置 application.yml
以下为打包方法
环境准备
Java版本: Java 8 及以上
maven: 3
数据库: MySQL 或者 MariaDB 或者 H2 (使用H2数据库需要在pom文件中添加H5依赖)
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
</dependency>
使用 database.sql 脚本创建数据库 配置 application.yml
安装 Redis, 或配置Redis连接
安装 MinIO 服务器, 修改 application.yml 里 MinIO 参数
运行打包命令
mvn clean package
运行项目
java -jar target/community-0.0.1-SNAPSHOT.jar
即可
注意:第一个管理员账号需要在创建完数据库运行项目注册第一个账户后,手动将数据库的权限表power列数据改为0
第一次运行如果没有修改配置文件中上传图片保存路径与日志路径的化,系统会默认在程序运行的目录下创建file文件夹和log文件夹,分别保存图片文件和日志文件!
也可以在 IDEA 中导入此项目,如果 getter 和 setter 飘红,则需要安装 IDEA 得到 Lombok 插件
(ps:如果图片不显示,请到images文件夹下查看)
主页
用户首页
用户信息修改页
问题展示页
群聊页
消息提醒页
管理员页面
mybatis-spring-boot-autoconfigure
在线 markdown 编辑器 markdown edit
JavaScript剪裁图片工具 cropperjs
JavaScript定位引擎 popper.js
BootStrap 日历选择插件 Tempus Dominus
节省多余的Java代码 Lombok
后端生成验证码的工具包 EasyCaptcha 验证码 注意:此工具和kaptcha有一样的问题,使用的Random方法有不安全,CVE-2018-18531对安全性要求较高的,建议下载源码后将Random方法更改为SecureRandom
更新:最新版修复了这个问题
JWT验证工具 JJWT Java JWT
cache 缓存
component 组件
config 自定义配置
controller 控制层
dto DAO层负责页面与后端程序的数据传输
enums 各种数据的类型
exception 异常处理
interceptor 过滤器
mapper 数据库映射
model 定义数据库和后端程序的数据交换类型
schedule 定时任务
service 服务层
util 各种工具
使用Spring Session Redis
添加对象存储MinIO,升级Spring版本
增加一个在线聊天室
增加远程查看日志功能,在管理员界面查看
添加广告投放功能,进入admin页面即可进行投放广告
优化消息通知显示,可以显示对方回复内容
完成关注用户,话题以及问题
优化发帖时间显示
添加多级评论,点击评论可以 @ 用户
替换 markdown 编辑器为更加好用的 Vditor
修改数据库字符集为 utf8mb4 以便用于更好的支持 emoji
完成话题分类页
完成评论点赞,删除评论
添加问题点赞功能,待完成评论点赞
暂时移除 spring-session-jdbc 等待修复添加 spring-session-jdbc 后造成的登陆序列化异常 BUG
添加 spring-session-jdbc,修改配置文件为 yml,删除不必要的包