From e7b3a5e891287b1291d2ac38f7c83d5d73bc7906 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期六, 08 十月 2022 08:49:01 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/aspect/LogAspect.java |  140 ++++++++++++++++++++++++++++++++++------------
 1 files changed, 102 insertions(+), 38 deletions(-)

diff --git a/src/main/java/com/lf/server/aspect/LogAspect.java b/src/main/java/com/lf/server/aspect/LogAspect.java
index cfc6e11..527b555 100644
--- a/src/main/java/com/lf/server/aspect/LogAspect.java
+++ b/src/main/java/com/lf/server/aspect/LogAspect.java
@@ -1,12 +1,22 @@
 package com.lf.server.aspect;
 
+import com.lf.server.entity.sys.OperateEntity;
+import com.lf.server.entity.sys.UsersEntity;
+import com.lf.server.helper.WebHelper;
+import com.lf.server.service.sys.OperateService;
+import com.lf.server.service.sys.TokenService;
+import io.swagger.annotations.Api;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Pointcut;
 import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.Method;
 
 /**
@@ -16,63 +26,117 @@
 @Aspect
 @Component
 public class LogAspect {
-    @Pointcut("")
-    public void logPointCut() {
+    @Autowired
+    private TokenService tokenService;
 
+    @Autowired
+    private OperateService operateService;
+
+    private final static String SELECT = "select";
+
+    private final static String INSERT = "insert";
+
+    private final static String UPDATE = "update";
+
+    private final static String DELETE = "delete";
+
+    private final static String UPLOAD = "upload";
+
+    private final static String DOWNLOAD = "download";
+
+    private static final Log log = LogFactory.getLog(LogAspect.class);
+
+    @Pointcut("@annotation(com.lf.server.aspect.SysLog)")
+    public void logPointCut() {
+        //
     }
 
+    /**
+     * 鐜粫閫氱煡 @Around锛屼篃鍙互浣跨敤 @Before (鍓嶇疆閫氱煡) 鎴� @After (鍚庣疆閫氱煡)
+     */
     @Around("logPointCut()")
     public Object around(ProceedingJoinPoint point) throws Throwable {
         long beginTime = System.currentTimeMillis();
+
         // 鎵ц鏂规硶
         Object result = point.proceed();
 
         // 鎵ц鏃堕暱(姣)
         long time = System.currentTimeMillis() - beginTime;
-        // System.out.println("time:"+time)
 
         // 淇濆瓨鏃ュ織
-        saveLogAction(point, time);
+        saveLog(point, time);
 
         return result;
     }
 
-    private void saveLogAction(ProceedingJoinPoint joinPoint, long time) {
-        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
-        Method method = signature.getMethod();
-        /*LogAction logAction = new LogAction();
-        com.landtool.lanbase.common.annotation.LogAction log = method.getAnnotation(com.landtool.lanbase.common.annotation.LogAction.class);
-        if(log != null){
-            // 娉ㄨВ涓婄殑鎻忚堪
-            String[] list = log.value().split(",");
-            logAction.setLargemodel(list[0]); //澶фā鍧�
-            logAction.setSmallmodel(list[1]);//灏忔ā鍧�
-            logAction.setRemark(list[2]);    //澶囨敞
-            logAction.setActiontype(list[3]);//鎿嶄綔绫诲瀷
+    /**
+     * 淇濆瓨鏃ュ織
+     */
+    private void saveLog(ProceedingJoinPoint joinPoint, long time) {
+        try {
+            MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+            Class<?> clazz = joinPoint.getTarget().getClass();
+            Method method = signature.getMethod();
 
-  			//logAction.setRemark(log.value());
-  			//logAction.setActiontype(log.value());
+            HttpServletRequest req = WebHelper.getRequest();
+            String url = req.getServletPath();
+
+            OperateEntity oe = new OperateEntity();
+            oe.setIp(WebHelper.getIpAddress(req));
+            oe.setUrl(url);
+            oe.setExec(time);
+
+            // 璁剧疆妯″潡
+            Api api = clazz.getAnnotation(Api.class);
+            if (api != null) {
+                oe.setModular(api.tags()[0]);
+            }
+
+            // 璁剧疆绫诲悕\鏂规硶鍚嶃�佺被鍒�
+            oe.setClazz(clazz.getName() + "." + method.getName());
+            oe.setType(getType(method.getName()));
+
+            // 璁剧疆澶囨敞
+            SysLog sysLog = method.getAnnotation(SysLog.class);
+            if (sysLog != null) {
+                oe.setBak(sysLog.value());
+            }
+
+            UsersEntity ue = tokenService.getCurrentUser(req);
+            if (ue != null) {
+                oe.setUserid(ue.getId());
+            }
+
+            operateService.insertOperate(oe);
+        } catch (Exception ex) {
+            log.error(ex.getStackTrace());
+        }
+    }
+
+    /**
+     * 鑾峰彇鎿嶄綔绫诲瀷
+     */
+    private static int getType(String methodName) {
+        if (methodName.indexOf(SELECT) > -1) {
+            return 1;
+        }
+        if (methodName.indexOf(INSERT) > -1) {
+            return 2;
+        }
+        if (methodName.indexOf(UPDATE) > -1) {
+            return 3;
+        }
+        if (methodName.indexOf(DELETE) > -1) {
+            return 4;
+        }
+        if (methodName.indexOf(UPLOAD) > -1) {
+            return 5;
+        }
+        if (methodName.indexOf(DOWNLOAD) > -1) {
+            return 6;
         }
 
-        //鑾峰彇request
-        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
-        String url=request.getServletPath();
-        logAction.setRequesturl(url);
-        //璁剧疆IP鍦板潃
-        logAction.setRequestip(IPUtils.getIpAddr(request));
-
-        //鐢ㄦ埛鍚�
-        Long userid = ((OrgUser) SecurityUtils.getSubject().getPrincipal()).getUserid();
-        logAction.setUserid(userid);
-
-        logAction.setAppid(loginConfig.getAppId());
-
-  		//logAction.setLargemodel(loginConfig.getAppFullName());
-
-
-
-
-        //淇濆瓨绯荤粺鏃ュ織
-        logActionService.save(logAction);*/
+        return 0;
     }
 }

--
Gitblit v1.9.3