ludc
2023-11-26 a27478da4ebab5fdfd5b4fcc25580212ed52cc28
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
@@ -1,14 +1,12 @@
package com.vci.ubcs.log.service.impl;
import com.vci.ubcs.log.dto.LocalLogVO;
import com.vci.ubcs.log.enumpack.ServiceNameRoleEnum;
import com.vci.ubcs.log.vo.LocalLogVO;
import com.vci.ubcs.log.service.ILogLocalService;
import com.vci.ubcs.log.entity.LocalLog;
import com.vci.ubcs.resource.utils.FileUtil;
import com.vci.ubcs.resource.utils.ZipUtil;
import com.vci.ubcs.resource.vo.FileObjectVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springblade.core.log.exception.ServiceException;
@@ -17,16 +15,13 @@
import com.vci.ubcs.resource.bo.FileObjectBO;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -43,7 +38,7 @@
 */
@Service
@Slf4j
public class LogLocalServiceImpl implements ILogLocalService{
public class LogLocalServiceImpl implements ILogLocalService, EnvironmentAware {
   /**
    * 各个服务存放的的父路径
@@ -62,9 +57,13 @@
    */
   private Boolean isWindows = true;
   {
      String os = System.getProperty("os.name").toLowerCase();
      //默认就配置为windows的,如果不是当前系统不是windows就需要对其转换为linux的文件路径格式
   /**
    * 根据当前运行的环境,对配置的日志路径格式进行调整
    * @param environment
    */
   @Override
   public void setEnvironment(Environment environment) {
      String os = environment.getProperty("os.name").toLowerCase();
      if (!os.contains("win")) {
         this.PARENTPATH = this.PARENTPATH.substring(this.PARENTPATH.lastIndexOf(":") + 1).replace("\\", "/");
         this.LOGPATH = this.LOGPATH.replace("\\", "/");
@@ -84,8 +83,8 @@
    * @return
    */
   //@Override
   public List<LocalLog> getSystemLogList(String logParentPath) {
      List<LocalLog> localLogs = new ArrayList<>();
   public List<LocalLogVO> getSystemLogList(String logParentPath) {
      List<LocalLogVO> localLogsVO = new ArrayList<>();
      // 不为空说明是加载当前这个服务路径下的日志文件
      if(Func.isNotEmpty(logParentPath)){
         File file = new File(logParentPath);
@@ -93,7 +92,7 @@
            File[] files = file.listFiles();
            Arrays.stream(files).forEach(item->{
               // 组建日志文件对象
               LocalLog localLog = new LocalLog();
               LocalLogVO localLog = new LocalLogVO();
               localLog.setLogName(item.getName());
               localLog.setLogType(getLogType(item.getName()));
               localLog.setCreateTime(getLastModifiedOrCreatTime(false,logParentPath));
@@ -103,7 +102,7 @@
               localLog.setServiceId(serviceId);
               localLog.setServiceName(getServiceName(serviceId));
               localLog.setHasChildren(false);
               localLogs.add(localLog);
               localLogsVO.add(localLog);
            });
         }
      }else {
@@ -113,22 +112,24 @@
            if(dir.getName().contains("ubcs_")){
               String fullPath = dir.getPath() + LOGPATH;
               File file = new File(fullPath);
               LocalLog localLog = new LocalLog();
               localLog.setLastModifier(getLastModifiedOrCreatTime(true,fullPath));
               localLog.setCreateTime(getLastModifiedOrCreatTime(false,fullPath));
               localLog.setLogPath(fullPath);
               String serviceId = getServiceId(file.getPath());
               localLog.setServiceId(serviceId);
               String serviceName = getServiceName(serviceId);
               localLog.setServiceName(serviceName);
               localLog.setLogType(serviceName+"日志父目录");
               localLog.setLogName(serviceName+"日志父目录");
               localLog.setHasChildren(true);
               localLogs.add(localLog);
               if(file.exists()){
                  LocalLogVO localLogVO = new LocalLogVO();
                  localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,fullPath));
                  localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,fullPath));
                  localLogVO.setLogPath(fullPath);
                  String serviceId = getServiceId(file.getPath());
                  localLogVO.setServiceId(serviceId);
                  String serviceName = getServiceName(serviceId);
                  localLogVO.setServiceName(serviceName);
                  localLogVO.setLogType(serviceName+"日志父目录");
                  localLogVO.setLogName(serviceName+"日志父目录");
                  localLogVO.setHasChildren(true);
                  localLogsVO.add(localLogVO);
               }
            }
         });
      }
      return localLogs;
      return localLogsVO;
   }
   /**
@@ -193,7 +194,8 @@
    * @return
    */
   private String getServiceName(String serViceId){
      return EnumCache.getValue(EnumEnum.SERCIVE_NAME_ROLE, serViceId);
      // EnumCache.getValue(EnumEnum.SERCIVE_NAME_ROLE, serViceId)
      return ServiceNameRoleEnum.getTextByValue(serViceId);
   }
   /**
@@ -223,7 +225,7 @@
         throw new ServerException("未获取到该日志路径!");
      }
      FileObjectBO fileObjectBO = new FileObjectBO();
      String logFullPaths = localLogVO.getLogFullPaths();
      String logFullPaths = this.convertWindows2Linux(localLogVO.getLogFullPaths());
      // 判断是否是父目录
      if(!localLogVO.getHasChildren()){
         //只下载一个日志文件
@@ -281,6 +283,19 @@
   }
   /**
    * 下载之前将windows的路径格式转换为linux
    * @param fullPath
    * @return
    */
   private String convertWindows2Linux(String fullPath){
      String os = System.getProperty("os.name").toLowerCase();
      if (!os.contains("win")) {
         fullPath = fullPath.replace("\\", "/");
      }
      return fullPath;
   }
   /**
    * 删除日志文件
    * @param localLogVO 文件全路径集合
    * @throws ServerException