# edu2_demo **Repository Path**: zhou-hongyu831/edu2 ## Basic Information - **Project Name**: edu2_demo - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-27 - **Last Updated**: 2025-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 系统介绍 包括前台系统以及后台管理系统,基于 SpringCloud、SpringCloud Alibaba、MyBatis Plus实现。前台系统包括:用户登录、注册、名师列表、名师详情、课程列表、课程详细、视频在线播放等模块。后台管理系统包括:首页、权限管理、讲师分类、课程分类、课程管理、统计分析等模块。 ## 整体架构 ![pic/teacher.png](pic/teacher.png) ## 业务需求 1. **注册** - 负责人:苏心顺 - 业务流程: 1. 用户输入手机号和图形验证码。 2. 系统验证图形验证码的正确性。 3. 如果图形验证码验证通过,系统使用腾讯短信接口向用户发送短信验证码。 4. 用户输入收到的短信验证码。 5. 系统验证短信验证码的正确性。 6. 用户设置密码并确认密码。 7. 系统保存用户注册信息,并完成用户注册流程。 - 涉及到的技术点: - 为了防止别人一直刷我的短信验证码接口,所以要先要求对方输入正确的图形验证码, 确认是真人后才给对方发短信,提交表单到后端后用jwt生成token直接登陆成功 2. **登录** - 负责人:杨凯 - 业务流程: - 登录方式的多种选择(手机号+密码以及第三方登陆) - 涉及到的技术点: - 使用jwt生成token返回给前端,然后再写个拦截器,除登录,注册接口外,其余接口都需要进行token校验。静态资源配置,以确保头像上传后能正常回显! 3. **首页** - 负责人:杨凯,周宏宇 - 业务流程: - 轮播图:后台添加轮播图,前台展示轮播图 - 课程:最新课程列表,查看全部课程 - 讲师:名师大咖,查看全部讲师 - 涉及到的技术点: - 最新课程,可以考虑用redis的list做。查看全部课程用solr或者es做复杂查询,比如分页排序,全文检索。好评升序降序,销量升序降序之类的。 - 名师大咖,可以考虑用redis的zset做排行榜(好评数最多的讲师) 4. **课程详情** - 负责人:苏心顺 - 业务流程: - 前台首页点击热门课程,跳转到课程详情页面 - 涉及到的技术点: - 课程介绍:对该课程的介绍 - 课程大纲:前台用树型菜单的方式显示,前面几节课可以设置成免费试听,后面的付费后才能观看 - 课程评论:只有购买了此课程的才能评论 - 评论列表:查询分页所有评论 5. **视频播放** - 负责人:何俊 - 业务流程: - 涉及到的技术点: - 阿里云播放: - 上传:进入上传方法时,如果是视频。这通过阿里云接口,上传至阿里云存储。默认为加密。如果价格为0或已支付。则正常获取密钥。申请视频。播放的时候需要阿里云播放器。 - 前端:一个按钮,搭配阿里云播放器。从视频id获取凭证,拿着凭证和视频id通过阿里云提供的API接口就可以正常播放。水印和加密与否的设置通过阿里云控制台实现。 - 弹幕展示(选做):用户可以针对某个视频发布自己的弹幕 6. **购买流程** - 负责人:周宏宇,何俊 - 业务流程: - 生成订单: - 购买课程时需要先加入购物车 - 在购物车中选中要购买的课程核对订单信息 - 点击去支付生成支付宝的支付码——支付宝扫码支付生成订单(沙箱支付) - 显示成功支付和成功提交订单的页面 - 个人中心: - 我的资料(修改密码,修改默认头像,昵称等): - 正常增删改,头像涉及到静态资源和上传模块 - 前端:一个页面,展示所有信息和头像。提供修改功能 - 我的订单(待支付,已支付) - 我的评论 - 对自己发过的评论可以删除,修改 - 涉及到的技术点:支付宝扫码支付生成订单(沙箱支付) ## 数据库设计 表名: permission表(权限表) | Field | Type | Comment | | --- | --- | --- | | id | char(19) | 编号 | | pid | char(19) | 所属上级 | | name | varchar(20) | 名称 | | type | tinyint(4) | 类型(1:目录,2:菜单,3按钮) | | permission_value | varchar(50) | 权限值 | | path | varchar(100) | 访问路径 | | component | varchar(100) | 组件路径 | | icon | varchar(50) | 图标 | | status | tinyint(4) | 状态(0:禁止,1:正常) | | is_deleted | tinyint(3) UNSIGNED | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_acl_role(角色表) | Field | Type | Comment | | --- | --- | --- | | id | char(19) | 角色id | | role_name | varchar(20) | 角色名称 | | role_code | varchar(20) | 角色编码 | | remark | varchar(255) | 备注 | | is_deleted | tinyint(3) UNSIGNED | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_acl_user(会员表) | Field | Type | Comment | | --- | --- | --- | | id | char(19) | 会员id | | username | varchar(20) | 用户名 | | password | varchar(255) | 密码 | | nick_name | varchar(50) | 昵称 | | salt | varchar(255) | 用户头像 | | token | varchar(100) | 用户签名 | | is_deleted | tinyint(3) UNSIGNED | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | | phone | int(11) | 手机号 | 表名: edu_acl_user_role(用户角色关系表) | Field | Type | Comment | | --- | --- | --- | | id | char(19) | 主键id | | role_id | char(19) | 角色id | | user_id | char(19) | 用户id | | is_deleted | tinyint(3) UNSIGNED | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_banner(轮播图) | Field | Type | Comment | | --- | --- | --- | | id | char(19) | ID | | title | varchar(20) | 标题 | | image_url | varchar(500) | 图片地址 | | link_url | varchar(500) | 链接地址 | | sort | int(10) UNSIGNED | 排序 | | is_deleted | tinyint(3) UNSIGNED | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_chapter(章节表) | Field | Type | Comment | | --- | --- | --- | | id | char(19) | 章节ID | | course_id | char(19) | 课程ID | | title | varchar(50) | 章节名称 | | sort | int(10) UNSIGNED | 显示排序 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_comment表(评论) | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | 讲师ID | | course_id | varchar(19) | 课程id | | teacher_id | char(19) | 讲师id | | member_id | varchar(19) | 会员id | | nickname | varchar(50) | 会员昵称 | | avatar | varchar(255) | 会员头像 | | content | varchar(500) | 评论内容 | | is_deleted | tinyint(3) | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | | mark | int(255) | 单次评论分数1~3 | 表名: edu_course表(课程) | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | 课程ID | | teacher_id | char(19) | 课程讲师ID | | subject_id | char(19) | 课程专业ID-二级分类 | | subject_parent_id | char(19) | 课程专业父级ID-一级分类 | | title | varchar(50) | 课程标题 | | price | decimal(10, 2) | 课程销售价格,设置为0则可免费观看 | | lesson_num | int(10) | 总课时 | | cover | varchar(255) | 课程封面图片路径 | | buy_count | bigint(20) | 销售数量 | | view_count | bigint(20) | 浏览数量 | | version | bigint(20) | 乐观锁 | | status | varchar(10) | 课程状态 Draft未发布  Normal已发布 | | is_deleted | tinyint(4) | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | | type | varchar(255) | 课程类别 | | course_mark | double(255, 0) | 课程评价分数1~3差评中评好评 | 表名: edu_course_description表 (教育课程简介表) | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | 课程ID | | description | longtext | 课程简介 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | | PRIMARY KEY | (`id` ) USING BTREE | 主键 | | 列名 | 类型 | 说明 | |--------------|--------------|------------------------------| | id | char(19) | 会员id | | openid | varchar(128) | 微信openid | | email | varchar(255) | | | mobile | varchar(11) | 手机号 | | password | varchar(255) | 密码 | | nickname | varchar(50) | 昵称 | | sex | tinyint(3) | 性别 1 女,2 男 | | age | tinyint(3) | 年龄 | | avatar | varchar(255) | 用户头像 | | sign | varchar(100) | 用户签名 | | is_disabled | tinyint(1) | 是否禁用 1(true)已禁用, 0(false)未禁用 | | reason | longtext | | | is_deleted | tinyint(1) | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_member | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | 会员id | | openid | varchar(128) | 微信openid | | email | varchar(255) | | | mobile | varchar(11) | 手机号 | | password | varchar(255) | 密码 | | nickname | varchar(50) | 昵称 | | sex | tinyint(3) | 性别 1 女,2 男 | | age | tinyint(3) | 年龄 | | avatar | varchar(255) | 用户头像 | | sign | varchar(100) | 用户签名 | | is_disabled | tinyint(1) | 是否禁用 1(true)已禁用, 0(false)未禁用 | | reason | longtext | | | is_deleted | tinyint(1) | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_order | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | | | order_no | varchar(20) | 订单号 | | course_id | varchar(19) | 课程id | | course_title | varchar(100) | 课程名称 | | course_cover | varchar(255) | 课程封面 | | teacher_name | varchar(20) | 讲师名称 | | member_id | varchar(19) | 会员id | | nickname | varchar(50) | 会员昵称 | | mobile | varchar(11) | 会员手机 | | total_fee | decimal(10, 2) | 订单金额(分) | | pay_type | tinyint(4) | 支付类型(1:微信 2:支付宝) | | status | tinyint(4) | 订单状态(0:未支付 1:已支付) | | is_deleted | tinyint(3) | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_pay_log | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | | | order_no | varchar(20) | 订单号 | | pay_time | datetime(0) | 支付完成时间 | | total_fee | decimal(10, 2) | 支付金额(分) | | transaction_id | varchar(30) | 交易流水号 | | trade_state | char(20) | 交易状态 | | pay_type | tinyint(4) | 支付类型(1:微信 2:支付宝) | | attr | text | 其他属性 | | is_deleted | tinyint(3) UNSIGNED | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_subject | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | 课程类别ID | | title | varchar(10) | 类别名称 | | parent_id | char(19) | 父ID | | sort | int(10) UNSIGNED | 排序字段 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_teacher | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | 讲师ID | | name | varchar(20) | 讲师姓名 | | intro | varchar(500) | 讲师简介 | | career | varchar(500) | 讲师资历,一句话说明讲师 | | level | int(10) UNSIGNED | 头衔 1高级讲师 2首席讲师 | | avatar | varchar(255) | 讲师头像 | | sort | int(10) UNSIGNED | 排序 | | is_deleted | tinyint(3) UNSIGNED | 逻辑删除 1(true)已删除, 0(false)未删除 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | 表名: edu_video | 列名 | 类型 | 说明 | | --- | --- | --- | | id | char(19) | 视频ID | | course_id | char(19) | 课程ID | | chapter_id | char(19) | 章节ID | | title | varchar(50) | 节点名称 | | video_source_id | varchar(100) | 云端视频资源 | | video_original_name | varchar(100) | 原始文件名称 | | sort | int(10) UNSIGNED | 排序字段 | | play_count | bigint(20) UNSIGNED | 播放次数 | | is_free | tinyint(3) UNSIGNED | 是否可以试听:0收费 1免费 | | duration | float | 视频时长(秒) | | status | varchar(20) | Empty未上传 Transcoding转码中 Normal正常 | | size | bigint(20) UNSIGNED | 视频源文件大小(字节) | | version | bigint(20) UNSIGNED | 乐观锁 | | edu_create | datetime(0) | 创建时间 | | edu_modified | datetime(0) | 更新时间 | ## 预计开发周期:三周