管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2024-12-18 0c8cd957630d43aa71183d34ecb1faf60689f8a4
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,17 +74,120 @@
    }
    @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> selectDirRecursive(String name) {
        return dirMapper.selectDirRecursive(name);
    public List<DirEntity> selectProject(String name) {
        name = StringHelper.getLikeUpperStr(name);
        return dirMapper.selectProject(name);
    }
    @Override
    public List<DirEntity> selectRecursiveById(Integer id) {
        List<DirEntity> list = dirMapper.selectRecursiveById(id);
        return null == list ? new ArrayList<>() : list;
    }
    @Override
    public List<DirEntity> selectByPid(int pid) {
        List<DirEntity> list = dirMapper.selectByPid(pid);
        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;
    }
}