package com.terra.system.service.data;
|
|
import com.terra.common.entity.all.RedisCacheKey;
|
import com.terra.system.entity.data.DirEntity;
|
import com.terra.system.helper.PathHelper;
|
import com.terra.common.helper.StringHelper;
|
import com.terra.system.helper.Zip4jHelper;
|
import com.terra.system.mapper.data.DirMapper;
|
import com.terra.common.service.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;
|
|
/**
|
* dir
|
* @author sws
|
* @date 2022-09-24
|
*/
|
@Service
|
public class DirService implements DirMapper {
|
@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);
|
}
|
|
@Override
|
public DirEntity selectDir(int id) {
|
return dirMapper.selectDir(id);
|
}
|
|
@Override
|
public DirEntity selectByCode(String code) {
|
return dirMapper.selectByCode(code);
|
}
|
|
@Override
|
public List<DirEntity> 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() {
|
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(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;
|
}
|
}
|