2 Revize 782cc9f2cc ... 6faeaf12ef

Autor SHA1 Zpráva Datum
  yonghuifan 6faeaf12ef Merge remote-tracking branch 'origin/master' před 1 rokem
  yonghuifan 2970037c76 文件下载日志添加 před 1 rokem

+ 38 - 0
src/main/java/com/dragon/tj/portal/component/interceptor/FileInterceptor.java

@@ -0,0 +1,38 @@
+package com.dragon.tj.portal.component.interceptor;
+
+import com.dragon.tj.portal.service.FileManageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Component
+public class FileInterceptor implements HandlerInterceptor {
+
+    @Autowired
+    FileManageService fileManageService;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
+        String requestURI = request.getRequestURI();
+        String ip = request.getRemoteAddr();
+        //写入日志
+        fileManageService.fileLog(requestURI,ip);
+
+        return true;
+    }
+
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+
+    }
+}

+ 11 - 0
src/main/java/com/dragon/tj/portal/component/page/FilePathConfig.java

@@ -1,7 +1,10 @@
 package com.dragon.tj.portal.component.page;
 
+import com.dragon.tj.portal.component.interceptor.FileInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
@@ -11,6 +14,14 @@ public class FilePathConfig implements WebMvcConfigurer {
     @Value("${dragon.file.path}")
     private String localPath;
 
+    @Autowired
+    private FileInterceptor fileInterceptor;
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(fileInterceptor).addPathPatterns("/file/**");
+    }
+
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/file/**")//虚拟地址

+ 2 - 0
src/main/java/com/dragon/tj/portal/service/FileManageService.java

@@ -13,4 +13,6 @@ public interface FileManageService {
     Page<FileInfo> search(PageParam<FileInfo> pageParam);
 
     List<FileInfo> top(String type, Integer num);
+
+    void fileLog(String uri,String ip);
 }

+ 30 - 0
src/main/java/com/dragon/tj/portal/service/impl/FileManageServiceImpl.java

@@ -1,14 +1,18 @@
 package com.dragon.tj.portal.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dragon.tj.portal.auth.model.LoginUser;
 import com.dragon.tj.portal.auth.util.SecurityUtils;
 import com.dragon.tj.portal.common.util.UploadUtils;
 import com.dragon.tj.portal.entity.FileInfo;
 import com.dragon.tj.portal.entity.PageParam;
+import com.dragon.tj.portal.entity.SysLog;
 import com.dragon.tj.portal.mapper.FileManageMapper;
 import com.dragon.tj.portal.service.FileManageService;
+import com.dragon.tj.portal.service.SysLogService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -34,6 +38,9 @@ public class FileManageServiceImpl implements FileManageService {
     @Autowired
     private FileManageMapper fileManageMapper;
 
+    @Autowired
+    private SysLogService sysLogServices;
+
     @Override
     public FileInfo upload(MultipartFile file,Integer type) {
         String originalFilename = file.getOriginalFilename();
@@ -111,4 +118,27 @@ public class FileManageServiceImpl implements FileManageService {
         List<String> list = Arrays.asList(type.split(","));
         return fileManageMapper.getTop(list,num);
     }
+
+    @Override
+    public void fileLog(String uri,String ip) {
+        QueryWrapper<FileInfo> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotEmpty(uri), "url", uri);
+        FileInfo fileInfo = fileManageMapper.selectOne(wrapper);
+        fileInfo.setDownloads(fileInfo.getDownloads() + 1);
+
+        fileManageMapper.updateById(fileInfo);
+
+        //添加日志
+        SysLog sysLog = new SysLog();
+        sysLog.setRemoteAddr(ip);
+        sysLog.setRequestUri(uri);
+//        LoginUser loginUser = SecurityUtils.getLoginUser();
+//        sysLog.setCreateBy(loginUser);
+
+        sysLog.setTitle("file_download");
+        sysLog.setParams(JSON.toJSONString(fileInfo));
+
+        sysLogServices.save(sysLog);
+
+    }
 }