From 92027c9960c8e4e8d84db11c2c422254a5b7d38c Mon Sep 17 00:00:00 2001
From: Administrator <2863138610@qq.com>
Date: 星期二, 06 十二月 2022 16:00:03 +0800
Subject: [PATCH] 华为云obs上传
---
src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java | 22 +-
src/main/java/com/qxueyou/scc/sys/utils/Image2Binary.java | 128 ++++++++++++++
src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java | 170 +++++++++---------
src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java | 2
src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java | 2
src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java | 26 +-
src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java | 41 ++++
src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java | 19 +-
src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java | 6
src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java | 4
src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java | 18 +
src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java | 41 +++-
src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java | 2
src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java | 14
src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java | 4
src/main/java/com/qxueyou/scc/media/model/MediaVideo.java | 2
src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java | 8
17 files changed, 348 insertions(+), 161 deletions(-)
diff --git a/src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java b/src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java
index 536751c..f2162a9 100644
--- a/src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java
+++ b/src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java
@@ -13,98 +13,98 @@
public interface IClassLectureService {
/**
- * 新增章节文件夹
+ * 鏂板绔犺妭鏂囦欢澶�
*
* @param parentChapterId
- * 父级章节文件夹id
+ * 鐖剁骇绔犺妭鏂囦欢澶筰d
* @param name
- * 文件夹名称
- * @return 上传结果:{"success":true,msg:"success",attrs:{"chapterId","90023afwe32300fee23"}},若成功,则返回ChapterId
+ * 鏂囦欢澶瑰悕绉�
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{"chapterId","90023afwe32300fee23"}},鑻ユ垚鍔燂紝鍒欒繑鍥濩hapterId
*/
Result addChapter(String parentChapterId, String name);
/**
- * 返回下级章节文件夹列表,如果
+ * 杩斿洖涓嬬骇绔犺妭鏂囦欢澶瑰垪琛�,濡傛灉
*
* @param classId
- * 班级id
+ * 鐝骇id
* @param parentChapterId
- * 父级章节文件夹id
- * @return 返回章节列表
+ * 鐖剁骇绔犺妭鏂囦欢澶筰d
+ * @return 杩斿洖绔犺妭鍒楄〃
*/
List<SubjectProgressTreeV> getChapterTreeVList(String classId, String parentChapterId);
/**
- * 课件列表搜索
+ * 璇句欢鍒楄〃鎼滅储
*
* @param chapterId
- * 章节id
+ * 绔犺妭id
* @param keyword
- * 关键字
+ * 鍏抽敭瀛�
* @param pageSize
- * 页码
+ * 椤电爜
* @param pageNum
- * 每页显示数据条数
+ * 姣忛〉鏄剧ず鏁版嵁鏉℃暟
* @param type
- * 类型
+ * 绫诲瀷
* @return
*/
List<MyLectureV> listLectureV(String learnerId, String chapterId, String keyword, Integer pageSize, Integer pageNum,
String type);
/**
- * 修改章节文件夹
+ * 淇敼绔犺妭鏂囦欢澶�
*
* @param chapterId
- * 文件夹id
+ * 鏂囦欢澶筰d
* @param name
- * 名称
- * @return 上传结果:{"success":true,msg:"success",attrs:{}}
+ * 鍚嶇О
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}}
*/
Result updateChapter(String chapterId, String name);
/**
- * 删除章节文件夹
+ * 鍒犻櫎绔犺妭鏂囦欢澶�
*
* @param chapterIds
- * 章节文件夹id数组
- * @return 上传结果:{"success":true,msg:"success",attrs:{}}
+ * 绔犺妭鏂囦欢澶筰d鏁扮粍
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}}
*/
Result deleteChapter(String[] chapterIds);
/**
- * 新增课件
+ * 鏂板璇句欢
*
* @param chapterId
- * 章节id
+ * 绔犺妭id
* @param resId
- * 资源id
- * @return 上传结果:{"success":true,msg:"success",attrs:{"chapterId","90023afwe32300fee23"}},若成功,则返回chapterId
+ * 璧勬簮id
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{"chapterId","90023afwe32300fee23"}},鑻ユ垚鍔燂紝鍒欒繑鍥瀋hapterId
*/
Result addClsLecture(String chapterId, String resId);
/**
- * 修改课件
+ * 淇敼璇句欢
*
* @param lectureId
- * 课件id
+ * 璇句欢id
* @param resId
- * 资源id
- * @return 上传结果:{"success":true,msg:"success",attrs:{}}
+ * 璧勬簮id
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}}
*/
Result updateLecture(String lectureId, String resId);
/**
- * 删除课件
+ * 鍒犻櫎璇句欢
*
* @param lectureIds
- * 课件id数组
- * @return 上传结果:{"success":true,msg:"success",attrs:{}}
+ * 璇句欢id鏁扮粍
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}}
*/
Result deleteLecture(String[] lectureIds);
/**
- * 课件学习进度提交
+ * 璇句欢瀛︿範杩涘害鎻愪氦
*
* @param clsLectureId
* @param from
@@ -114,76 +114,76 @@
Result doStudy(String clsLectureId, Double from, Double to);
/**
- * 复制课件
+ * 澶嶅埗璇句欢
*
* @param lectureId
- * 课件id
+ * 璇句欢id
* @param destChapterId
- * 目标章节id
+ * 鐩爣绔犺妭id
* @param name
- * 课件名称
- * @return 上传结果:{"success":true,msg:"success",attrs:{}}
+ * 璇句欢鍚嶇О
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}}
*/
Result doCopyLecture(String lectureId, String destChapterId, String name);
/**
- * 移动课件
+ * 绉诲姩璇句欢
*
* @param lectureId
- * 课件id
+ * 璇句欢id
* @param destChapterId
- * 目标章节id
+ * 鐩爣绔犺妭id
* @param name
- * 课件名称
- * @return 上传结果:{"success":true,msg:"success",attrs:{}}
+ * 璇句欢鍚嶇О
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}}
*/
Result doMoveLecture(String lectureId, String destChapterId, String name);
/**
- * 课件列表搜索
+ * 璇句欢鍒楄〃鎼滅储
*
* @param chapterId
- * 章节id
+ * 绔犺妭id
* @param keyword
- * 关键字
+ * 鍏抽敭瀛�
* @param pageNo
- * 页码
+ * 椤电爜
* @param pageNum
- * 每页显示数据条数
+ * 姣忛〉鏄剧ず鏁版嵁鏉℃暟
* @param type
- * 类型
+ * 绫诲瀷
* @return
*/
List<ClsSubjectLecture> listLecture(String chapterId, String keyword, Integer pageNo, Integer pageNum, String type,
String classId);
/**
- * 课件列表
+ * 璇句欢鍒楄〃
*
* @param classId
- * 章节id
+ * 绔犺妭id
* @return
*/
List<ClsSubjectLecture> listLecture(String classId);
/**
- * 读取课件真实文件访问路径
+ * 璇诲彇璇句欢鐪熷疄鏂囦欢璁块棶璺緞
*
* @param lectureId
- * 课件id数组
+ * 璇句欢id鏁扮粍
* @param attribute
- * 课件附加属性
- * @return 上传结果:{"success":true,msg:"success",attrs:{"type":"",path:""}}
+ * 璇句欢闄勫姞灞炴��
+ * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{"type":"",path:""}}
*/
Result readLectureAccessPath(String lectureId, String attribute);
/**
- * 通过id读取班级的课件对象
+ * 閫氳繃id璇诲彇鐝骇鐨勮浠跺璞�
*/
ClsSubjectLecture readClsLecture(String id);
/**
- * 读取课件目录
+ * 璇诲彇璇句欢鐩綍
*
* @param chapterId
* @return
@@ -191,58 +191,58 @@
ClsSubjectChapter readChapter(String chapterId);
/**
- * 课件列表大小
+ * 璇句欢鍒楄〃澶у皬
*
* @param chapterId
- * 章节id
+ * 绔犺妭id
* @param keyword
- * 关键字
+ * 鍏抽敭瀛�
* @param type
- * 类型
+ * 绫诲瀷
* @return
*/
int listLectureCount(String chapterId, String keyword, String type);
/**
- * 返回下级章节文件夹列表
+ * 杩斿洖涓嬬骇绔犺妭鏂囦欢澶瑰垪琛�
*
* @param classId
- * 班级id
+ * 鐝骇id
* @param classId
- * 课程id
+ * 璇剧▼id
* @param parentChapterId
- * 父级章节文件夹id
- * @return 返回章节列表
+ * 鐖剁骇绔犺妭鏂囦欢澶筰d
+ * @return 杩斿洖绔犺妭鍒楄〃
*/
List<ClsSubjectChapter> getListChapter(String classId,String subjectId, String parentChapterId);
/**
- * 返回下级章节文件夹列表,如果
+ * 杩斿洖涓嬬骇绔犺妭鏂囦欢澶瑰垪琛�,濡傛灉
*
* @param classId
- * 班级id
+ * 鐝骇id
* @param subjectId
- * 课程id
+ * 璇剧▼id
* @param parentChapterId
- * 父级章节文件夹id
- * @return 返回章节列表
+ * 鐖剁骇绔犺妭鏂囦欢澶筰d
+ * @return 杩斿洖绔犺妭鍒楄〃
*/
List<ClsSubjectChapter> doGetListChapter(String classId,String subjectId, String parentChapterId);
/**
- * 把课程上的课件拷贝到班级课程
+ * 鎶婅绋嬩笂鐨勮浠舵嫹璐濆埌鐝骇璇剧▼
*
* @param subjectId
- * 课程id
+ * 璇剧▼id
* @param classId
- * 班级id
+ * 鐝骇id
* @return
*/
Result doCopyLecturesToClass(String origSubjectId, String subjectId, String classId);
/**
- * 清理所有的班级课件
+ * 娓呯悊鎵�鏈夌殑鐝骇璇句欢
* @param subjectId
* @param classId
* @return
@@ -250,7 +250,7 @@
Result doClearLecturesToClass(String subjectId, String classId);
/**
- * 根据课程查询课件
+ * 鏍规嵁璇剧▼鏌ヨ璇句欢
*
* @param subjectId
* @param type
@@ -260,7 +260,7 @@
List<Map<String, Object>> listLectureBySubject(String subjectId, String type, String classId);
/**
- * 查询班级内的课件和课程
+ * 鏌ヨ鐝骇鍐呯殑璇句欢鍜岃绋�
*
* @param classId
* @return
@@ -268,7 +268,7 @@
Result listSubjectLecture(String classId, String sort, Pager pager);
/**
- * 获取课程下的课件
+ * 鑾峰彇璇剧▼涓嬬殑璇句欢
*
* @param subjectId
* @param type
@@ -277,7 +277,7 @@
public Map<String,Object> listLectureBySubjectOrderCreateTime(String subjectId, String classId, String sort, Pager pager);
/**
- * 学员端获取课程下课件
+ * 瀛﹀憳绔幏鍙栬绋嬩笅璇句欢
*
* @param subjectId
* @param type
@@ -286,7 +286,7 @@
public List<Map<String, Object>> listStuLectureBySubject(String subjectId, String classId);
/**
- * 学员端获取课程下课件数量
+ * 瀛﹀憳绔幏鍙栬绋嬩笅璇句欢鏁伴噺
*
* @param subjectId
* @param type
@@ -295,7 +295,7 @@
public long stuLectureCountBySubject(String subjectId, String classId);
/**
- * 获取章节下的课件
+ * 鑾峰彇绔犺妭涓嬬殑璇句欢
*
* @param chapterLst
* @param lectures
@@ -304,7 +304,7 @@
public List<ClsSubjectChapter> getChapterLectures(List<ClsSubjectChapter> chapterLst, List<Map<String, Object>> lectures);
/**
- * 获取文档页码
+ * 鑾峰彇鏂囨。椤电爜
*
* @param resItemId
* @return
@@ -312,7 +312,7 @@
public int readDocPageCount(String resItemId);
/**
- * 公开课课件
+ * 鍏紑璇捐浠�
*
* @param subjectId
* @param classId
@@ -323,7 +323,7 @@
public Map<String,Object> listOpenLectureBySubjectOrderCreateTime(String subjectId, String sort, Pager pager);
/**
- * 课件按目录分类
+ * 璇句欢鎸夌洰褰曞垎绫�
*
* @param classId
* @param subjectId
@@ -331,4 +331,4 @@
* @return
*/
public Result coursewareChapterList(String classId,String subjectId, String type);
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java
index 9ca8835..2eb8b0a 100644
--- a/src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java
+++ b/src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java
@@ -5,18 +5,18 @@
public interface IDetailProgressService {
/**
- * 新增学习记录
- * @param type 进度类型
- * @param targetId 学习目标id
- * @param learnerId 学习者id
- * @param start 学习开始位置
- * @param end 学习结束位置
+ * 鏂板瀛︿範璁板綍
+ * @param type 杩涘害绫诲瀷
+ * @param targetId 瀛︿範鐩爣id
+ * @param learnerId 瀛︿範鑰卛d
+ * @param start 瀛︿範寮�濮嬩綅缃�
+ * @param end 瀛︿範缁撴潫浣嶇疆
* @return
*/
Result addProgress(String targetId,String learnerId,int start,int end);
/**
- * 返回进度类型
+ * 杩斿洖杩涘害绫诲瀷
* @return
*/
String getType();
diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java
index fca52f1..4784151 100644
--- a/src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java
+++ b/src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java
@@ -9,43 +9,43 @@
public interface IProgressService {
/**
- * 查询学习进度
+ * 鏌ヨ瀛︿範杩涘害
*
* @return
*/
List<Progress> query(String type, String learnerId, List<String> targetId);
/**
- * 查询学习进度
+ * 鏌ヨ瀛︿範杩涘害
*
* @return
*/
List<Progress> query(String type, List<String> learnerId, String targetId);
/**
- * 查询学习记录
+ * 鏌ヨ瀛︿範璁板綍
*
* @param type
- * 进度类型
+ * 杩涘害绫诲瀷
* @param targetId
- * 学习目标id
+ * 瀛︿範鐩爣id
* @param learnerId
- * 学习者id
+ * 瀛︿範鑰卛d
* @return
*/
Progress query(String type, String targetId, String learnerId);
/**
- * 新增学习记录
+ * 鏂板瀛︿範璁板綍
*
* @param type
- * 进度类型
+ * 杩涘害绫诲瀷
* @param targetId
- * 学习目标id
+ * 瀛︿範鐩爣id
* @param start
- * 学习开始位置
+ * 瀛︿範寮�濮嬩綅缃�
* @param end
- * 学习结束位置
+ * 瀛︿範缁撴潫浣嶇疆
* @return
*/
Result addProgress(String type, String targetId, int start, int end, String userId);
diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java
index 3089db1..eb6ecc7 100644
--- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java
+++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java
@@ -40,7 +40,7 @@
ProgressDAO dao;
/**
- * 各类型课件进度服务实现
+ * 鍚勭被鍨嬭浠惰繘搴︽湇鍔″疄鐜�
*/
private Map<String, IDetailProgressService> resItemServiceMap = new HashMap<String, IDetailProgressService>(6);
@@ -119,7 +119,7 @@
save(progress);
} catch (Exception e) {
- log.error("保存异常", e);
+ log.error("淇濆瓨寮傚父", e);
return;
}
diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java
index 5714161..5cd277a 100644
--- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java
+++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java
@@ -24,7 +24,7 @@
IClassLectureService lectureService;
/**
- * 各类型课件进度服务实现
+ * 鍚勭被鍨嬭浠惰繘搴︽湇鍔″疄鐜�
*/
private Map<String, IDetailProgressService> resItemServiceMap = new HashMap<String, IDetailProgressService>(6);
diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java
index cc53f58..81d8722 100644
--- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java
+++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java
@@ -57,7 +57,7 @@
updateProgress(targetId, p, sum);
}
- //保存学习记录明细
+ //淇濆瓨瀛︿範璁板綍鏄庣粏
this.saveProgressDetail(start, end, targetId, p.getProgressId(), learnerId);
classLectureService.updateLecturetime(targetId);
@@ -77,7 +77,7 @@
}
/**
- * 保存学习记录明细
+ * 淇濆瓨瀛︿範璁板綍鏄庣粏
*
* @param start
* @param end
@@ -104,7 +104,7 @@
}
/**
- * 获取进度百分比
+ * 鑾峰彇杩涘害鐧惧垎姣�
*
* @param targetId
* @param sum
diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java
index bce7df5..6d775cd 100644
--- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java
+++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java
@@ -25,7 +25,7 @@
}
/**
- * 获取进度百分比
+ * 鑾峰彇杩涘害鐧惧垎姣�
*
* @param targetId
* @param sum
diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java
index 2eb8d2d..66ba3ff 100644
--- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java
+++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java
@@ -25,7 +25,7 @@
}
/**
- * 获取进度百分比
+ * 鑾峰彇杩涘害鐧惧垎姣�
*
* @param targetId
* @param sum
diff --git a/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java b/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java
index 6bf662a..861f990 100644
--- a/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java
+++ b/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java
@@ -1,5 +1,5 @@
package com.qxueyou.scc.controller;
-
+
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ArrayUtil;
@@ -7,12 +7,14 @@
//import cn.hutool.core.io.FileUtil;
import com.obs.services.exception.ObsException;
+import com.obs.services.model.PutObjectResult;
+import com.qxueyou.scc.base.model.FileMeta;
import com.qxueyou.scc.base.model.Result;
import com.qxueyou.scc.teach.res.service.HweiYunOBSService;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
-
+
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -21,7 +23,7 @@
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.List;
-
+
/**
* @ClassName: ObsController
* @Description: OBS鏈嶅姟鍣–ontroller
@@ -30,12 +32,12 @@
* @Version: 1.0
*/
@RestController
-@RequestMapping({ "file" })// @RequestMapping("/file")
+@RequestMapping("/file")// @RequestMapping("/file")
public class HweiYunOBSController {
-
+
@Resource
private HweiYunOBSService hweiYunOBSService;
-
+
@RequestMapping(value = "upload", method = RequestMethod.POST)
public Result save(@RequestParam(value = "file", required = false) MultipartFile file) {
@@ -45,11 +47,11 @@
// if (FileUtil.isEmpty(file)) {
// return new Result(false,"鏂囦欢涓虹┖");
// }
- final String test = hweiYunOBSService.fileUpload(file, file.getOriginalFilename());
+ final List<FileMeta> test = hweiYunOBSService.fileUpload(file, file.getOriginalFilename());
// return ResponseVO.ok("鎵ц鎴愬姛",test);
return new Result(true,"success",test);
}
-
+
@RequestMapping(value = "delete", method = RequestMethod.POST)
public Result delete(@RequestParam(value = "fileName", required = false) String fileName) {
if (StrUtil.isEmpty(fileName)) {
@@ -58,7 +60,7 @@
final boolean delete = hweiYunOBSService.delete(fileName);
return delete?new Result(true,"success"):new Result(false,"鍒犻櫎澶辫触");
}
-
+
@RequestMapping(value = "deletes", method = RequestMethod.POST)
//@RequestParam 鑾峰彇List锛屾暟缁勫垯涓嶉渶瑕�
public Result delete(@RequestParam("fileNames") List<String> fileNames) {
@@ -68,8 +70,8 @@
final boolean delete = hweiYunOBSService.delete(fileNames);
return delete?new Result(true,"success"):new Result(false,"鍒犻櫎澶辫触");
}
-
-
+
+
@RequestMapping(value = "download", method = RequestMethod.POST)
public Result download(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "fileName", required = false) String fileName) {
if (StrUtil.isEmpty(fileName)) {
@@ -104,4 +106,4 @@
return new Result(false);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/qxueyou/scc/media/model/MediaVideo.java b/src/main/java/com/qxueyou/scc/media/model/MediaVideo.java
index 8d6d24b..f7616ef 100644
--- a/src/main/java/com/qxueyou/scc/media/model/MediaVideo.java
+++ b/src/main/java/com/qxueyou/scc/media/model/MediaVideo.java
@@ -764,4 +764,4 @@
public void setM3u8KeyPath(String m3u8KeyPath) {
this.m3u8KeyPath = m3u8KeyPath;
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java b/src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java
index 114a903..5dc8d93 100644
--- a/src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java
+++ b/src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java
@@ -46,7 +46,9 @@
public static Float getMp3Duration(String filePath){
try {
- File mp3File = new File(filePath);
+ File file = File.createTempFile("temp", ".mp3"); //鍒涘缓涓存椂鏂囦欢
+ Image2Binary.toBDFile(filePath,file.getCanonicalPath());
+ File mp3File = new File(file.getPath());
MP3File f = (MP3File) AudioFileIO.read(mp3File);
MP3AudioHeader audioHeader = (MP3AudioHeader)f.getAudioHeader();
return Float.parseFloat(audioHeader.getTrackLength()+"");
diff --git a/src/main/java/com/qxueyou/scc/sys/utils/Image2Binary.java b/src/main/java/com/qxueyou/scc/sys/utils/Image2Binary.java
new file mode 100644
index 0000000..dcc51a4
--- /dev/null
+++ b/src/main/java/com/qxueyou/scc/sys/utils/Image2Binary.java
@@ -0,0 +1,128 @@
+package com.qxueyou.scc.sys.utils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.UnknownHostException;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class Image2Binary
+{
+ private static Logger log = LoggerFactory.getLogger(Image2Binary.class);
+
+ public static byte[] toByteArray(InputStream in) throws IOException {
+
+ ByteArrayOutputStream out=new ByteArrayOutputStream();
+ byte[] buffer=new byte[1024*4];
+ int n=0;
+ while ( (n=in.read(buffer)) !=-1) {
+ out.write(buffer,0,n);
+ }
+ return out.toByteArray();
+ }
+
+ /**
+ * 缃戠粶鏂囦欢杞崲涓篵yte浜岃繘鍒�
+ * @Title: toByteArray
+ * @Description: TODO(杩欓噷鐢ㄤ竴鍙ヨ瘽鎻忚堪杩欎釜鏂规硶鐨勪綔鐢�)
+ * @param @param url
+ * @param @return
+ * @param @throws IOException 璁惧畾鏂囦欢
+ * @return byte[] 杩斿洖绫诲瀷
+ * @throws
+ */
+ public static byte[] toByteArray(String urlStr) throws IOException {
+ URL url = new URL(urlStr);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ DataInputStream in = new DataInputStream(conn.getInputStream());
+ ByteArrayOutputStream out=new ByteArrayOutputStream();
+ byte[] buffer=new byte[1024*4];
+ int n=0;
+ while ( (n=in.read(buffer)) !=-1) {
+ out.write(buffer,0,n);
+ }
+ return out.toByteArray();
+ }
+
+ /**
+ * @throws IOException
+ * @throws MalformedURLException
+ * 缃戠粶鏂囦欢杞崲涓烘湰鍦版枃浠�
+ * @Title: toByteArray
+ * @Description: TODO(杩欓噷鐢ㄤ竴鍙ヨ瘽鎻忚堪杩欎釜鏂规硶鐨勪綔鐢�)
+ * @param @param url
+ * @param @return
+ * @param @throws IOException 璁惧畾鏂囦欢
+ * @return byte[] 杩斿洖绫诲瀷
+ * @throws
+ */
+ public static void toBDFile(String urlStr, String bdUrl) throws IOException,UnknownHostException{
+ URL url = new URL(urlStr);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ DataInputStream in = new DataInputStream(conn.getInputStream());
+ byte[] data=toByteArray(in);
+ in.close();
+ FileOutputStream out=new FileOutputStream(bdUrl);
+ out.write(data);
+ out.close();
+ }
+
+ /**
+ * 鐩存帴鑾峰彇缃戠粶鏂囦欢鐨刴d5鍊�
+ * @param urlStr
+ * @return
+ */
+ public static String getMd5ByUrl(String urlStr){
+ String md5 = null;
+ try {
+ URL url = new URL(urlStr);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ DataInputStream in = new DataInputStream(conn.getInputStream());
+ md5 = DigestUtils.md5Hex(in);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return md5;
+ }
+
+ /**
+ * 鑾峰彇缃戠粶鏂囦欢鐨勮緭鍏ユ祦
+ * @param urlStr
+ * @return
+ */
+ public static InputStream getInputStreamByUrl(String urlStr){
+ DataInputStream in = null;
+ try {
+ URL url = new URL(urlStr);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ in = new DataInputStream(conn.getInputStream());
+ } catch (IOException e) {
+ log.error("url杞崲杈撳叆娴佸け璐�,閿欒淇℃伅{}",e.getMessage());
+ }
+ return in;
+ }
+
+
+ public static void main(String[] args)
+ {
+// try {
+// toBDFile("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496324940814&di=1d70e0de447be6547c372718b9b30ff6&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F22%2FYMG9CAUWUM15.jpg","E://a.jpg");
+// } catch (IOException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
+ String a = getMd5ByUrl("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496324940814&di=1d70e0de447be6547c372718b9b30ff6&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F22%2FYMG9CAUWUM15.jpg");
+ System.out.println(a);
+ }
+}
diff --git a/src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java b/src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java
index 54ff647..b805f8f 100644
--- a/src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java
+++ b/src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java
@@ -2,6 +2,7 @@
import com.coremedia.iso.IsoFile;
+import java.io.File;
import java.io.IOException;
@@ -15,11 +16,18 @@
* @return 鍗曚綅涓烘绉�
*/
public static long getMp4Duration(String videoPath) throws IOException {
- IsoFile isoFile = new IsoFile(videoPath);
- long lengthInSeconds =
- isoFile.getMovieBox().getMovieHeaderBox().getDuration() /
- isoFile.getMovieBox().getMovieHeaderBox().getTimescale();
- return lengthInSeconds;
+ try {
+ File file = File.createTempFile("temp", ".mp4"); //鍒涘缓涓存椂鏂囦欢
+ Image2Binary.toBDFile(videoPath,file.getCanonicalPath());
+ IsoFile isoFile = new IsoFile(file.getPath());
+ long lengthInSeconds =
+ isoFile.getMovieBox().getMovieHeaderBox().getDuration() /
+ isoFile.getMovieBox().getMovieHeaderBox().getTimescale();
+ return lengthInSeconds;
+ }catch (Exception e){
+ e.printStackTrace();
+ return 0;
+ }
}
diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java b/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java
index 0b83fa3..80d0dc5 100644
--- a/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java
+++ b/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java
@@ -1,17 +1,19 @@
package com.qxueyou.scc.teach.res.service;
-
+
+import com.obs.services.model.PutObjectResult;
+import com.qxueyou.scc.base.model.FileMeta;
import org.springframework.web.multipart.MultipartFile;
-
+
import java.io.InputStream;
import java.util.List;
-
+
/**
* @Description 鍗庝负浜慜BS鏈嶅姟鎺ュ彛
* @author wuhuiju
* @date 2022/12/2 17:01
*/
public interface HweiYunOBSService {
-
+
/**
* @Description 鍒犻櫎鏂囦欢
* @author wuhuiju
@@ -20,7 +22,7 @@
* @return: boolean 鎵ц缁撴灉
*/
boolean delete(String objectKey);
-
+
/**
* @Description 鎵归噺鍒犻櫎鏂囦欢
* @author wuhuiju
@@ -29,7 +31,7 @@
* @return: boolean 鎵ц缁撴灉
*/
boolean delete(List<String> objectKeys);
-
+
/**
* @Description 涓婁紶鏂囦欢
* @author wuhuiju
@@ -38,8 +40,8 @@
* @param: objectKey 鏂囦欢鍚嶇О
* @return: java.lang.String url璁块棶璺緞
*/
- String fileUpload(MultipartFile uploadFile, String objectKey);
-
+ List<FileMeta> fileUpload(MultipartFile uploadFile, String objectKey);
+
/**
* @Description 鏂囦欢涓嬭浇
* @author wuhuiju
@@ -49,4 +51,3 @@
*/
InputStream fileDownload(String objectKey);
}
-
\ No newline at end of file
diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java
index a992382..6f14ba5 100644
--- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java
+++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java
@@ -27,7 +27,7 @@
/**
* 鎵�鏈夋枃浠朵笂浼犵殑鎿嶄綔锛屽崟鐙埌鏂囦欢涓婁紶宸ョ▼鍚庯紝鍚庣画涓氬姟鎿嶄綔闇�瑕佷笅杞芥枃浠惰皟鐢ㄧ殑鏂规硶
- *
+ *
* @author xiadehu
*
*/
@@ -96,7 +96,7 @@
/**
* 鎻掑叆鏂囦欢淇℃伅鍒版暟鎹簱
- *
+ *
* @param name
* @param fullPath
* 鍏ㄨ矾寰�
@@ -106,7 +106,7 @@
* 鏂囦欢绫诲瀷锛岄潪鏂囦欢鏍煎紡
* @return
*/
- private ResFile insertFileToDB(String name, String fullPath, String relativePath, String type) {
+ public ResFile insertFileToDB(String name, String fullPath, String relativePath, String type) {
ResFile file = new ResFile();
@@ -127,10 +127,41 @@
return file;
}
+ /**
+ * 鎻掑叆鏂囦欢淇℃伅鍒版暟鎹簱
+ *
+ * @param name
+ * @param relativePath
+ * 鐩稿璺緞
+ * @param type
+ * 鏂囦欢绫诲瀷锛岄潪鏂囦欢鏍煎紡
+ * @return
+ */
+ public ResFile insertFileToDBTwo(String name, Long Size, String relativePath, String type) {
+
+ ResFile file = new ResFile();
+
+ TraceUtils.setCreateTrace(file);
+ file.setFileName(name);
+ file.setFileFormat(QFileUtils.getFileFormat(name));
+ file.setFileType(type);
+ // TODO
+ file.setMd5Hash(null);
+ file.setPath(relativePath);
+ file.setSize(Size);
+ // TODO
+ file.setTenantId(null);
+ file.setDeleteFlag(false);
+
+ save(file);
+
+ return file;
+
+ }
/**
* 鑾峰彇鏂囦欢绫诲瀷
- *
+ *
* @param name
* @return
*/
@@ -141,7 +172,7 @@
/**
* 鑾峰彇鏂囦欢鐩爣璺緞
- *
+ *
* @param name
* @return
*/
diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java
index 83e5ca1..7343731 100644
--- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java
+++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java
@@ -1,29 +1,31 @@
package com.qxueyou.scc.teach.res.service.impl;
-
+
//import com.example.study.springboot.background.service.HweiYunOBSService;
//import com.example.study.springboot.config.HweiOBSConfig;
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.*;
+import com.qxueyou.scc.base.model.FileMeta;
+import com.qxueyou.scc.base.model.Result;
import com.qxueyou.scc.base.util.CollectionUtils;
import com.qxueyou.scc.base.util.QFileUtils;
import com.qxueyou.scc.base.util.UUIDUtils;
import com.qxueyou.scc.config.HweiOBSConfig;
+import com.qxueyou.scc.teach.res.model.ResFile;
import com.qxueyou.scc.teach.res.service.HweiYunOBSService;
+import com.qxueyou.scc.teach.res.service.IFileService;
import lombok.extern.slf4j.Slf4j;
+import org.apache.catalina.core.ApplicationPart;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
-
+
import java.io.IOException;
import java.io.InputStream;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* @ClassName: HweiYunOBSServiceImpl
@@ -39,6 +41,9 @@
private final Logger log = LogManager.getLogger(HweiYunOBSServiceImpl.class);
@Autowired
private HweiOBSConfig hweiOBSConfig;
+
+ @Autowired
+ FileService fileService;
public final static String FILE_TYPE_VIDEO = "video";
@@ -65,7 +70,7 @@
"JPG", FILE_TYPE_IMG,"JPEG", FILE_TYPE_IMG, "GIF", FILE_TYPE_IMG, "BMP", FILE_TYPE_IMG, "PNG", FILE_TYPE_IMG
);
-
+
@Override
public boolean delete(String objectKey) {
ObsClient obsClient = null;
@@ -81,7 +86,7 @@
}
return true;
}
-
+
@Override
public boolean delete(List<String> objectKeys) {
ObsClient obsClient = null;
@@ -99,10 +104,12 @@
}
return false;
}
-
+
@Override
- public String fileUpload(MultipartFile uploadFile, String objectKey) {
+ public List<FileMeta> fileUpload(MultipartFile uploadFile, String objectKey) {
ObsClient obsClient = null;
+ List<FileMeta> files = new ArrayList<FileMeta>(2);
+ FileMeta fileMeta = null;
try {
String destPath = getDestPath(objectKey);
String bucketName = hweiOBSConfig.getBucketName();
@@ -127,10 +134,18 @@
// 璁剧疆瀵硅薄璁块棶鏉冮檺涓哄叕鍏辫
request.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ);
PutObjectResult result = obsClient.putObject(request);
-
+ fileMeta = new FileMeta();
+ ResFile file = fileService.insertFileToDBTwo(objectKey, uploadFile.getSize(), result.getObjectUrl(), uploadFile.getContentType());
+ fileMeta.setFileId(file.getFileId());
+ fileMeta.setPath(result.getObjectUrl());
+ fileMeta.setFileSize(uploadFile.getSize() / 1024 + "kb");
+ fileMeta.setFileType(uploadFile.getContentType());
+ fileMeta.setFileName(objectKey);
+ files.add(fileMeta);
// 璇诲彇璇ュ凡涓婁紶瀵硅薄鐨刄RL
log.info("宸蹭笂浼犲璞$殑URL" + result.getObjectUrl());
- return result.getObjectUrl();
+ return files;
+// return result.getObjectUrl();
} catch (ObsException e) {
log.error("obs涓婁紶澶辫触", e);
} catch (IOException e) {
@@ -182,4 +197,4 @@
}
return null;
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java
index 3c26b90..1caa134 100644
--- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java
+++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java
@@ -4,6 +4,8 @@
import java.io.File;
import java.util.Date;
+import com.obs.services.ObsClient;
+import com.obs.services.model.ObsObject;
import com.qxueyou.scc.sys.utils.VideoUtil;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
@@ -39,8 +41,6 @@
@Autowired
ICacheService cacheService;
- @Value("${scc.resRootPath}")
- String resRootPath;
@Override
public String add(String fileId, String name) {
@@ -52,7 +52,7 @@
TraceUtils.setCreateTrace(resVideo);
try {
resVideo.setFileId(fileId);
- resVideo.setPlayTime((int) VideoUtil.getMp4Duration(resRootPath +"/"+ file.getPath()));
+ resVideo.setPlayTime((int) VideoUtil.getMp4Duration(file.getPath()));
resVideo.setName(name);
resVideo.setMediaVideoId(mediaVideoId);
resVideo.setStatus(ResItemVideo.STATUS_LINEUP);
@@ -83,7 +83,7 @@
try {
video.setDeleteFlag(false);
- video.setPlayTime((int) VideoUtil.getMp4Duration(resRootPath +"/"+ file.getPath()));
+ video.setPlayTime((int) VideoUtil.getMp4Duration(file.getPath()));
video.setName(file.getFileName());
video.setOrigUrl(file.getPath());
video.setStatus(MediaVideo.STATUS_LINEUP);
--
Gitblit v1.8.0