From bf6109a746afe7d184f0d14241a5b44d4f95a1bc Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 18 九月 2023 14:40:45 +0800
Subject: [PATCH] 添加删除元数据功能

---
 src/main/java/com/lf/server/service/data/MetaService.java |   84 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 81 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/lf/server/service/data/MetaService.java b/src/main/java/com/lf/server/service/data/MetaService.java
index e9b42e4..1c412e7 100644
--- a/src/main/java/com/lf/server/service/data/MetaService.java
+++ b/src/main/java/com/lf/server/service/data/MetaService.java
@@ -159,6 +159,11 @@
     }
 
     @Override
+    public Integer selectCountByPath(String path) {
+        return metaMapper.selectCountByPath(path);
+    }
+
+    @Override
     public Integer insert(MetaEntity entity) {
         return metaMapper.insert(entity);
     }
@@ -188,14 +193,18 @@
      */
     public Integer deletes(List<Integer> list) {
         String ids = StringHelper.join(list, ",");
+        List<MetaEntity> metas = selectByIds(ids);
 
         String sql = null;
-        List<MetaEntity> metas = selectByIdsForTab(ids);
-        if (null != metas && metas.size() > 0) {
+        List<MetaEntity> tabMetas = selectByIdsForTab(ids);
+        if (null != tabMetas && tabMetas.size() > 0) {
             sql = getDelTabsSql(metas);
         }
 
-        return deletes(sql, ids);
+        int rows = deletes(sql, ids);
+        deleteMetaFiles(metas);
+
+        return rows;
     }
 
     /**
@@ -274,6 +283,75 @@
     }
 
     /**
+     * 鍒犻櫎鍏冩暟鎹枃浠�
+     */
+    private void deleteMetaFiles(List<MetaEntity> metas) {
+        String uploadPath = pathHelper.getConfig().getUploadPath();
+        for (MetaEntity meta : metas) {
+            if (StringHelper.isEmpty(meta.getPath())) {
+                continue;
+            }
+            Integer rows = selectCountByPath(meta.getPath());
+            if (rows > 0) {
+                continue;
+            }
+
+            try {
+                String file = uploadPath + File.separator + meta.getPath();
+                switch ("." + meta.getType()) {
+                    case StaticData.MPT:
+                        deleteFiles(file, meta.getType(), StaticData.MPT_EXT);
+                        break;
+                    case StaticData.JPG:
+                        deleteFiles(file, meta.getType(), StaticData.JPG_EXT);
+                        break;
+                    case StaticData.IMG:
+                        deleteFiles(file, meta.getType(), StaticData.IMG_EXT);
+                        break;
+                    case StaticData.TIF:
+                        deleteFiles(file, meta.getType(), StaticData.TIF_EXT);
+                        break;
+                    case StaticData.TIFF:
+                        deleteFiles(file, meta.getType(), StaticData.TIFF_EXT);
+                        break;
+                    case StaticData.SHP:
+                        deleteFiles(file, meta.getType(), StaticData.SHP_EXT);
+                        break;
+                    case StaticData.GDB:
+                    case StaticData.OSGB:
+                        FileHelper.deleteDir(file);
+                        break;
+                    default:
+                        deleteFiles(file, meta.getType(), null);
+                        break;
+                }
+            } catch (Exception ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
+    }
+
+    /**
+     * 鍒犻櫎澶氫釜鏂囦欢
+     */
+    private void deleteFiles(String file, String type, List<String> extList) {
+        File f = new File(file);
+        if (f.exists() && !f.isDirectory()) {
+            f.delete();
+        }
+        if (null == extList || extList.isEmpty()) {
+            return;
+        }
+
+        for (String ext : extList) {
+            f = new File(file.replace("." + type, ext));
+            if (f.exists() && !f.isDirectory()) {
+                f.delete();
+            }
+        }
+    }
+
+    /**
      * 鏌ョ湅鏂囦欢
      */
     public void downloadForView(String guid, boolean inline, HttpServletResponse res) {

--
Gitblit v1.9.3