|
@@ -1,16 +1,16 @@
|
|
|
package com.yonge.log.interceptor;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.lang.reflect.Array;
|
|
|
import java.nio.charset.Charset;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
|
|
|
import javax.servlet.ServletException;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
import org.apache.commons.io.IOUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -41,6 +41,10 @@ public class AuditLogInterceptor extends HandlerInterceptorAdapter {
|
|
|
|
|
|
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
+ private static List<String> logUrl;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
|
|
|
|
|
@@ -49,34 +53,54 @@ public class AuditLogInterceptor extends HandlerInterceptorAdapter {
|
|
|
|
|
|
@Override
|
|
|
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
|
|
-
|
|
|
+ String servletPath = request.getServletPath();
|
|
|
HandlerMethod handlerMethod = (HandlerMethod) handler;
|
|
|
AuditLogAnnotation anno = handlerMethod.getMethodAnnotation(AuditLogAnnotation.class);
|
|
|
-
|
|
|
- if (anno != null) {
|
|
|
- AuditLog auditLog = new AuditLog();
|
|
|
- auditLog.setOperateName(anno.operateName());
|
|
|
- if(StringUtils.isNotBlank(anno.interfaceURL())){
|
|
|
- auditLog.setInterfaceUrl(anno.interfaceURL());
|
|
|
- }else{
|
|
|
- auditLog.setInterfaceUrl(request.getRequestURI());
|
|
|
- }
|
|
|
- auditLog.setToken(request.getHeader("Authorization"));
|
|
|
- auditLog.setService(clientName);
|
|
|
- auditLog.setUserIp(WebUtil.getRemoteIp(request));
|
|
|
-
|
|
|
- Map<String, Object> params = WebUtil.getParameterMap(request);
|
|
|
- if (params == null || params.size() == 0) {
|
|
|
- auditLog.setInputParams(IOUtils.toString(request.getInputStream(), Charset.defaultCharset()));
|
|
|
- } else {
|
|
|
- auditLog.setInputParams(JsonUtil.toJSONString(WebUtil.getParameterMap(request)));
|
|
|
+ ApiOperation apiOperation = handlerMethod.getMethodAnnotation(ApiOperation.class);
|
|
|
+ String operateName = null;
|
|
|
+ if(StringUtils.isEmpty(operateName) && apiOperation != null){
|
|
|
+ operateName = apiOperation.value();
|
|
|
+ }
|
|
|
+ if(StringUtils.isEmpty(operateName) && anno != null){
|
|
|
+ operateName = anno.operateName();
|
|
|
+ }
|
|
|
+ if(anno != null){
|
|
|
+ saveLog(operateName,servletPath,request);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String substring = servletPath.substring(servletPath.lastIndexOf("/") + 1).toLowerCase();
|
|
|
+ if(logUrl == null){
|
|
|
+ logUrl = new ArrayList<>();
|
|
|
+ logUrl.add("update");
|
|
|
+ logUrl.add("modify");
|
|
|
+ logUrl.add("del");
|
|
|
+ }
|
|
|
+ for (String e : logUrl) {
|
|
|
+ if(substring.contains(e)){
|
|
|
+ saveLog(operateName,servletPath,request);
|
|
|
+ break;
|
|
|
}
|
|
|
- // 操作人
|
|
|
- auditLog.setUsername(username);
|
|
|
- auditLog.setOperateTime(sdf.format(new Date()));
|
|
|
- auditLogService.insert(auditLog);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ private void saveLog(String operateName,String servletPath,HttpServletRequest request) throws IOException {
|
|
|
+ AuditLog auditLog = new AuditLog();
|
|
|
+ auditLog.setOperateName(operateName);
|
|
|
+ auditLog.setInterfaceUrl(servletPath);
|
|
|
+ auditLog.setToken(request.getHeader("Authorization"));
|
|
|
+ auditLog.setService(clientName);
|
|
|
+ auditLog.setUserIp(WebUtil.getRemoteIp(request));
|
|
|
+
|
|
|
+ Map<String, Object> params = WebUtil.getParameterMap(request);
|
|
|
+ if (params == null || params.size() == 0) {
|
|
|
+ auditLog.setInputParams(IOUtils.toString(request.getInputStream(), Charset.defaultCharset()));
|
|
|
+ } else {
|
|
|
+ auditLog.setInputParams(JsonUtil.toJSONString(WebUtil.getParameterMap(request)));
|
|
|
+ }
|
|
|
+ // 操作人
|
|
|
+ auditLog.setUsername(username);
|
|
|
+ auditLog.setOperateTime(sdf.format(new Date()));
|
|
|
+ auditLogService.insert(auditLog);
|
|
|
}
|
|
|
|
|
|
public void setUsername(String username) {
|