diff --git a/nladmin-system/nlsso-server/pom.xml b/nladmin-system/nlsso-server/pom.xml
index 95e778b..e2e6942 100644
--- a/nladmin-system/nlsso-server/pom.xml
+++ b/nladmin-system/nlsso-server/pom.xml
@@ -24,7 +24,7 @@
2.5.0
1.3.1.Final
1.31.0
- 5.7.14
+ 5.8.1
0.11.1
5.8.0
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/InterfaceLogType.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/InterfaceLogType.java
new file mode 100644
index 0000000..41c4896
--- /dev/null
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/InterfaceLogType.java
@@ -0,0 +1,24 @@
+package org.nl.modules.logging;
+
+/**
+ * @author: lyd
+ * @description:
+ * @Date: 2022/10/11
+ */
+public enum InterfaceLogType {
+ DEFAULT("默认"),
+ LMS_TO_ACS("LMS请求ACS"),
+ ACS_TO_LMS("ACS请求LMS"),
+ ACS_TO_LK("ACS请求立库"),
+ LK_TO_ACS("立库请求ACS");
+
+ private String desc;
+
+ InterfaceLogType(String desc) {
+ this.desc=desc;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+}
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/annotation/Log.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/annotation/Log.java
new file mode 100644
index 0000000..9898419
--- /dev/null
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/annotation/Log.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2019-2020 Zheng Jie
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.nl.modules.logging.annotation;
+
+import org.nl.modules.logging.InterfaceLogType;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author Zheng Jie
+ * @date 2018-11-24
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Log {
+ String value() default "";
+
+ /**
+ * 是否打印到日志文件
+ *
+ * @return
+ */
+ boolean isPrintToLogFile() default false;
+
+
+ /**
+ * 是否插入操作日志表
+ *
+ * @return
+ */
+ boolean isAddLogTable() default true;
+
+ /**
+ * 是否接口日志
+ *
+ * @return
+ */
+ boolean isInterfaceLog() default false;
+
+ /**
+ * 接口日志类型
+ *
+ * @return
+ */
+ InterfaceLogType interfaceLogType() default InterfaceLogType.DEFAULT;
+}
diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/aspect/LogAspect.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/aspect/LogAspect.java
new file mode 100644
index 0000000..04b0ec7
--- /dev/null
+++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/logging/aspect/LogAspect.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2019-2020 Zheng Jie
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.nl.modules.logging.aspect;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+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.nl.common.utils.IdUtil;
+import org.nl.modules.common.utils.RequestHolder;
+import org.nl.modules.common.utils.StringUtils;
+import org.nl.modules.common.utils.ThrowableUtil;
+import org.nl.modules.logging.domain.Log;
+import org.nl.modules.logging.service.LogService;
+import org.nl.modules.wql.core.bean.WQLObject;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+import java.util.*;
+
+/**
+ * @author Zheng Jie
+ * @date 2018-11-24
+ */
+@Component
+@Aspect
+@Slf4j
+public class LogAspect {
+
+ private final LogService logService;
+
+ public LogAspect(LogService logService) {
+ this.logService = logService;
+ }
+
+ /**
+ * 配置切入点
+ */
+ @Pointcut("@annotation(org.nl.modules.logging.annotation.Log)")
+ public void logPointcut() {
+ // 该方法无方法体,主要为了让同类中其他方法使用此切入点
+ }
+
+ /**
+ * 配置环绕通知,使用在方法logPointcut()上注册的切入点
+ *
+ * @param joinPoint join point for advice
+ */
+ @Around("logPointcut()")
+ public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
+ String trackId = UUID.randomUUID().toString();
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+ Method method = signature.getMethod();
+ // 方法路径
+ String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
+ String params = getParameter(method, joinPoint.getArgs());
+
+ org.nl.modules.logging.annotation.Log logInfo = method.getAnnotation(org.nl.modules.logging.annotation.Log.class);
+
+ //是否输出到日志文件
+ if (logInfo.isPrintToLogFile()) {
+ log.info("track_id:{},请求方法:{},请求方法参数:{}", trackId, methodName, params);
+ }
+ HttpServletRequest request = RequestHolder.getHttpServletRequest();
+ String requestIp = StringUtils.getIp(request);
+ Object result;
+ long startTime = System.currentTimeMillis();
+ try {
+ result = joinPoint.proceed();
+ //是否把日志存到日志表
+ if (logInfo.isAddLogTable()) {
+ Log log = new Log("INFO", System.currentTimeMillis() - startTime);
+ logService.save("", StringUtils.getBrowser(request), requestIp, joinPoint, log);
+ }
+ if (logInfo.isInterfaceLog()) {
+ try {
+ WQLObject interfaceLog = WQLObject.getWQLObject("sys_interface_log");
+ JSONObject json = new JSONObject();
+ json.put("log_id", IdUtil.getStringId());
+ json.put("description", logInfo.value());
+ json.put("log_type", logInfo.interfaceLogType().getDesc());
+ json.put("log_level", "1");
+ json.put("method", methodName);
+ json.put("params", getParameter(method, joinPoint.getArgs()));
+ json.put("request_ip", StringUtils.getIp(request));
+ json.put("time", System.currentTimeMillis() - startTime);
+ json.put("username", "");
+ json.put("address", StringUtils.getCityInfo(requestIp));
+ json.put("browser", StringUtils.getBrowser(request));
+ json.put("exception_detail", IdUtil.getStringId());
+ json.put("create_time", DateUtil.now());
+ json.put("return_result", result.toString());
+ interfaceLog.insert(json);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ } catch (Exception ex) {
+ log.error("track_id:{},error:{}", trackId, ex.getMessage());
+ Log log = new Log("ERROR", System.currentTimeMillis() - startTime);
+ log.setExceptionDetail(ThrowableUtil.getStackTrace(ex).getBytes());
+ logService.save("", StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint) joinPoint, log);
+ throw ex;
+ }
+ return result;
+ }
+
+ /**
+ * 根据方法和传入的参数获取请求参数
+ */
+ private String getParameter(Method method, Object[] args) {
+ List