{
* 删除所有操作日志
*/
void delAllByInfo();
+
+ /**
+ * 保存日志数据
+ * @param username 用户
+ * @param browser 浏览器
+ * @param ip 请求IP
+ * @param joinPoint /
+ * @param log 日志实体
+ */
+ @Async
+ void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog log);
}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java
index 6067341..369f8dc 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java
@@ -2,10 +2,11 @@ package org.nl.system.service.logging.dao;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import java.time.LocalDateTime;
-import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
/**
*
@@ -16,6 +17,7 @@ import lombok.EqualsAndHashCode;
* @since 2023-05-08
*/
@Data
+@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@TableName("sys_log")
public class SysLog implements Serializable {
@@ -51,5 +53,8 @@ public class SysLog implements Serializable {
private String create_time;
-
+ public SysLog(String logType, Long time) {
+ this.log_type = logType;
+ this.time = time;
+ }
}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java
index 9042e2f..eac87a4 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java
@@ -1,20 +1,35 @@
package org.nl.system.service.logging.impl;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
+import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.reflect.MethodSignature;
import org.nl.common.domain.query.PageQuery;
+import org.nl.common.logging.annotation.Log;
+import org.nl.common.utils.StringUtils;
import org.nl.common.utils.ValidationUtil;
import org.nl.system.service.logging.ISysLogService;
import org.nl.system.service.logging.dao.SysLog;
import org.nl.system.service.logging.dao.mapper.SysLogMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -71,4 +86,60 @@ public class SysLogServiceImpl extends ServiceImpl impleme
public void delAllByInfo() {
logMapper.delete(new LambdaQueryWrapper().eq(SysLog::getLog_type, "INFO"));
}
+
+ @Override
+ public void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog logDto) {
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+ Method method = signature.getMethod();
+ Log aopLog = method.getAnnotation(Log.class);
+
+ // 方法路径
+ String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
+
+ // 描述
+ if (logDto != null) {
+ logDto.setDescription(aopLog.value());
+ }
+ assert logDto != null;
+ logDto.setRequest_ip(ip);
+
+ logDto.setAddress(StringUtils.getCityInfo(logDto.getRequest_ip()));
+ logDto.setMethod(methodName);
+ logDto.setUsername(username);
+ logDto.setParams(getParameter(method, joinPoint.getArgs()));
+ logDto.setBrowser(browser);
+ logDto.setLog_id(IdUtil.getSnowflake(1,1).nextIdStr());
+ logDto.setCreate_time(DateUtil.now());
+ logMapper.insert(logDto);
+ }
+ /**
+ * 根据方法和传入的参数获取请求参数
+ */
+ private String getParameter(Method method, Object[] args) {
+ List