From 885290e4d0d0c7fad3f538d901c616e49c3d6985 Mon Sep 17 00:00:00 2001
From: 胡仁荣 <897853850@qq.com>
Date: 星期二, 18 七月 2023 18:15:58 +0800
Subject: [PATCH] oss分块上传

---
 src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java |   80 ++++++++++++++++++++++++---------------
 1 files changed, 49 insertions(+), 31 deletions(-)

diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java
index d142c62..f15eb2d 100644
--- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java
+++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/ResService.java
@@ -6,6 +6,11 @@
 
 import javax.annotation.PostConstruct;
 
+import com.obs.services.ObsClient;
+import com.obs.services.model.HttpMethodEnum;
+import com.obs.services.model.TemporarySignatureRequest;
+import com.obs.services.model.TemporarySignatureResponse;
+import com.qxueyou.scc.config.HweiOBSConfig;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -30,9 +35,9 @@
 import com.qxueyou.scc.teach.subject.service.impl.SubjectLectureService;
 
 /**
- * 资源服务
+ * 璧勬簮鏈嶅姟
  *
- * @author 夏德虎
+ * @author 澶忓痉铏�
  */
 @Service
 public class ResService extends CommonAppService implements IResService {
@@ -46,12 +51,15 @@
 
     @Autowired
     private ApplicationContext appContext;
-    
+
+    @Autowired
+    private HweiOBSConfig hweiOBSConfig;
+
     @Autowired
     private IClassLectureService classLectureService;
 
     /**
-     * 各类型资源服务实现
+     * 鍚勭被鍨嬭祫婧愭湇鍔″疄鐜�
      */
     private Map<String, IResItemService> resItemServiceMap = new HashMap<String, IResItemService>(6);
 
@@ -87,7 +95,7 @@
         res.setCoverPageUrl(coverPageUrl);
         res.setItemDestId(resItemId);
         res.setName(name);
-        res.setStatus(Res.STATUS_CONVER);
+        res.setStatus(Res.STATUS_DRAFT);
         res.setType(type);
         res.setResDirId(dirId);
         res.setRemark(remark);
@@ -109,7 +117,7 @@
             TraceUtils.setCreateTrace(res);
             res.setItemDestId(resItemId);
             res.setName(name);
-            res.setStatus(Res.STATUS_CONVER);
+            res.setStatus(Res.STATUS_DRAFT);
             res.setType(type);
             res.setLibId(dir.getLibId());
             res.setResDirId(dirId);
@@ -129,13 +137,13 @@
 
         Res res = read(Res.class, resId);
 
-        resItemServiceMap.get(res.getType()).update(res.getItemDestId(), name);
+//        resItemServiceMap.get(res.getType()).update(res.getItemDestId(), name);
 
         TraceUtils.setUpdateTrace(res);
         res.setName(name);
         res.setCoverPageUrl(coverPageUrl);
         res.setRemark(remark);
-
+        res.setStatus(Res.STATUS_DRAFT);
         save(res);
 
         return new Result(true, "success");
@@ -157,7 +165,7 @@
     }
 
     /**
-     * @param resId 资源id
+     * @param resId 璧勬簮id
      * @return
      */
     private Result delete(String resId) {
@@ -258,9 +266,9 @@
         ResLib lib = this.getResLib(libType, ownerId);
 
         StringBuffer hql = new StringBuffer(
-                "from Res where deleteFlag is false and name like ? and libId=? and status=? order by updateTime desc");
+                "from Res where deleteFlag is false and name like ? and libId like ? and status=? order by updateTime desc");
 
-        List<Object> args = CollectionUtils.newList(keyword + "%", lib == null ? null : lib.getLibId(),Res.STATUS_DRAFT);
+        List<Object> args = CollectionUtils.newList(keyword + "%", lib == null ? "%" : lib.getLibId() + "%",Res.STATUS_DRAFT);
 
         if (!StringUtils.isEmpty(resType)) {
             hql.append(" and type=?");
@@ -276,9 +284,9 @@
     public int listResCountByLib(String libType, String ownerId, String text, String resType) {
         ResLib lib = this.getResLib(libType, ownerId);
 
-        StringBuffer hql = new StringBuffer("from Res where deleteFlag is false and libId=? order by updateTime desc");
+        StringBuffer hql = new StringBuffer("from Res where deleteFlag is false and libId like ? order by updateTime desc");
 
-        List<Object> args = CollectionUtils.newList(null == lib ? null : lib.getLibId());
+        List<Object> args = CollectionUtils.newList(null == lib ? "%" : lib.getLibId()+"%");
 
         if (!StringUtils.isEmpty(resType)) {
             hql.append(" and type=?");
@@ -306,17 +314,27 @@
     public Result readAccessPath(String resId, String attribute) {
 
         Res res = read(Res.class, resId);
-        
-        Object path = Res.FILE_TYPE_VIDEO.equals(res.getType())?JSONObject.parse(resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute)):CollectionUtils.newObjectMap("path", resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute));
-        if(Res.FILE_TYPE_DOC.equals(res.getType())) {
+//        Object path = Res.FILE_TYPE_VIDEO.equals(res.getType())? JSONObject.parse(resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute)):CollectionUtils.newObjectMap("path", resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute));
+        Object path = Res.FILE_TYPE_VIDEO.equals(res.getType())? resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute):resItemServiceMap.get(res.getType()).readAccessPath(res.getItemDestId(), attribute);
+//        if(Res.FILE_TYPE_DOC.equals(res.getType())) {
+//        	 return new Result(true, "success",
+//                     CollectionUtils.newObjectMap("path", path, "name", res.getName(), "coverPageUrl", res.getCoverPageUrl(), "size",
+//                    		 this.classLectureService.readDocPageCount(res.getItemDestId())));//鏂囦欢鐨勯〉鏁�
+//        }else {
+        // URL鏈夋晥鏈燂紝3600绉�
+        long expireSeconds = 3600L;
+        TemporarySignatureRequest request = new TemporarySignatureRequest(HttpMethodEnum.GET, expireSeconds);
+        //璁剧疆妗跺悕,涓�鑸兘鏄啓鍦ㄩ厤缃噷锛岃繖閲岀洿鎺ヨ祴鍊煎嵆鍙�
+        request.setBucketName(hweiOBSConfig.getBucketName());
+        //杩欓噷鐩稿綋浜庤缃綘涓婁紶鍒皁bs鐨勬枃浠惰矾
+        request.setObjectKey((String) path);
+
+        ObsClient obsClient = new ObsClient(hweiOBSConfig.getAccessKey(),hweiOBSConfig.getSecurityKey(),hweiOBSConfig.getEndPoint());
+        TemporarySignatureResponse temporarySignatureResponse=obsClient.createTemporarySignature(request);
         	 return new Result(true, "success",
-                     CollectionUtils.newObjectMap("path", path, "name", res.getName(), "coverPageUrl", res.getCoverPageUrl(), "size",
-                    		 this.classLectureService.readDocPageCount(res.getItemDestId())));//文件的页数
-        }else {
-        	 return new Result(true, "success",
-                     CollectionUtils.newObjectMap("path", path, "name", res.getName(), "coverPageUrl", res.getCoverPageUrl(), "size", 0));
-        }
-       
+                     CollectionUtils.newObjectMap("path", temporarySignatureResponse.getSignedUrl(), "name", res.getName(), "coverPageUrl", res.getCoverPageUrl(), "size", 0));
+//        }
+
     }
 
     @Override
@@ -359,7 +377,7 @@
     public Result deleteDir(String[] dirIds) {
 
         for (String dirId : dirIds) {
-            deleteFile4Dir(dirId);// 删除对应的文件
+            deleteFile4Dir(dirId);// 鍒犻櫎瀵瑰簲鐨勬枃浠�
             deleteDir(dirId);
         }
 
@@ -378,9 +396,9 @@
     }
 
     /**
-     * 删除资源库文件夹对应删除文件
+     * 鍒犻櫎璧勬簮搴撴枃浠跺す瀵瑰簲鍒犻櫎鏂囦欢
      *
-     * @param dirId 文件夹id
+     * @param dirId 鏂囦欢澶筰d
      */
     @Override
     public void deleteFile4Dir(String dirId) {
@@ -392,7 +410,7 @@
     @Override
     public ResDir doGetRootDir(String type, String ownerId) {
         ResLib lib = getResLib(type, ownerId);
-        // 无资源库则初始化,并返回根节点
+        // 鏃犺祫婧愬簱鍒欏垵濮嬪寲,骞惰繑鍥炴牴鑺傜偣
         if (lib == null) {
             Result result = initResLib(type, ownerId);
             return read(ResDir.class, result.getDataT("rootDirId"));
@@ -410,11 +428,11 @@
 
     private List<ResDir> doGetChildDirsInner(String parentDirId, String type) {
 
-        // 根节点的处理
+        // 鏍硅妭鐐圭殑澶勭悊
         if (StringUtils.isEmpty(parentDirId)) {
             ResLib lib = getResLib(type, ClientUtils.getUserId());
 
-            // 无资源库则初始化,并返回根节点
+            // 鏃犺祫婧愬簱鍒欏垵濮嬪寲,骞惰繑鍥炴牴鑺傜偣
             if (lib == null) {
                 Result result = initUserLib();
                 return CollectionUtils.newList(ResDir.class, read(ResDir.class, result.getDataT("rootDirId")));
@@ -453,7 +471,7 @@
 
         if (lib == null) {
 
-            Result result = addDir(RES_DIR_ROOT, "根目录");
+            Result result = addDir(RES_DIR_ROOT, "鏍圭洰褰�");
 
             lib = new ResLib();
 
@@ -500,7 +518,7 @@
     }
 
     /**
-     * 定时器监控转码完成后设置同步res表的状态
+     * 瀹氭椂鍣ㄧ洃鎺ц浆鐮佸畬鎴愬悗璁剧疆鍚屾res琛ㄧ殑鐘舵��
      */
     @Scheduled(cron = "0/2 * * * * ?")
     public void doTimer() {

--
Gitblit v1.8.0