| 
					
				 | 
			
			
				@@ -1,123 +1,154 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.yonge.log.interceptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.nio.charset.Charset; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.servlet.ServletException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.util.json.JsonUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.util.web.WebUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.log.dal.model.AuditLog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.log.model.AuditLogAnnotation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.log.service.AuditLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import io.swagger.annotations.ApiOperation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.io.IOUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.context.annotation.Bean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.scheduling.annotation.Async; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.method.HandlerMethod; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.util.json.JsonUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.util.web.WebUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.log.dal.model.AuditLog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.log.model.AuditLogAnnotation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.log.service.AuditLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.ServletException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.charset.Charset; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.concurrent.Executor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.concurrent.ThreadPoolExecutor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 日志审计的拦截器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class AuditLogInterceptor extends HandlerInterceptorAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private AuditLogService auditLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Value("${spring.application.name}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private String clientName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private String username; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private Integer userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private static List<String> ignoreLogUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		syncSaveLog(request,handler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Async 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private void syncSaveLog(HttpServletRequest request, Object handler){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			String servletPath = request.getServletPath(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			HandlerMethod handlerMethod = (HandlerMethod) handler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			AuditLogAnnotation anno = handlerMethod.getMethodAnnotation(AuditLogAnnotation.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(servletPath.contains("/task/") || servletPath.contains("/import/") ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			String substring = servletPath.substring(servletPath.lastIndexOf("/") + 1).toLowerCase(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(ignoreLogUrl == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ignoreLogUrl = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ignoreLogUrl.add("query"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ignoreLogUrl.add("get"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ignoreLogUrl.add("find"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ignoreLogUrl.add("list"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ignoreLogUrl.add("detail"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ignoreLogUrl.add("hasindexerrdata"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				ignoreLogUrl.add("newindex"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			for (String e : ignoreLogUrl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if(substring.contains(e)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			saveLog(operateName,servletPath,request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	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.setUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		auditLog.setOperateTime(sdf.format(new Date())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		auditLogService.insert(auditLog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public void setUsername(String username,Integer userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.username = username; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.userId = userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private AuditLogService auditLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Value("${spring.application.name}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private String clientName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private String username; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private Integer userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static List<String> ignoreLogUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 异步线程池配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Bean("syncSaveLog") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Executor asyncExecutor() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置核心线程数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.setCorePoolSize(10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置最大线程数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.setMaxPoolSize(100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置队列容量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.setQueueCapacity(1000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置线程活跃时间(秒) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.setKeepAliveSeconds(60); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置默认线程名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.setThreadNamePrefix("syncSaveLog-"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置拒绝策略 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 等待所有任务结束后再关闭线程池 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.setWaitForTasksToCompleteOnShutdown(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        executor.initialize(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return executor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        syncSaveLog(request, handler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Async("syncSaveLog") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void syncSaveLog(HttpServletRequest request, Object handler) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String servletPath = request.getServletPath(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HandlerMethod handlerMethod = (HandlerMethod) handler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            AuditLogAnnotation anno = handlerMethod.getMethodAnnotation(AuditLogAnnotation.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (servletPath.contains("/task/") || servletPath.contains("/import/")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String substring = servletPath.substring(servletPath.lastIndexOf("/") + 1).toLowerCase(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ignoreLogUrl == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ignoreLogUrl = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ignoreLogUrl.add("query"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ignoreLogUrl.add("get"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ignoreLogUrl.add("find"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ignoreLogUrl.add("list"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ignoreLogUrl.add("detail"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ignoreLogUrl.add("hasindexerrdata"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ignoreLogUrl.add("newindex"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (String e : ignoreLogUrl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (substring.contains(e)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveLog(operateName, servletPath, request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    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.setUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        auditLog.setOperateTime(sdf.format(new Date())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        auditLogService.insert(auditLog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setUsername(String username, Integer userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.username = username; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.userId = userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |