From ce663f476e7134bb4f9e34d5491fc37be53cc09f Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 21 三月 2024 11:30:39 +0800
Subject: [PATCH] 添加项目名称

---
 src/main/java/com/lf/server/service/data/DirService.java |  130 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 118 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/lf/server/service/data/DirService.java b/src/main/java/com/lf/server/service/data/DirService.java
index e09e139..d9fd76b 100644
--- a/src/main/java/com/lf/server/service/data/DirService.java
+++ b/src/main/java/com/lf/server/service/data/DirService.java
@@ -1,10 +1,19 @@
 package com.lf.server.service.data;
 
+import com.lf.server.entity.all.RedisCacheKey;
 import com.lf.server.entity.data.DirEntity;
+import com.lf.server.helper.PathHelper;
+import com.lf.server.helper.StringHelper;
+import com.lf.server.helper.Zip4jHelper;
 import com.lf.server.mapper.data.DirMapper;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.lf.server.service.all.RedisService;
+import net.lingala.zip4j.ZipFile;
+import net.lingala.zip4j.model.ZipParameters;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -12,39 +21,50 @@
  * @author sws
  * @date 2022-09-24
  */
-
 @Service
 public class DirService implements DirMapper {
-    @Autowired
+    @Resource
+    PathHelper pathHelper;
+
+    @Resource
     DirMapper dirMapper;
+
+    @Resource
+    RedisService redisService;
 
     @Override
     public Integer insert(DirEntity dirEntity) {
+        clearCache();
         return dirMapper.insert(dirEntity);
     }
 
     @Override
     public Integer inserts(List<DirEntity> dirEntity) {
+        clearCache();
         return dirMapper.inserts(dirEntity);
     }
 
     @Override
     public Integer deleteDir(int id) {
+        clearCache();
         return dirMapper.deleteDir(id);
     }
 
     @Override
     public Integer deleteDirs(List<Integer> ids) {
+        clearCache();
         return dirMapper.deleteDirs(ids);
     }
 
     @Override
     public Integer update(DirEntity dirEntity) {
+        clearCache();
         return dirMapper.update(dirEntity);
     }
 
     @Override
     public Integer updates(List<DirEntity> dirEntity) {
+        clearCache();
         return dirMapper.updates(dirEntity);
     }
 
@@ -54,27 +74,113 @@
     }
 
     @Override
+    public DirEntity selectByCode(String code) {
+        return dirMapper.selectByCode(code);
+    }
+
+    @Override
     public List<DirEntity> selectDirAll() {
-        return dirMapper.selectDirAll();
+        String key = RedisCacheKey.dataDirKey("selectDirAll");
+        List<DirEntity> list = redisService.getListByKey(key);
+        if (null == list) {
+            list = dirMapper.selectDirAll();
+            redisService.saveListByKey(key, list);
+        }
+
+        return list;
     }
 
     @Override
     public List<DirEntity> selectDirRoot() {
-        return dirMapper.selectDirRoot();
+        String key = RedisCacheKey.dataDirKey("selectDirRoot");
+        List<DirEntity> list = redisService.getListByKey(key);
+        if (null == list) {
+            list = dirMapper.selectDirRoot();
+            redisService.saveListByKey(key, list);
+        }
+
+        return list;
     }
 
     @Override
-    public List<DirEntity> selectProject() {
-        return dirMapper.selectProject();
-    }
+    public List<DirEntity> selectProject(String name) {
+        name = StringHelper.getLikeUpperStr(name);
 
-    @Override
-    public List<DirEntity> selectDirRecursive(String name) {
-        return dirMapper.selectDirRecursive(name);
+        return dirMapper.selectProject(name);
     }
 
     @Override
     public List<DirEntity> selectRecursiveById(Integer id) {
-        return dirMapper.selectRecursiveById(id);
+        List<DirEntity> list = dirMapper.selectRecursiveById(id);
+
+        return null == list ? new ArrayList<>() : list;
+    }
+
+    @Override
+    public List<DirEntity> selectDirsForPrj() {
+        String key = RedisCacheKey.dataDirKey("selectDirsForPrj");
+        List<DirEntity> list = redisService.getListByKey(key);
+        if (null == list) {
+            list = dirMapper.selectDirsForPrj();
+            redisService.saveListByKey(key, list);
+        }
+
+        return list;
+    }
+
+    @Override
+    public Integer selectMaxOrderNum() {
+        return dirMapper.selectMaxOrderNum();
+    }
+
+    @Override
+    public DirEntity selectDirByName(String name, Integer pid) {
+        return dirMapper.selectDirByName(name, pid);
+    }
+
+    @Override
+    public String selectNameByCode(String code) {
+        return dirMapper.selectNameByCode(code);
+    }
+
+    /**
+     * 娓呴櫎缂撳瓨
+     */
+    public void clearCache() {
+        String key = RedisCacheKey.dataDirKey("");
+        redisService.clearKeys(key);
+    }
+
+    /**
+     * 鍒涘缓鏁版嵁鐩綍
+     */
+    public String createDirs(int id) throws Exception {
+        List<DirEntity> list = selectRecursiveById(id);
+        if (null == list || list.isEmpty()) {
+            return null;
+        }
+
+        String tempPath = pathHelper.getTempPath();
+        for (DirEntity dir : list) {
+            String path = tempPath + File.separator + dir.getFullName();
+            File f = new File(path);
+            if (f.exists() && f.isDirectory()) {
+                continue;
+            }
+
+            f.mkdirs();
+        }
+
+        File file = new File(tempPath + File.separator + list.get(0).getName());
+        if (!file.exists() || !file.isDirectory()) {
+            file.mkdirs();
+        }
+
+        String zipFile = tempPath + File.separator + list.get(0).getName() + ".zip";
+        ZipFile zip = Zip4jHelper.createZipFile(zipFile, null);
+        ZipParameters params = Zip4jHelper.getZipParams(false);
+        zip.addFolder(file, params);
+
+        return zipFile;
     }
 }

--
Gitblit v1.9.3