本项目旨在为编程爱好者和开发者提供一个高效、便捷的在线学习平台,该平台为集在线做题、编程竞赛、即时通讯、文章创作、视频教程、技术论坛为一体的综合平台,一站式地满足用户的各种编程学习需求,而无需在多个平台间来回切换学习。
系统分为客户端以及后台管理端两部分,两部分均采用前后端分离的架构。在前端中,主要使用 Vue3、TypeScript、CSS 等主流技术进行开发,在后端中,主要使用 SpringBoot、Mybatis-Plus 以及 Redis、Rabbitmq 等中间件以及 ElasticSearch 搜索引擎等技术进行开发。此外,代码沙箱基于 Docker、Shell 等技术进行实现。
该仓库是本项目的管理后台后端部分,基于 若依/RuoYi-Vue 开源管理系统 进行二次开发。
名称 | 仓库地址 |
---|---|
客户端前端 | GitHub - lemon-puls/txing-oj |
客户端后端(包含代码沙箱) | GitHub - lemon-puls/txing-oj-backend |
管理后台前端 | GitHub - lemon-puls/txing-admin-vue3 |
管理后台后端(✔) | GitHub - lemon-puls/txing-admin-backend |
代码沙箱(单独) | GitHub - lemon-puls/tx-code-sandbox |
在管理后台中,可对客户端各个模块进行管理,这里由于篇幅问题,仅以周赛和文章模块进行展示说明,可查看每场周赛的详细内容以及手动生成周赛,可对用户发表的文章进行阅览、审核、导出、分页查询等管理工作中常用的操作。
此外,在“系统管理”菜单下,可对系统用户、角色、菜单、岗位、部门等进行管理,提供完备的系统管理功能。
在后台管理平台中,可对系统用户、角色、菜单、部门、岗位等进行管理,超级管理员可以创建菜单,在创建菜单时指定菜单的组件路径、访问路由、权限字符等信息,会为菜单自动生成路由信息,当用户打开该菜单时,就会显示其组件路径对应组件的内容,在很大程度上提高菜单管理的效率。此外,在创建角色时,可以为角色选定可以访问的菜单,系统会把该角色与其可访问的菜单的关联关系保存至数据库中的角色菜单关联表中,这样属于该角色的用户在登录系统时,会从数据库中查出该用户可访问的菜单,进而只为其显示可访问的菜单。
此外,在后端也会精细地为每个接口配置上权限标识符,在用户请求接口时会检查该用户是否拥有该接口(菜单)的访问权限,如果没有,就会进行拦截,有效率避免一些非法用户绕过前端直接访问其无权限访问的菜单,提供系统的安全性。
在后台管理系统中提供对客户端各个模块的管理,包括文章、用户、论坛、课程、竞赛、题目、聊天等多个模块,在功能的提供上,包括了分页查询记录、根据关键字或者其他主要字段进行查询记录、导出记录、添加记录、删除记录、修改记录、阅览、审批记录等常规管理操作。
对于文章模块、课程模块、论坛模块,提供了对用户作品的审核的功能,可以阅览用户的作品,然后录入审核结果以及备注信息,只有通过审核的作品,才能够在客户端被其他用户在检索页检索出来,否则只能作者本人自己查看,严格的审核机制,保证本编程学习平台的内容质量。
对于竞赛模块,除了可以查看周赛记录以及用户的PK记录外,还可以生成下场周赛信息。不过对于周赛信息的生成,在后端中使用定时器自动生成的方式,无特殊情况无需人工干预。
对于聊天模块,可以对群聊或者私聊房间进行封禁与启用,封禁的聊天房间内无法发送消息。
对于用户管理,可对用户进行封禁与启用,封禁后用户无法登录系统。
运行 sql 包下的 sql 脚本创建库表。
在 resourse 下的 logback.xml 配置文件中配置日志存放路径,默认是运行项目当前目录下的 logs 包,目录不存在会自动创建,但是要确保有权限创建,否则运行会报错。
<!-- 日志存放路径 -->
<property name="log.path" value="./logs" />
可以通过 idea 或者 mvn 命令将项目进行打包,打包完将 jar 包上传至服务器(如果是学习使用,也可以使用虚拟机),上传的目录可以自定义。
在 jar 包所在目录下创建 config 文件夹,把代码中 config-sample 包下的配置文件上传至其中,并且修改其中配置,填写完注意保存。
上传 scripts 下的启动脚本 app.sh,目录同上
chmod +x app.sh
# 因为启动脚本里写死了 tx-admin.jar,所以需要创建名为 tx-admin.jar 的软链,这样当 jar 包名称改变后
# 也只需要改变软链指向而已,而无需修改脚本。
ln -sf <替换为 jar 包名称> tx-admin.jar
# 启动项目
./app.sh start
# 停止项目
./app.sh stop
# 重启项目
./app.sh restart
# 查看项目运行状态
./app.sh status
至此,后台管理后端部分已经部署好了,可以访问接口进行验证,注意要开放相关端口,如果使用的是云服务器,还需要登陆控制台在安全组中打开对应端口,否则无法访问。