소스 검색

日志管理功能代码提交

jingyuanchao 1 년 전
부모
커밋
be0d5c8fee

+ 10 - 11
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/LocalSysFileServiceImpl.java

@@ -1021,7 +1021,7 @@ public class LocalSysFileServiceImpl implements ISysFileService {
 
     @Override
     public void uploadFileByte(FileUploadByByteDto fileUploadByByteDto) {
-        final String currentServerLogDir = localFilePath + LOGS_DIR + File.separator + fileUploadByByteDto.getServerName() +  File.separator + fileUploadByByteDto.getFilePath();
+        final String currentServerLogDir = localFilePath + LOGS_DIR + File.separator + fileUploadByByteDto.getServerName() + File.separator + fileUploadByByteDto.getFilePath();
         final File file = new File(currentServerLogDir);
         if (!file.exists()) {
             file.mkdirs();
@@ -1032,25 +1032,24 @@ public class LocalSysFileServiceImpl implements ISysFileService {
     @Override
     public List<String> checkFileExit(String serverName) {
         List<String> exitFileList = new ArrayList<>();
-        final String errorDir = localFilePath + LOGS_DIR + File.separator + serverName + File.separator + "error";
-        final String infoDir = localFilePath + LOGS_DIR + File.separator + serverName + File.separator + "info";
-        findFileName(exitFileList, errorDir);
-
-        findFileName(exitFileList, infoDir);
+        final File file = new File(localFilePath + LOGS_DIR + File.separator + serverName);
 
+        listFiles(file, exitFileList);
 
         return exitFileList;
     }
 
-    private void findFileName(List<String> exitFileList, String fileDir) {
-        final File file = new File(fileDir);
-        if (file.exists()) {
-            final File[] files = file.listFiles();
+    private static void listFiles(File file, List<String> fileList) {
+        if (file.isDirectory()) {
+            File[] files = file.listFiles();
             if (files != null) {
                 for (File f : files) {
-                    exitFileList.add(f.getName());
+                    listFiles(f, fileList);
                 }
             }
+        } else {
+            fileList.add(file.getAbsolutePath());
         }
     }
+
 }

+ 25 - 13
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysServerServiceImpl.java

@@ -34,6 +34,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -128,38 +129,49 @@ public class SysServerServiceImpl extends ServiceImpl<SysServerMapper, SysServer
         List<FileInfoVo> checks = JSONArray.parseArray(serverJson, FileInfoVo.class);
         final boolean match = checks.stream().anyMatch(file -> ObjectUtil.equal(2, file.getFileType()));
         List<FileInfoVo> res = new ArrayList<>();
+        final List<String> exitFileNameList = fileService.checkFileExit(server.getServerIp());
         if (match) {
             final List<FileInfoVo> list = checks.stream().filter(file -> ObjectUtil.equal(2, file.getFileType())).collect(Collectors.toList());
             for (FileInfoVo fileInfoVo : list) {
                 res.add(fileInfoVo);
-                fileInfoVo.setChildren(checks.stream().filter(r -> ObjectUtil.equal(fileInfoVo.getId(), r.getParentId())).collect(Collectors.toList()));
+                final List<FileInfoVo> list1 = checks.stream().filter(r -> ObjectUtil.equal(fileInfoVo.getId(), r.getParentId())).collect(Collectors.toList());
+                checkExit(list1, server.getServerIp(), exitFileNameList);
+                fileInfoVo.setChildren(list1);
             }
-            return res;
         } else {
-            res.add(buildDir("info", checks));
-            res.add(buildDir("error", checks));
-            return res;
+            res.add(buildDir("info", checks, server.getServerIp(), exitFileNameList));
+            res.add(buildDir("error", checks, server.getServerIp(), exitFileNameList));
         }
-        /*List<String> exitFileNameList = fileService.checkFileExit(server.getServerIp());
-        if (CollectionUtil.isNotEmpty(checks)) {
-            for (FileInfoVo check : checks) {
-                if (exitFileNameList.contains(check.getFileName()))
-                    check.setExit(1);
+        return res;
+    }
+
+
+    private void checkExit(List<FileInfoVo> checks, String serverIp, List<String> exitFileNameList) {
+        exitFileNameList = exitFileNameList.stream().map(r -> r.replace(File.separator, "/")).collect(Collectors.toList());
+        for (FileInfoVo check : checks) {
+            final String fileName = serverIp + check.getParentPath().split("logs")[1] + File.separator + check.getFileName();
+            final String replace = fileName.replace(File.separator, "/");
+            final boolean match = exitFileNameList.stream().anyMatch(r -> r.contains(replace));
+            if (match) {
+                check.setExit(1);
             }
-        }*/
+        }
     }
 
-    private FileInfoVo buildDir(String dirName, List<FileInfoVo> list) {
+    private FileInfoVo buildDir(String dirName, List<FileInfoVo> list, String serverIp, List<String> exitFileNameList) {
         FileInfoVo fileInfoVo = new FileInfoVo();
         fileInfoVo.setFileName(dirName);
         fileInfoVo.setFileSize("-");
         fileInfoVo.setPath(dirName);
         fileInfoVo.setFileType(2);
         fileInfoVo.setId(UUID.randomUUID().toString());
-        fileInfoVo.setChildren(list.stream().filter(r -> r.getFileName().contains(dirName)).collect(Collectors.toList()));
+        final List<FileInfoVo> voList = list.stream().filter(r -> r.getFileName().contains(dirName)).collect(Collectors.toList());
+        checkExit(voList, serverIp, exitFileNameList);
+        fileInfoVo.setChildren(voList);
         return fileInfoVo;
     }
 
+
     @Override
     public void transferLog(TransferLogDto req) {
         final SysServer sysServer = getById(req.getServerId());

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/vo/server/FileInfoVo.java

@@ -52,6 +52,9 @@ public class FileInfoVo implements Serializable {
      */
     private String createTime = "";
 
+    // 0不存在 1存在
+    private int exit;
+
     private List<FileInfoVo> children=new ArrayList<>();
 }