1. 获取地址
https://fifteen.xiaobias.com/source/188
2. 项目简介
线上辅导班系统是一个基于Spring Boot和MyBatis-Plus框架开发的Web应用系统。项目主要为一个在线教育平台提供后台管理功能和前台用户服务。
- 项目目标:为用户(学生)提供一个浏览课程、公开课、师资力量,并进行课程报名、论坛交流的线上学习平台;同时为管理员提供一个对课程、报名、论坛、用户等信息进行全面后台管理的系统。
- 核心功能:
- 用户端:浏览公开课/课程、课程报名、课程留言、课程收藏、论坛发帖/回帖、个人中心信息维护。
- 管理端:管理课程、公开课、师资力量信息;审核课程报名;管理论坛帖子;管理用户;管理系统基础数据(如课程类型、轮播图等)。
3. 技术栈
后端
- 基础框架: Spring Boot (版本
2.2.2.RELEASE) - 持久层框架: MyBatis-Plus (版本
2.3), MyBatis (版本2.1.1), JDBC - 安全框架: Apache Shiro (版本
1.3.2) - 数据库: MySQL (驱动版本
5.7.32-log) - 工具库: Apache Commons Lang3, Commons IO, Hutool, Fastjson, validation-api
- 其他: 集成了百度人工智能SDK (
java-sdk4.4.1),用于人脸比对等功能。
前端
- 管理后台:
- 核心框架: Vue.js (2.x)
- UI库: Element UI (通过
element-ui引入) - 路由: Vue Router (hash模式)
- HTTP库: Axios
- 图表: ECharts
- 构建工具: Vue CLI
- 用户前台:
- UI框架: Layui
- 核心库: Vue.js (通过CDN引入,用于数据渲染), jQuery
- 组件库: Element UI (部分使用), ECharts
- 地图: 高德地图API (VueAMap)
4. 详细介绍
系统主要分为两个部分:用户端和管理端。
用户端功能模块
用户端的前端页面位于src/main/resources/front/front/pages/目录下,功能入口在主框架index.html中定义。主要模块包括:
公开课 (
gongkaike)- 功能: 展示线上公开课列表和详情。
- 实现:
- 列表页 (
list.html): 按类型筛选公开课,支持名称搜索。 - 详情页 (
detail.html): 展示公开课的图片、介绍和视频文件。 GongkaikeController.java提供后端API,支持分页查询、详情查看和保存。
- 列表页 (
课程 (
kecheng)- 功能: 核心业务模块,展示付费或特定的课程信息,并支持用户报名、留言和收藏。
- 实现:
- 列表页 (
list.html): 按课程类型、名称、老师进行筛选。 - 详情页 (
detail.html): 展示课程的详细信息(老师、开课日期、上课时间、课程介绍等),并提供“立即报名课程”按钮、留言功能和收藏/取消收藏功能。报名后数据会进入课程报名表等待审核。 - 相关Controller:
KechengController.java(课程管理)、KechengBaomingController.java(报名处理)、KechengLiuyanController.java(留言处理)、KechengCollectionController.java(收藏处理)。
- 列表页 (
师资力量 (
shizililiang)- 功能: 展示师资团队信息。
- 实现:
list.html展示教师卡片,包含头像、姓名、擅长课程等信息。detail.html展示教师的详细介绍。
论坛 (
forum)- 功能: 提供一个用户社区,用户可以发布帖子、回复其他用户的帖子。
- 实现:
- 列表页 (
list.html): 展示所有父级帖子(super_ids为空),可以按帖子类型筛选。 - 详情页 (
detail.html): 展示帖子内容和评论(forum_state_types为 2 的回帖)。 ForumController.java提供后端API,区分普通用户和管理员发帖。
- 列表页 (
个人中心 (
center)- 功能: 用户个人信息维护。
- 实现:
src/main/resources/front/front/pages/yonghu/center.html页面,用户可以修改头像、姓名、联系方式等,并查看自己的课程收藏列表。
管理端功能模块
管理端是一个独立的单页应用 (SPA),位于src/main/resources/admin/admin/目录。模块和权限通过在src/main/resources/admin/admin/src/utils/menu.js文件中配置。
基础数据管理
- 功能: 管理系统中的字典数据,如公开课类型、课程类型。
- 实现: 对应
dictionaryGongkaike和dictionaryKecheng路由,通过DictionaryService实现字典数据的增删改查。
课程管理
- 功能: 对课程、课程留言、课程收藏、课程报名进行全面管理。
- 实现:
- 课程管理 (
kecheng路由): 支持增删改查、上下架管理。 - 课程报名管理 (
kechengBaoming路由): 为管理员提供“审核”功能,可以变更报名状态(待审核/同意/拒绝)。 - 课程留言和收藏管理: 支持查看和删除操作。
- 课程管理 (
师资力量管理
- 功能: 管理师资介绍信息。
- 实现:
ShizililiangController.java提供后端CRUD接口。
论坛管理
- 功能: 管理论坛帖子。
- 实现: 对
forum表进行管理,支持查看、修改、删除。
用户管理
- 功能: 管理系统前台用户。
- 实现:
YonghuController.java提供后端接口,管理端可以进行增删改查、重置密码等操作。
轮播图管理
- 功能: 管理系统前台的首页轮播图。
- 实现: 管理
config表数据。
数据库设计
核心表结构 (db.sql):
yonghu: 用户表,存储账户、密码、姓名、手机号、头像等。kecheng: 课程表,存储课程名称、图片、类型、老师、开课日期、上架状态、逻辑删除字段(kecheng_delete)等。gongkaike: 公开课表,存储名称、照片、类型、视频、介绍。shizililiang: 师资力量表,存储老师姓名、毕业学校、教学年限、头像等。kecheng_baoming: 课程报名表,关联用户和课程,并记录审核状态(kecheng_baoming_yesno_types)。kecheng_liuyan/kecheng_collection: 课程的留言表和收藏表。forum: 论坛表,通过super_ids字段区分主帖和回帖,forum_state_types区分帖子状态。dictionary: 通用字典表,用于存储各种枚举类型(如课程类型、性别、上下架状态等)。config: 系统配置表,用于存储轮播图地址等配置信息。users: 管理员表,默认账户为admin,密码为admin。
5. 部分代码
5.1 核心配置文件application.yml
展示了数据库连接、MyBatis-Plus配置和文件上传限制等关键配置。
# application.ymlspring:datasource:driverClassName:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://127.0.0.1:3306/xianshangfudaoban?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8username:rootpassword:rootservlet:multipart:max-file-size:1000MBmax-request-size:1000MB#mybatis-plusmybatis-plus:mapper-locations:classpath*:mapper/*.xmltypeAliasesPackage:com.entityglobal-config:id-type:1# 逻辑删除配置logic-delete-value:-1logic-not-delete-value:0configuration:map-underscore-to-camel-case:truecache-enabled:false5.2 Spring Boot 主启动类xianshangfudaobanApplication.java
包含@SpringBootApplication注解和MapperScan配置,是典型的Spring Boot项目入口。
packagecom;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.boot.web.servlet.ServletComponentScan;@SpringBootApplication@ServletComponentScan(value="com.ServletContextListener")@MapperScan(basePackages={"com.dao"})publicclassxianshangfudaobanApplication{publicstaticvoidmain(String[]args){SpringApplication.run(xianshangfudaobanApplication.class,args);}}5.3 通用权限拦截器AuthorizationInterceptor.java
实现了Token验证和跨域处理,是系统安全控制的关键。
// AuthorizationInterceptor.java (核心逻辑)@ComponentpublicclassAuthorizationInterceptorimplementsHandlerInterceptor{@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{// 支持跨域请求response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));// ...IgnoreAuthannotation;if(handlerinstanceofHandlerMethod){annotation=((HandlerMethod)handler).getMethodAnnotation(IgnoreAuth.class);}else{returntrue;}// 不需要验证权限的方法直接放过if(annotation!=null){returntrue;}// 从header中获取token并验证Stringtoken=request.getHeader(LOGIN_TOKEN_KEY);TokenEntitytokenEntity=tokenService.getTokenEntity(token);if(tokenEntity!=null){// ... 设置session信息returntrue;}// token无效,返回未登录错误// ...returnfalse;}}5.4 通用字典转换方法dictionaryConvert
这是系统中的一个关键方法,位于DictionaryServiceImpl.java,用于将数据库存数字编码(如1,2)动态转换成前端可读的文字描述(如 “男”,“女”)。
// DictionaryServiceImpl.javapublicvoiddictionaryConvert(Objectobj,HttpServletRequestrequest){// 获取监听器中缓存的字典表ServletContextservletContext=request.getServletContext();Map<String,Map<Integer,String>>dictionaryMap=(Map<String,Map<Integer,String>>)servletContext.getAttribute("dictionaryMap");// 遍历对象中所有以 "Types" 结尾的整数字段for(Strings:fieldNameList){Fieldtypes=...// 获取Types字段Fieldvalue=obj.getClass().getDeclaredField(s.replace("Types","Value"));// 获取对应的Value字段// 根据Types字段的值,从字典Map中查找对应的文字描述inti=Integer.parseInt(String.valueOf(types.get(obj)));// ... 构建字典表key (如: "sex_types")Strings2=dictionaryMap.get(sbf.toString()).get(i);// 将文字描述赋值给Value字段value.set(obj,s2);}}6. 部分截图
***
7. 项目总结
这个“线上辅导班系统”是一个功能相对完整的教学类Web应用,很好地展示了如何使用当前流行的技术栈(Spring Boot + MyBatis-Plus + Vue/Layui)来构建一个包含前后端的完整项目。
- 优点:
- 架构清晰:代码结构层次分明,将Controller、Service、DAO、Entity分离,符合企业级开发规范。
- 前后端分离:管理端采用Vue + Element UI,实现了前后端分离的开发模式,有利于团队协作和后期维护。
- 功能完备:涵盖了在线教育平台的核心业务流程,从展示课程到报名、审核、互动,形成了一个闭环。
- 细节处理:使用了逻辑删除、字典表映射、统一异常处理、Token鉴权等设计,体现了良好的工程化思维。
- 技术全面:项目集成了文件上传、在线视频播放、百度AI、ECharts图表等多种技术组件,应用场景丰富。
总体而言,该项目是一个非常优秀的学习和参考范本,尤其适合希望了解Spring Boot完整Web应用开发流程的开发者。通过阅读这份源码,可以清晰地掌握如何设计数据库、构建RESTful API、实现后台管理以及开发用户交互界面。