一,开发环境:jdk1.8+idea2016+Tomcat7.0+Chrom最新版+MySQL5.7
二,相关框架:SpringBoot+SSM+Maven 等技术

负责模块 ,以及相关技术点

1.前台登录:用户需要登录之后,进行验证登录后操作。
2. 讲师管理:管理员可以对讲师进行操作,讲师可以更改自己的信息,包括图片头像等等。
3.课程管理:讲师可以上传自己的自己的课程,并且管理自己的课程,课程进行分级的分类讲 师上传自己的课程使用了easyExcel的接口,客户可以进行视频的观看,视频观看采用了阿里云的视频点播的技术。
讲师管理:讲师可以将自己的头像进行上传,将上传的数据储存到阿里云的oss控制台上,

阿里云oss

用来保存讲师的头像的图片,当在添加讲师以及修改讲师的时候,可以使用,将上传的图片保存到了阿里云oss中。
上传头像这块:由于有些前端框架返回的file的名字都是一样的,我们需要在文件名字前面写上一个uuid(随机值)用来区分上传不一样的头像图片。

public class OssServiceImpl implements OssService {//上传头像到oss@Overridepublic String uploadFileAvatar(MultipartFile file) {// 工具类获取值String endpoint = ConstantPropertiesUtils.END_POIND;String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;String bucketName = ConstantPropertiesUtils.BUCKET_NAME;try {// 创建OSS实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//获取上传文件输入流InputStream inputStream = file.getInputStream();//获取文件名称String fileName = file.getOriginalFilename();//1 在文件名称里面添加随机唯一的值String uuid = UUID.randomUUID().toString().replaceAll("-","");// yuy76t5rew01.jpgfileName = uuid+fileName;//2 把文件按照日期进行分类//获取当前日期String datePath = new DateTime().toString("yyyy/MM/dd");//拼接fileName = datePath+"/"+fileName;//调用oss方法实现上传//第一个参数  Bucket名称//第二个参数  上传到oss文件路径和文件名称   aa/bb/1.jpg//第三个参数  上传文件输入流ossClient.putObject(bucketName,fileName , inputStream);// 关闭OSSClient。ossClient.shutdown();//把上传之后文件路径返回//需要把上传到阿里云oss路径手动拼接出来String url = "https://"+bucketName+"."+endpoint+"/"+fileName;return url;}catch(Exception e) {e.printStackTrace();return null;}}
}

easyExcel

管理员通过上传Excel文件将课程进行上传。上传的文件就自动存入数据库当中了。将数据文件读出来时候,文件分为了一级课程名称与二级课程名称,一级课程名称与二级课程名称共同存入一个数据库中,读取数据的时候通过判断属性名称进行更改是否为一个一级课程与二级课程,并且创建了vo的包用来储存前端页面的元素,里面使用了beancopyProperties的方法将属性进行复制,最后创建一级课程与二级课程的关系。
注意:easyexcel使用的是传入的文件是mutifile传入的文件。
在使用easy的时候我们创建了一个suject类进行设置值,分别是Excel对应的第一行数据与第二行数据使用了注解 @ExcelProperty(index = 0)
index为数据的第几行,

import com.alibaba.excel.EasyExcel;import java.util.ArrayList;
import java.util.List;public class TestEasyExcel {public static void main(String[] args) {//实现excel写的操作//1 设置写入文件夹地址和excel文件名称
//        String filename = "F:\\write.xlsx";//2 调用easyexcel里面的方法实现写操作//write方法两个参数:第一个参数文件路径名称,第二个参数实体类class
//        EasyExcel.write(filename,DemoData.class).sheet("学生列表").doWrite(getData());//实现excel读操作String filename = "F:\\write.xlsx";EasyExcel.read(filename,DemoData.class,new ExcelListener()).sheet().doRead();}//创建方法返回list集合private static List<DemoData> getData() {List<DemoData> list = new ArrayList<>();for (int i = 0; i < 10; i++) {DemoData data = new DemoData();data.setSno(i);data.setSname("lucy"+i);list.add(data);}return list;}
}@Overridepublic void saveSubject(MultipartFile file,EduSubjectService subjectService) {try {//文件输入流InputStream in = file.getInputStream();//调用方法进行读取EasyExcel.read(in, SubjectData.class,new SubjectExcelListener(subjectService)).sheet().doRead();}catch(Exception e){e.printStackTrace();}}

阿里云vod

视频播放用了阿里云的视频点播的功能
首先在阿里云的控制台开通了阿里云是点播服务服务,在项目的视频表中所储存的元素是视频的id,因为如何视频点播开通了加密服务则无法通过视频的地址进行播放,但如果存在的是视频的id则可以通过视频的id获取视频的凭证进行播放,
必须获取阿里云的

 @Value("${aliyun.vod.file.keyid}")private String keyid;@Value("${aliyun.vod.file.keysecret}")private String keysecret;
 public String uploadVideoAly(MultipartFile file) {try {//accessKeyId, accessKeySecret//fileName:上传文件原始名称// 01.03.09.mp4String fileName = file.getOriginalFilename();//title:上传之后显示名称String title = fileName.substring(0, fileName.lastIndexOf("."));//inputStream:上传文件输入流InputStream inputStream = file.getInputStream();UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);UploadVideoImpl uploader = new UploadVideoImpl();UploadStreamResponse response = uploader.uploadStream(request);String videoId = null;if (response.isSuccess()) {videoId = response.getVideoId();} else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因videoId = response.getVideoId();}return videoId;}catch(Exception e) {e.printStackTrace();return null;}}

删除阿里云视频的代码

 public void removeMoreAlyVideo(List videoIdList) {try {//初始化对象DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);//创建删除视频request对象DeleteVideoRequest request = new DeleteVideoRequest();//videoIdList值转换成 1,2,3String videoIds = StringUtils.join(videoIdList.toArray(), ",");//向request设置视频idrequest.setVideoIds(videoIds);//调用初始化对象的方法实现删除client.getAcsResponse(request);}catch(Exception e) {e.printStackTrace();throw new Exception(20001,"删除视频失败");}}

删除视频的时候可以输入一个带有逗号的字符串,用逗号分隔的id,
//向request设置视频id
request.setVideoIds(videoIds);
//调用初始化对象的方法实现删除
client.getAcsResponse(request)

课程管理:
课程的上传:
分为三个步骤
1.先输入课程名称,课程图片,课程讲师,课程分类
2.上传课程的章节与小结,上传小结的时候可以上传视频上传视频使用了阿里云vod,
3.确认课程的信息,写了一vo类用于回显课程的信息。
课程的修改:
课程的删除:

项目中的问题:由于多个模块的组合,controller层无法访问,解决方法在controller层上面加入@CrossOrigin进行跨域
idea在加载的时候不会默认加载mapper。xml文件
解决方法:将mapper.xml拉入target包中,

Springboot项目:爱上学网课平台总结相关推荐

  1. 玩玩短视频平台和网课平台开发1——腾讯云对象储存COS的初步配置

    近一两年来,抖音.快手等以短视频为手段的社交工具红遍了大江南北,腾讯也推出了"微视"平台,希望分一杯羹:传统的直播平台如:斗鱼直播.虎牙直播就更不用说了,甚至涌现了许多主打&quo ...

  2. 最好的十个英语网课平台,这年头在网上学英语靠谱吗?

    最好的十个英语网课平台,对比下来你会选择哪家?关于少儿英语的学习有些家长都比较迷茫,受过高等教育的父母甚至英语的重要性,知道英语学习要趁早,恨不得胎教时就灌输英语,但仍然存在很多父母对少儿是否需要学习 ...

  3. 前一段时间比较火的刷网课平台源码,带数据库和教程

    前一段时间比较火的刷网课平台源码,带数据库和教程. 好在疫情已经结束了,希望今后世上再无网课. 这个代码免费提供给大家学习开发用吧,作为一个php的入门学习案例用用还可以. 使用办法 网站根目录解压 ...

  4. 最详细新版网课联盟27刷网课平台源码+安装教程+最新模板+下载地址

    新版网课联盟27刷网课平台源码+安装教程+最新模板 第一步:准备一个服务器+域名 没有域名暂时使用服务器网址也可以 第二步:上传文件 上传文件到wwwroot上面,进行解压 第三步:进行防伪静态设置: ...

  5. 阿里云POLARDB如何帮助猿辅导打造“孩子喜欢老师好”的网课平台?

    2019独角兽企业重金招聘Python工程师标准>>> 海量的题库.音视频答题资料.用户数据以及日志,对猿辅导后台数据存储和处理能力都提出了严峻的要求.而由于教育辅导行业的业务特点, ...

  6. 阿里云POLARDB如何帮助猿辅导打造“孩子喜欢老师好”的网课平台?...

    海量的题库.音视频答题资料.用户数据以及日志,对猿辅导后台数据存储和处理能力都提出了严峻的要求.而由于教育辅导行业的业务特点,猿辅导也面临着业务峰值对于数据库能力的巨大挑战.本文就为大家介绍阿里云PO ...

  7. 插画网课平台哪个靠谱(最新插画网课排行)

    靠谱的插画培训机构有哪些,5个靠谱的插画网课推荐!给大家梳理了国内5家专业的插画师培训班,最新5大插画班排行榜,各有优势和特色! 一:插画线上培训机构排名 1.轻微课(五颗星) 主打课程有日系插画.游 ...

  8. 【网课平台】Day16.项目优化:压测、加缓存优化与分布式锁

    文章目录 一.压力测试 1.优化需求 2.性能指标 3.安装Jmeter 4.压力测试 5.优化日志 二.缓存优化 1.给接口加Redis缓存 2.缓存穿透 3.解决缓存穿透 4.缓存雪崩 5.缓存击 ...

  9. 【网课平台】Day3.网关与分布式文件系统

    文章目录 一 .媒资模块环境搭建 1. 网关gateway 2.Nacos 3.搭建gateway 二.分布式文件系统 2.1 文件系统 2.2 分布式文件系统 2.3 MinIO 四.上传图片 4. ...

最新文章

  1. iOS开发网络篇—GET请求和POST请求
  2. 全国大学生智能车竞赛赛场准备好,就等同学们入驻展示
  3. 操作系统实现(一):从Bootloader到ELF内核
  4. C++中的指针特征操作符重载
  5. 内存的字符与打印出来的字符集的区别
  6. jquery uploadify 多文件上传插件 使用经验
  7. sql server中的 SET NOCOUNT ON 的含义
  8. java环境变量的配置_Java的下载及环境变量的配置
  9. Django contenttypes组件
  10. 三思笔记专区,即将闪亮登场
  11. call stack详解
  12. MATLAB数字水印处理技术的实现
  13. [Linux用户空间编程-5]:用IPTable实现NAT功能
  14. 如何自定义python语法.
  15. Java使用 PDFBox 从 pdf 中提取图像
  16. Glide加载圆形图片并且带边框
  17. 十二 iOS之 折叠图片
  18. python cv2读取图片后进行通道变换以及PIL阅读图像的通道转换
  19. app推广必备功能:分享到,更多应用,创建快捷方式
  20. u盘变成RAW格式怎么修复?好用的教程分享

热门文章

  1. excel 打印区域
  2. 《Learning from Synthetic Data for Crowd Counting in the Wild》论文笔记
  3. Android进阶-设计模式
  4. Python爬虫:通过爬取CSDN博客信息,学习lxml库与XPath语法
  5. 索引越位:String index out of range: 1
  6. 如何在excel图表中显示上标下标
  7. test block.html文件不存在,我的世界testforblocks原版命令方块指令解读
  8. Nodejs爬虫以及新闻搜索网站的构建
  9. git-代码撤销、回滚到任意版本(git回滚命令reset、revert的区别)
  10. 51.深度解密五十一:如何精准选择网络创业项目和营销推广平台