| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | * @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 insertDir(DirEntity dirEntity) { |
| | | return dirMapper.insertDir(dirEntity); |
| | | public Integer insert(DirEntity dirEntity) { |
| | | clearCache(); |
| | | return dirMapper.insert(dirEntity); |
| | | } |
| | | |
| | | @Override |
| | | public Integer insertDirs(List<DirEntity> dirEntity) { |
| | | return dirMapper.insertDirs(dirEntity); |
| | | 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 updateDir(DirEntity dirEntity) { |
| | | return dirMapper.updateDir(dirEntity); |
| | | public Integer update(DirEntity dirEntity) { |
| | | clearCache(); |
| | | return dirMapper.update(dirEntity); |
| | | } |
| | | |
| | | @Override |
| | | public Integer updateDirs(List<DirEntity> dirEntity) { |
| | | return dirMapper.updateDirs(dirEntity); |
| | | public Integer updates(List<DirEntity> dirEntity) { |
| | | clearCache(); |
| | | return dirMapper.updates(dirEntity); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<DirEntity> selectDirAll() { |
| | | return dirMapper.selectDirAll(); |
| | | public DirEntity selectByCode(String code) { |
| | | return dirMapper.selectByCode(code); |
| | | } |
| | | |
| | | @Override |
| | | public List<DirEntity> selectDirRecursive() { |
| | | return dirMapper.selectDirRecursive(); |
| | | 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; |
| | | } |
| | | } |