|  | @@ -2,116 +2,28 @@ package com.ym.mec.web.interceptor;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  | -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 com.yonge.log.interceptor.AuditLogInterceptor;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | -import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  | +import org.springframework.context.annotation.Lazy;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Component;
 | 
	
		
			
				|  |  | -import org.springframework.web.method.HandlerMethod;
 | 
	
		
			
				|  |  | -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  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;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Component
 | 
	
		
			
				|  |  | -public class OperationLogInterceptor extends HandlerInterceptorAdapter {
 | 
	
		
			
				|  |  | +public class OperationLogInterceptor extends AuditLogInterceptor {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Autowired
 | 
	
		
			
				|  |  | +	@Lazy
 | 
	
		
			
				|  |  |  	private SysUserFeignService sysUserFeignService;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private AuditLogService auditLogService;
 | 
	
		
			
				|  |  | -	@Value("${spring.application.name}")
 | 
	
		
			
				|  |  | -	private String clientName;
 | 
	
		
			
				|  |  | -	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	private static List<String> ignoreLogUrl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
 | 
	
		
			
				|  |  | -		syncSaveLog(request, handler);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	public void syncSaveLog(HttpServletRequest request, Object handler) {
 | 
	
		
			
				|  |  | -		try {
 | 
	
		
			
				|  |  | -			SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | -			String username = "";
 | 
	
		
			
				|  |  | -			Integer userId = null;
 | 
	
		
			
				|  |  | -			if (sysUser != null && sysUser.getId() != null) {
 | 
	
		
			
				|  |  | -				username = sysUser.getRealName();
 | 
	
		
			
				|  |  | -				userId = sysUser.getId();
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			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,username,userId);
 | 
	
		
			
				|  |  | -				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,username,userId);
 | 
	
		
			
				|  |  | -		} catch (Exception e) {
 | 
	
		
			
				|  |  | -			e.printStackTrace();
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	private void saveLog(String operateName, String servletPath,
 | 
	
		
			
				|  |  | -						 HttpServletRequest request,String username,Integer userId) 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)));
 | 
	
		
			
				|  |  | +		SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +		if (sysUser != null && sysUser.getId() != null) {
 | 
	
		
			
				|  |  | +			request.setAttribute("userId",sysUser.getId());
 | 
	
		
			
				|  |  | +			request.setAttribute("username",sysUser.getRealName());
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		// 操作人
 | 
	
		
			
				|  |  | -		auditLog.setUsername(username);
 | 
	
		
			
				|  |  | -		auditLog.setUserId(userId);
 | 
	
		
			
				|  |  | -		auditLog.setOperateTime(sdf.format(new Date()));
 | 
	
		
			
				|  |  | -		auditLogService.insert(auditLog);
 | 
	
		
			
				|  |  | +		super.afterCompletion(request, response, handler, ex);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 |