Browse Source

根据接口地址,记录操作日志;

zouxuan 4 years ago
parent
commit
9e5905e5b9

+ 7 - 1
mec-common/audit-log/pom.xml

@@ -21,5 +21,11 @@
 			<groupId>com.yonge.mongodb</groupId>
 			<artifactId>mongo-db</artifactId>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.5.20</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
 </project>

+ 50 - 26
mec-common/audit-log/src/main/java/com/yonge/log/interceptor/AuditLogInterceptor.java

@@ -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) {

+ 0 - 3
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -8,9 +8,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-/**
- * Created by weiqinxiao on 2019/2/25.
- */
 @RestController
 @RequestMapping("/user")
 public class UserController {