From 302d6d1adb9013760f95d5b4f1314fabb5e5cff2 Mon Sep 17 00:00:00 2001 From: lifulian <418601623@qq.com> Date: Wed, 5 Jun 2024 19:12:09 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=8F=91=E9=80=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuration/entity/user/User.java | 4 +- .../configuration/response/AuditAdvice.java | 62 ++++++++++++------- 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/realtime/protection/configuration/entity/user/User.java b/src/main/java/com/realtime/protection/configuration/entity/user/User.java index 73cb4f9..d1e12f1 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/user/User.java +++ b/src/main/java/com/realtime/protection/configuration/entity/user/User.java @@ -8,9 +8,9 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class User { - private Long userId; + private String userId; - private Long deptId; + private String deptId; private String username; diff --git a/src/main/java/com/realtime/protection/configuration/response/AuditAdvice.java b/src/main/java/com/realtime/protection/configuration/response/AuditAdvice.java index 9ff428b..39178d0 100644 --- a/src/main/java/com/realtime/protection/configuration/response/AuditAdvice.java +++ b/src/main/java/com/realtime/protection/configuration/response/AuditAdvice.java @@ -2,25 +2,33 @@ package com.realtime.protection.configuration.response; import com.realtime.protection.ProtectionApplication; import com.realtime.protection.configuration.entity.user.User; +import com.realtime.protection.configuration.entity.user.UserFull; +import jakarta.servlet.http.HttpSession; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.core.MethodParameter; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; +import org.springframework.http.server.ServletServerHttpRequest; +import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientRequestException; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; import reactor.core.publisher.Mono; - -import java.util.Objects; +/** + * 修改人: Fulian Li + * 功能:执行日志审计 + **/ @RestControllerAdvice(basePackageClasses = {ProtectionApplication.class}) @Slf4j +@ControllerAdvice public class AuditAdvice implements ResponseBodyAdvice { private final WebClient webClient = WebClient @@ -31,8 +39,8 @@ public class AuditAdvice implements ResponseBodyAdvice { @Data @AllArgsConstructor private static class AuditData { - private Long userId; - private Long deptId; + private String userId; + private String deptId; private String userName; private String deptName; private String menu; @@ -43,21 +51,16 @@ public class AuditAdvice implements ResponseBodyAdvice { @Override public boolean supports(MethodParameter returnType, Class> converterType) { - return false; +// return false; + return true; } @Override + public ResponseResult beforeBodyWrite(ResponseResult body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { - User user = getUserData(request); - - AuditData auditData = new AuditData( - user.getUserId(), user.getDeptId(), user.getUsername(), user.getUserDepart(), - "", - Objects.requireNonNull(returnType.getMethod()).getName(), - success(body), - body.getMessage() - ); + AuditData auditData = getAuditData(body, request); +// System.out.println("auditData-----------:"+auditData); Mono mono = webClient .post() @@ -67,7 +70,7 @@ public class AuditAdvice implements ResponseBodyAdvice { if (res.statusCode().equals(HttpStatus.OK)) { return res.bodyToMono(String.class); } - +// log.info("发送审计日志成功:{}",res); return null; }) .doOnError(WebClientRequestException.class, err -> @@ -78,12 +81,29 @@ public class AuditAdvice implements ResponseBodyAdvice { return body; } - private User getUserData(ServerHttpRequest request) { - return new User(1L, 1L, "xxx", "", "xxx"); - } - - private String success(ResponseResult body) { - return Boolean.toString(body.getCode() == 200); + @NotNull + private static AuditData getAuditData(ResponseResult body, ServerHttpRequest request) { + HttpSession session = ((ServletServerHttpRequest) request).getServletRequest().getSession(); + AuditData auditData; + if(session!=null || session.getAttribute("user")==null){ + auditData = new AuditData( + "xxx","xxx","xxx","xxx", + request.getURI().getPath(), + request.getMethod().toString(), + body.getCode()==200?"成功":"失败", + body.getMessage() + ); + }else { + UserFull user = (UserFull) session.getAttribute("user"); + auditData = new AuditData( + user.uid, user.getOrgCode(),user.name, user.getOrgName(), + request.getURI().getPath(), + request.getMethod().toString(), + body.getCode()==200?"成功":"失败", + body.getMessage() + ); + } + return auditData; } private static void handleMono(String result) {