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

您所在的位置:网站首页 线上课程流程图 OnlineEdu: 基于SpringBoot+Vue前后端分离的在线教育平台项目

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

2024-01-21 11:31| 来源: 网络整理| 查看: 265

基于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 IDEA JDK 1.8 数据库:MySQL 8.0.15 项目构建:后端Maven、前端 webpack

后端

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

前端

Vue.js2 全家桶 Element-UI vue-admin-template 后台模板 axios 图表:v-charts(ECharts) 富文本编辑器:wangEditor 等等 数据库设计

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

表格: acl_permission

索引:

名称 类型 属性 备注 主索引 id unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 菜单权限表 pid int(11) unsigned 否 父级id type tinyint(4) unsigned 否 1 菜单类型,0顶部菜单、1聚合菜单、2页面菜单、3接口 name varchar(255) 是 路由名称或接口名称 path varchar(255) 否 菜单路径(以http开头时,视为打开外部链接) 或 请求接口的地址 component varchar(255) 是 菜单组件,只有叶子菜单才可配置 meta varchar(1023) 是 菜单的route.meta配置项,json格式 admin tinyint(1) unsigned 否 0 0默认,1只有超级管理员才能使用 enable tinyint(1) unsigned 否 1 是否启用,0否1是 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: acl_role

备注: 角色

索引:

名称 类型 属性 备注 主索引 id unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 角色id name varchar(31) 否 角色名称 permission_id varchar(2048) 是 角色具有的权限ID串 enable tinyint(1) 是 1 是否启用,0否1是 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: acl_user

备注: 管理员用户表

索引:

名称 类型 属性 备注 主索引 id unique uk_username username unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 用户id username varchar(31) 否 用户名 password varchar(255) 否 密码 nickname varchar(31) 是 昵称 avatar varchar(1023) 是 用户头像 mark varchar(255) 是 备注 sign varchar(255) 是 用户签名 roleId int(11) unsigned 否 角色id enable tinyint(1) unsigned 否 1 是否启用,0否1是 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: edu_chapter

备注: 课程章节表

索引:

名称 类型 属性 备注 主索引 id unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 章节ID course_id int(11) unsigned 否 课程ID title varchar(63) 否 章节名称 sort int(11) 是 0 显示排序 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: edu_chapter_tmp

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

索引:

名称 类型 属性 备注 主索引 id unique idx_id oid

字段:

名称 类型 空 默认值 属性 备注 id bigint(20) unsigned 否 0 主键 oid int(11) unsigned 是 0 原章节ID course_id int(11) unsigned 否 课程ID title varchar(63) 否 章节名称 sort int(11) 是 0 显示排序 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: edu_comment

备注: 课程评论表

索引:

名称 类型 属性 备注 主索引 id unique idx_course_id course_id idx_member_id member_id idx_member_id_course_id member_id, course_id idx_teacher_id teacher_id

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 评论ID course_id int(11) unsigned 否 课程id teacher_id int(11) unsigned 否 讲师id member_id int(11) unsigned 否 会员id content varchar(1023) 是 评论内容 mark double unsigned 是 5 评分(满分5.00) status tinyint(1) unsigned 是 评论状态 0审核中 1通过 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: edu_course

备注: 课程表

索引:

名称 类型 属性 备注 主索引 id unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 课程ID teacher_id int(11) unsigned 否 课程讲师ID subject_id int(11) unsigned 否 课程科目分类ID title varchar(63) 否 课程标题 price double(10,2) unsigned 是 0.00 课程销售价格,设置为0则可免费观看 lesson_num int(11) unsigned 否 0 总课时 cover varchar(1023) 否 utf8, utf8_general_ci 课程封面图片路径 description text 是 课程描述 buy_count int(11) unsigned 是 0 销售数量 view_count int(11) unsigned 是 0 浏览数量 sort int(11) 是 0 显示排序 enable tinyint(1) 否 1 上架下架,0下架 1上架 status tinyint(4) 是 0 课程状态,草稿 审核 发表 remarks varchar(511) 是 备注 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: edu_subject

备注: 课程科目分类表

索引:

名称 类型 属性 备注 主索引 id unique idx_parent_id parent_id

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 课程类别ID title varchar(15) 否 类别名称 parent_id int(11) unsigned 是 0 父ID sort int(11) unsigned 是 0 排序字段 enable tinyint(1) unsigned 否 1 是否启用,0否1是 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: edu_teacher

备注: 讲师表

索引:

名称 类型 属性 备注 主索引 id unique uk_mobile mobile unique uk_name name unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 讲师ID mobile char(11) 否 手机号 email varchar(127) 是 邮箱地址 password varchar(255) 否 密码 name varchar(63) 否 讲师姓名 intro varchar(1023) 否 讲师简介 avatar varchar(1023) 是 讲师头像 resume varchar(1023) 是 讲师简历链接 division tinyint(4) 是 80 分成比例,0-100 sort int(11) 是 0 排序 enable tinyint(1) unsigned 否 1 是否启用,0否1是 status tinyint(4) 是 0 讲师状态:审核通过;审核不通过;待审核 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: edu_video

备注: 课程视频

索引:

名称 类型 属性 备注 主索引 id unique idx_chapter_id chapter_id idx_course_id course_id

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 视频ID course_id int(11) unsigned 否 课程ID chapter_id int(11) unsigned 否 章节ID title varchar(63) 否 视频显示名称 video_id varchar(63) 否 云端视频资源 sort int(11) 是 0 排序字段 play_count int(11) unsigned 是 0 播放次数 free tinyint(1) unsigned 是 1 是否可以试听:0免费 1收费 duration varchar(15) 是 0 视频时长(秒) size bigint(20) unsigned 否 0 视频源文件大小(字节) update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: edu_video_tmp

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

索引:

名称 类型 属性 备注 主索引 id unique idx_chapter_id chapter_id idx_course_id course_id idx_id oid

字段:

名称 类型 空 默认值 属性 备注 id bigint(20) unsigned 否 0 主键(视频ID) oid int(11) unsigned 是 0 原视频ID course_id int(11) unsigned 否 课程ID chapter_id bigint(20) unsigned 否 章节ID title varchar(63) 否 视频显示名称 video_id varchar(63) 否 云端视频资源 sort int(11) 是 0 排序字段 play_count int(11) unsigned 是 0 播放次数 free tinyint(1) unsigned 是 1 是否可以试听:0免费 1收费 duration varchar(15) 是 0 视频时长(秒) size bigint(20) unsigned 否 0 视频源文件大小(字节) update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: hm_banner

备注: 首页banner表

索引:

名称 类型 属性 备注 主索引 id unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 ID title varchar(63) 是 标题 image_url varchar(1023) 否 图片地址 link_url varchar(1023) 是 链接地址 sort int(11) unsigned 否 0 排序 enable tinyint(1) unsigned 否 1 是否启用,0否1是 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: rel_course_member

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

索引:

名称 类型 属性 备注 主索引 id unique idx_course_id course_id unique idx_member_course member_id, course_id 联合索引(member_id, course_id) idx_member_id member_id unique

字段:

名称 类型 空 默认值 属性 备注 id int(10) unsigned 否 主键 course_id int(10) unsigned 否 0 课程Id member_id int(10) unsigned 否 0 学员Id update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: stat_daily

备注: 网站统计日数据

索引:

名称 类型 属性 备注 主索引 id unique statistics_day date

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 主键 date datetime 否 统计日期 visit_count int(11) unsigned 是 0 访客数量 register_count int(11) unsigned 是 0 注册人数 login_count int(11) unsigned 是 0 活跃人数 video_view_count int(11) unsigned 是 0 视频播放数 course_buy_count int(11) unsigned 是 0 购买数量 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: sys_message

备注: 消息表

索引:

名称 类型 属性 备注 主索引 id unique idx_to_id to_id

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 消息id from_id int(11) unsigned 否 0 发送者Id from_role tinyint(4) 否 0 发送者角色(管理员、讲师...) to_id int(11) unsigned 否 0 接受者id to_role tinyint(4) unsigned 否 0 接受者角色(教师、学员...) title varchar(127) 是 消息标题 content varchar(511) 否 消息内容 has_read tinyint(1) unsigned 是 0 是否已读(0未读 1已读) update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: t_order

备注: 订单表

索引:

名称 类型 属性 备注 主索引 id unique idx_course_id course_id idx_member_id member_id idx_member_id_course_id member_id, course_id ux_order_no order_no unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 order_no varchar(18) 否 订单号(datetime+unsigned int) course_id int(11) unsigned 否 课程id member_id int(11) unsigned 否 会员id total_fee double(10,2) 是 0.01 订单金额(分) pay_type tinyint(4) unsigned 是 0 支付类型(0 未支付 1:微信 2:支付宝) transaction_num varchar(31) 是 交易流水号 pay_time datetime 是 支付完成时间 update_time datetime 是 更新时间 create_time datetime 是 创建时间

表格: uctr_member

备注: 会员表

索引:

名称 类型 属性 备注 主索引 id unique uk_mobile mobile unique uk_nickname nickname unique

字段:

名称 类型 空 默认值 属性 备注 id int(11) unsigned 否 会员id mobile char(11) 否 手机号 email varchar(127) 是 邮箱地址 password varchar(255) 否 密码 nickname varchar(31) 是 昵称 sex tinyint(4) unsigned 是 0 性别 1 女,2 男 age tinyint(3) unsigned 是 0 年龄 avatar varchar(1023) 是 用户头像 sign varchar(127) 是 用户签名 enable tinyint(1) 是 1 是否启用,0否1是 update_time datetime 是 更新时间 create_time datetime 是 创建时间 实现效果

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

管理员端:

讲师端:

学员端:

总结与展望

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

展望:

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3