一,开发环境: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
@Override
public 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.jpg
fileName = 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;
}
}
@Override
public 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.mp4
String 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,3
String videoIds = StringUtils.join(videoIdList.toArray(), ",");
//向request设置视频id
request.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包中,