Browse Source

improvement: 更新文件存储

ChenSiTong 6 years ago
parent
commit
f65a743375

+ 1 - 1
src/main/java/nju/seec/helper/entity/Slide.java

@@ -45,7 +45,7 @@ public class Slide {
     @Column(nullable = false)
     private String name;
 
-    @Column(name = "object_name")
+    @Column(name = "object_name", nullable = false)
     private String objectName;
 
     @Column(name = "create_at", nullable = false, updatable = false)

+ 12 - 8
src/main/java/nju/seec/helper/service/impl/SlideServiceImpl.java

@@ -81,6 +81,7 @@ public class SlideServiceImpl implements SlideService {
         MultipartFile file = slideDTO.getFile();
         FileInfo fileInfo = getFileInfo(file);
         slide.setPages(fileInfo.pages);
+        slide.setObjectName("temp");
         slide = slideDAO.save(slide);
 
         String objectName = getObjectName(slide.getId(), slide.getName(), fileInfo.suffix);
@@ -99,15 +100,18 @@ public class SlideServiceImpl implements SlideService {
         AuthUtils.checkDataAuth(user.getId(), slide.getTeacherId(), "您无权修改该课件");
 
         checkSameName(slide.getId(), slide.getCourseId(), slideDTO.getName());
-        if (!slideDTO.getName().equals(slide.getName())) {
-            slide.setName(slideDTO.getName());
-            String oldObjectName = slide.getObjectName();
-            String newObjectName = getObjectName(slide.getId(), slide.getName(), oldObjectName.substring(oldObjectName.lastIndexOf('.') + 1));
-            slide.setObjectName(newObjectName);
-            slide = slideDAO.save(slide);
-
-            fileUtils.move(oldObjectName, newObjectName);
+
+        slide.setName(slideDTO.getName());
+        String oldObjectName = slide.getObjectName();
+        String newObjectName = getObjectName(slide.getId(), slide.getName(), oldObjectName.substring(oldObjectName.lastIndexOf('.') + 1));
+        slide.setObjectName(newObjectName);
+        slide = slideDAO.save(slide);
+
+        if (!oldObjectName.equals(newObjectName)) {
+            fileUtils.copy(oldObjectName, newObjectName);
+            fileUtils.delete(oldObjectName);
         }
+
         return new SlideVO(slide);
     }
 

+ 3 - 4
src/main/java/nju/seec/helper/util/FileUtils.java

@@ -61,14 +61,13 @@ public class FileUtils {
         }
     }
 
-    public void move(String sourceObjectName, String destinationObjectName) {
+    public void copy(String sourceObjectName, String destinationObjectName) {
         OSS ossClient = getOss();
         try {
             ossClient.copyObject(ossProperties.getBucketName(), sourceObjectName, ossProperties.getBucketName(), destinationObjectName);
-            ossClient.deleteObject(ossProperties.getBucketName(), sourceObjectName);
         } catch (OSSException | ClientException e) {
             log.error(e.getMessage());
-            throw HelperException.of(ExceptionType.ERROR, "文件拷贝失败");
+            throw HelperException.of(ExceptionType.ERROR, "文件迁移失败");
         } finally {
             if (ossClient != null) {
                 ossClient.shutdown();
@@ -83,7 +82,7 @@ public class FileUtils {
             ossClient.deleteObject(ossProperties.getBucketName(), objectName);
         } catch (OSSException | ClientException e) {
             log.error(e.getMessage());
-            throw HelperException.of(ExceptionType.ERROR, "文件拷贝失败");
+            throw HelperException.of(ExceptionType.ERROR, "文件删除失败");
         } finally {
             if (ossClient != null) {
                 ossClient.shutdown();