Просмотр исходного кода

新增接口操作日志记录

szjbdgzl 2 лет назад
Родитель
Сommit
3fba903463

+ 0 - 2
ibps-base-root/modules/base-db/src/main/java/com/lc/ibps/base/db/ddd/dao/MyBatisQueryDaoImpl.java

@@ -150,7 +150,6 @@ public abstract class MyBatisQueryDaoImpl<PK extends java.io.Serializable, P ext
 	@Override
 	public P getByKey(String sqlKey, Object params) {
 		addDbTypeParam(params);
-		String statement = getNamespace() + StringPool.DOT + sqlKey;
 		return (P) sqlSessionTemplate().selectOne(getNamespace() + StringPool.DOT + sqlKey, params);
 	}
 
@@ -593,7 +592,6 @@ public abstract class MyBatisQueryDaoImpl<PK extends java.io.Serializable, P ext
 			return sqlSessionTemplate().selectList(getNamespace() + StringPool.DOT + sqlKey, params);
 		} else {
 			DefaultPage p = new DefaultPage(new RowBounds(queryFilter.getPage().getStartIndex(), queryFilter.getPage().getPageSize()));
-			String statement = getNamespace() + StringPool.DOT + sqlKey ;
 			return sqlSessionTemplate().selectList(getNamespace() + StringPool.DOT + sqlKey, params, p);
 		}
 	}

+ 13 - 10
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/aop/FlowDBLogAspect.java

@@ -25,7 +25,7 @@ import java.util.stream.Stream;
 public class FlowDBLogAspect {
 
     @Autowired
-    UpdateDataTableDao updateDataTableDao;
+    private UpdateDataTableDao updateDataTableDao;
 
     //流程步骤    请求路径                                        方法名
     //驳回发起人  /ibps/business/v3/bpm/task/reject/starter      rejectToStarter()
@@ -40,18 +40,21 @@ public class FlowDBLogAspect {
     //解锁       /ibps/business/v3/bpm/task/unlock              unlock()
     //反对       /ibps/business/v3/bpm/task/oppose              oppose()
 
+    // 2023-08-28 新增
+    //启动            /ibps/business/v3/bpm/instance/start
+    //保存草稿         /ibps/business/v3/bpm/instance/saveDraft
+
     // 声明环绕通知   定义切点 流程涉及到的接口
-    @Around("execution(* com.lc.ibps.bpmn.api.IBpmTaskService.*(..))")
+    @Around("execution(* com.lc.ibps.bpmn.api.*.*(..))")
     public Object around(ProceedingJoinPoint point) throws Throwable {
         HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
-        String methodName = point.getSignature().getName();
         // 执行目标方法
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
         Object result = point.proceed();
         stopWatch.stop();
 
-        if (ifAddLog(methodName)){
+        if (NAMES.contains(request.getRequestURI())){
             List<Object> paramList = Stream.of(point.getArgs())
                     .filter(args -> !(args instanceof ServletRequest))
                     .filter(args -> !(args instanceof ServletResponse))
@@ -59,7 +62,7 @@ public class FlowDBLogAspect {
             String printParamStr = paramList.size() == 1 ? JSONUtil.toJsonStr(paramList.get(0)) : JSONUtil.toJsonStr(paramList);
             // 记录操作日志
             Map<String,Object> map = new HashMap<>();
-            map.put("method_", methodName);
+            map.put("method_", point.getSignature().getName());
             map.put("params_", printParamStr);
             map.put("user_id_", ContextUtil.getCurrentUser().getUserId());
             map.put("user_name_", ContextUtil.getCurrentUser().getFullname());
@@ -72,10 +75,10 @@ public class FlowDBLogAspect {
         return result;
     }
 
-    public boolean ifAddLog(String methodName) {
-        String[] names = {"rejectToStarter", "agree", "save", "rejectToPrevious", "reject", "doEndProcess",
-                "suspendProcess", "recoverProcess", "lock", "unlock", "oppose"};
-        return Arrays.asList(names).contains(methodName);
-    }
+    private static final Set<String> NAMES = new HashSet<>(
+            Arrays.asList("/bpm/task/reject/starter", "/bpm/task/agree", "/bpm/task/save/task", "/bpm/task/reject/previous",
+                    "/bpm/task/reject", "/bpm/task/doEndProcess","/bpm/task/suspendProcess", "/bpm/task/recoverProcess",
+                    "/bpm/task/lock", "/bpm/task/unlock", "/bpm/task/oppose","/bpm/instance/start","/bpm/instance/saveDraft")
+    );
 
 }

+ 65 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/aop/IDataTemplateMsgAop.java

@@ -0,0 +1,65 @@
+package com.lc.ibps.aop;
+
+import cn.hutool.core.date.StopWatch;
+import cn.hutool.json.JSONUtil;
+import com.lc.ibps.base.web.context.ContextUtil;
+import com.lc.ibps.cloud.utils.RequestUtil;
+import com.lc.ibps.sysdata.dao.UpdateDataTableDao;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Aspect
+@Component
+public class IDataTemplateMsgAop {
+
+    @Autowired
+    private UpdateDataTableDao updateDataTableDao;
+
+    //删除表单数据     /ibps/business/v3/data/template/removeFormData
+
+    @Around("execution(* com.lc.ibps.form.api.IDataTemplateMgrService.*(..))")
+    public Object around(ProceedingJoinPoint point) throws Throwable {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        // 执行目标方法
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start();
+        Object result = point.proceed();
+        stopWatch.stop();
+
+        if ("removeFormData".equals(point.getSignature().getName())){
+            List<Object> paramList = Stream.of(point.getArgs())
+                    .filter(args -> !(args instanceof ServletRequest))
+                    .filter(args -> !(args instanceof ServletResponse))
+                    .collect(Collectors.toList());
+            String printParamStr = paramList.size() == 1 ? JSONUtil.toJsonStr(paramList.get(0)) : JSONUtil.toJsonStr(paramList);
+            // 记录操作日志
+            Map<String,Object> map = new HashMap<>();
+            map.put("method_", point.getSignature().getName());
+            map.put("params_", printParamStr);
+            map.put("user_id_", ContextUtil.getCurrentUser().getUserId());
+            map.put("user_name_", ContextUtil.getCurrentUser().getFullname());
+            map.put("time_", stopWatch.getTotalTimeMillis());
+            map.put("ip_", RequestUtil.getIpAddr(request));
+            map.put("response_", JSONUtil.toJsonStr(result));
+            map.put("uri_", request.getRequestURI());
+            updateDataTableDao.insertLog(map);
+        }
+        return result;
+    }
+
+}