基于SpringBoot+Vue前后端分离的在线教育平台项目

发布时间:2024-11-18 06:32

'FutureLearn' 英国在线教育平台,提供短期课程和学位项目。 #生活技巧# #工作学习技巧# #在线教育平台推荐#

基于SpringBoot+Vue前后端分离的在线教育平台项目

赠给有缘人,希望能帮助到你!也请不要吝惜你的大拇指,你的Star、点赞将是对我最大的鼓励与支持!

开源传送门:

后台:Gitee | GitHub管理员前端:Gitee | GitHub讲师前端:Gitee | GitHub学员前端(首页):Gitee | GitHub

演示DEMO传送门:

学员端(首页):oeapp管理员端:oeadmin讲师端:oeteacher

前言

本项目是笔者毕设作品,肝了一周多时间赶出来的,后台写得比较垃圾,前端界面自我感觉还行,但笔者前端只是打辅助的。总的参考价值因人而言。

随心所欲,只为功能实现,没有规范,没有优化,不谈安全;Service层没有接口,实现直接返回Controller结果,因而造成代码大量耦合,拓展性极差;MyBatis-Plus直接面向对象Dao操作,没有写SQL语句,业务逻辑全部使用JAVA代码完成;仍存在较多缺陷,但显示到的菜单功能基本都是完整的,除了支付功能。

关于项目演示:出于多种考虑,演示DEMO中关于修改的操作全部禁用。如果需要了解完整的项目演示效果,请本地测试运行项目,自行在配置文件配置阿里云OSS和VoD相关选项。

鸣谢:部分界面设计元素参考腾讯课堂与龙果学院。

项目介绍

基于SpringBoot+Vue前后端分离的在线教育平台项目,单体应用服务架构。

系统共设计三种角色:管理员、讲师和学员,三个角色分别对应一个操作端。也就是本系统1个后台项目,三个前端项目。管理员端没有引入角色和权限管理,只有一个角色。

已实现的功能列表展示:

管理员端:

数据统计轮播图管理课程管理 课程列表课程审核分类管理 讲师管理 讲师列表讲师审核 学员管理用户管理订单管理

讲师端:

发布课程课程管理评论管理消息接收

学员端(网站首页):

登录注册

分类与轮播图展示

课程列表展示

课程搜索(关键词、分类、讲师)

课程详情(播放器、课程介绍、评论、讲师简介、订阅)

订阅订单

讲师入驻

技术选型

开发环境

工具:IntelliJ IDEAJDK 1.8数据库:MySQL 8.0.15项目构建:后端Maven、前端 webpack

后端

Web框架:Spring Boot字段校验:Spring Validation持久层:MyBatis-Plus接口文档:Swagger2Lombok:请确保您的 IDE 安装了此插件缓存:Redis工具:Hutool资源存储:阿里云对象存储OSS课程视频点播:阿里云视频点播VoD

前端

Vue.js2 全家桶Element-UIvue-admin-template 后台模板axios图表:v-charts(ECharts)富文本编辑器:wangEditor等等

数据库设计

ER图

数据库: online_edu,统一编码:utf8mb4

表格: acl_permission

索引:

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>菜单权限表pidint(11) unsigned否父级idtypetinyint(4) unsigned否1菜单类型,0顶部菜单、1聚合菜单、2页面菜单、3接口namevarchar(255)是路由名称或接口名称pathvarchar(255)否菜单路径(以http开头时,视为打开外部链接) 或 请求接口的地址componentvarchar(255)是菜单组件,只有叶子菜单才可配置metavarchar(1023)是<空>菜单的route.meta配置项,json格式admintinyint(1) unsigned否00默认,1只有超级管理员才能使用enabletinyint(1) unsigned否1是否启用,0否1是update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: acl_role

备注: 角色

索引:

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>角色idnamevarchar(31)否角色名称permission_idvarchar(2048)是角色具有的权限ID串enabletinyint(1)是1是否启用,0否1是update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: acl_user

备注: 管理员用户表

索引:

名称类型属性备注主索引iduniqueuk_usernameusernameunique

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>用户idusernamevarchar(31)否用户名passwordvarchar(255)否密码nicknamevarchar(31)是昵称avatarvarchar(1023)是用户头像markvarchar(255)是备注signvarchar(255)是用户签名roleIdint(11) unsigned否角色idenabletinyint(1) unsigned否1是否启用,0否1是update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: edu_chapter

备注: 课程章节表

索引:

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>章节IDcourse_idint(11) unsigned否课程IDtitlevarchar(63)否章节名称sortint(11)是0显示排序update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: edu_chapter_tmp

备注: 课程章节临时表(用于存放二次修改的数据)

索引:

名称类型属性备注主索引iduniqueidx_idoid

字段:

名称类型空默认值属性备注idbigint(20) unsigned否0主键oidint(11) unsigned是0原章节IDcourse_idint(11) unsigned否课程IDtitlevarchar(63)否章节名称sortint(11)是0显示排序update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: edu_comment

备注: 课程评论表

索引:

名称类型属性备注主索引iduniqueidx_course_idcourse_ididx_member_idmember_ididx_member_id_course_idmember_id, course_ididx_teacher_idteacher_id

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>评论IDcourse_idint(11) unsigned否课程idteacher_idint(11) unsigned否讲师idmember_idint(11) unsigned否会员idcontentvarchar(1023)是评论内容markdouble unsigned是5评分(满分5.00)statustinyint(1) unsigned是<空>评论状态 0审核中 1通过update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: edu_course

备注: 课程表

索引:

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>课程IDteacher_idint(11) unsigned否课程讲师IDsubject_idint(11) unsigned否课程科目分类IDtitlevarchar(63)否课程标题pricedouble(10,2) unsigned是0.00课程销售价格,设置为0则可免费观看lesson_numint(11) unsigned否0总课时covervarchar(1023)否utf8, utf8_general_ci课程封面图片路径descriptiontext是课程描述buy_countint(11) unsigned是0销售数量view_countint(11) unsigned是0浏览数量sortint(11)是0显示排序enabletinyint(1)否1上架下架,0下架 1上架statustinyint(4)是0课程状态,草稿 审核 发表remarksvarchar(511)是<空>备注update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: edu_subject

备注: 课程科目分类表

索引:

名称类型属性备注主索引iduniqueidx_parent_idparent_id

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>课程类别IDtitlevarchar(15)否类别名称parent_idint(11) unsigned是0父IDsortint(11) unsigned是0排序字段enabletinyint(1) unsigned否1是否启用,0否1是update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: edu_teacher

备注: 讲师表

索引:

名称类型属性备注主索引iduniqueuk_mobilemobileuniqueuk_namenameunique

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>讲师IDmobilechar(11)否手机号emailvarchar(127)是邮箱地址passwordvarchar(255)否密码namevarchar(63)否讲师姓名introvarchar(1023)否讲师简介avatarvarchar(1023)是讲师头像resumevarchar(1023)是讲师简历链接divisiontinyint(4)是80分成比例,0-100sortint(11)是0排序enabletinyint(1) unsigned否1是否启用,0否1是statustinyint(4)是0讲师状态:审核通过;审核不通过;待审核update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: edu_video

备注: 课程视频

索引:

名称类型属性备注主索引iduniqueidx_chapter_idchapter_ididx_course_idcourse_id

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>视频IDcourse_idint(11) unsigned否课程IDchapter_idint(11) unsigned否章节IDtitlevarchar(63)否视频显示名称video_idvarchar(63)否云端视频资源sortint(11)是0排序字段play_countint(11) unsigned是0播放次数freetinyint(1) unsigned是1是否可以试听:0免费 1收费durationvarchar(15)是0视频时长(秒)sizebigint(20) unsigned否0视频源文件大小(字节)update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: edu_video_tmp

备注: 课程视频表(用于存放二次修改的数据)

索引:

名称类型属性备注主索引iduniqueidx_chapter_idchapter_ididx_course_idcourse_ididx_idoid

字段:

名称类型空默认值属性备注idbigint(20) unsigned否0主键(视频ID)oidint(11) unsigned是0原视频IDcourse_idint(11) unsigned否课程IDchapter_idbigint(20) unsigned否章节IDtitlevarchar(63)否视频显示名称video_idvarchar(63)否云端视频资源sortint(11)是0排序字段play_countint(11) unsigned是0播放次数freetinyint(1) unsigned是1是否可以试听:0免费 1收费durationvarchar(15)是0视频时长(秒)sizebigint(20) unsigned否0视频源文件大小(字节)update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: hm_banner

备注: 首页banner表

索引:

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>IDtitlevarchar(63)是标题image_urlvarchar(1023)否图片地址link_urlvarchar(1023)是链接地址sortint(11) unsigned否0排序enabletinyint(1) unsigned否1是否启用,0否1是update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: rel_course_member

备注: 课程订阅-学员关系表

索引:

名称类型属性备注主索引iduniqueidx_course_idcourse_iduniqueidx_member_coursemember_id, course_id联合索引(member_id, course_id)idx_member_idmember_idunique

字段:

名称类型空默认值属性备注idint(10) unsigned否<auto_increment>主键course_idint(10) unsigned否0课程Idmember_idint(10) unsigned否0学员Idupdate_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: stat_daily

备注: 网站统计日数据

索引:

名称类型属性备注主索引iduniquestatistics_daydate

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>主键datedatetime否统计日期visit_countint(11) unsigned是0访客数量register_countint(11) unsigned是0注册人数login_countint(11) unsigned是0活跃人数video_view_countint(11) unsigned是0视频播放数course_buy_countint(11) unsigned是0购买数量update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: sys_message

备注: 消息表

索引:

名称类型属性备注主索引iduniqueidx_to_idto_id

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>消息idfrom_idint(11) unsigned否0发送者Idfrom_roletinyint(4)否0发送者角色(管理员、讲师…)to_idint(11) unsigned否0接受者idto_roletinyint(4) unsigned否0接受者角色(教师、学员…)titlevarchar(127)是消息标题contentvarchar(511)否消息内容has_readtinyint(1) unsigned是0是否已读(0未读 1已读)update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: t_order

备注: 订单表

索引:

名称类型属性备注主索引iduniqueidx_course_idcourse_ididx_member_idmember_ididx_member_id_course_idmember_id, course_idux_order_noorder_nounique

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>order_novarchar(18)否订单号(datetime+unsigned int)course_idint(11) unsigned否课程idmember_idint(11) unsigned否会员idtotal_feedouble(10,2)是0.01订单金额(分)pay_typetinyint(4) unsigned是0支付类型(0 未支付 1:微信 2:支付宝)transaction_numvarchar(31)是交易流水号pay_timedatetime是<空>支付完成时间update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

表格: uctr_member

备注: 会员表

索引:

名称类型属性备注主索引iduniqueuk_mobilemobileuniqueuk_nicknamenicknameunique

字段:

名称类型空默认值属性备注idint(11) unsigned否<auto_increment>会员idmobilechar(11)否手机号emailvarchar(127)是邮箱地址passwordvarchar(255)否密码nicknamevarchar(31)是昵称sextinyint(4) unsigned是0性别 1 女,2 男agetinyint(3) unsigned是0年龄avatarvarchar(1023)是用户头像signvarchar(127)是用户签名enabletinyint(1)是1是否启用,0否1是update_timedatetime是<INSERT-TimeStamp>更新时间create_timedatetime是<INSERT-TimeStamp>创建时间

实现效果

更多实现效果图请看附件README.assets

管理员端:

在这里插入图片描述

讲师端:

在这里插入图片描述

学员端:

在这里插入图片描述

总结与展望

事实说明,毕设工作量完全超出了答辩的正常范围,这点我是没想到的,因为只演示了系统一小部分功能就拿了答辩优秀。最后也是希望本项目可以给到有需要的人一些帮助。谢谢大家。

展望:

代码重构,解决前言中的问题。功能完善,完善支付模块、权限管理等功能。架构升级,微服务拆分,引入前沿技术。

当然,这一切的前提是我心情不错且拥有足够的空闲时间。

网址:基于SpringBoot+Vue前后端分离的在线教育平台项目 https://www.yuejiaxmz.com/news/view/115494

相关内容

【毕业设计】基于SpringBoot + Vue的高校线上心理咨询室系统
【网站项目】基于springboot的生活信息分享平台
JAVA计算机毕业设计基于Springboot的在线教育平台的设计与实现(附源码+springboot+开题+论文)
【原创】springboot+vue个人财务记账管理系统设计与实现
基于springboot的疫情社区生活服务系统
基于SpringBoot大学校园生活信息平台的设计与实现
016Springboot+vue基于体质分析的个性化健身方案生成系统与设计
【项目】在线教育平台项目总结
037基于java+springboot的课外学习生活活动平台系统
基于SpringBoot+Vue+uniapp的家庭财务管理系统(源码+lw+部署文档+讲解等)

随便看看