diff --git a/src/main/java/cn/zhangdeman/exception/handler/GlobalExceptionHandler.java b/src/main/java/cn/zhangdeman/exception/handler/GlobalExceptionHandler.java index e0aa8f6..825a160 100644 --- a/src/main/java/cn/zhangdeman/exception/handler/GlobalExceptionHandler.java +++ b/src/main/java/cn/zhangdeman/exception/handler/GlobalExceptionHandler.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.context.request.WebRequest; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -45,11 +46,23 @@ public class GlobalExceptionHandler { // 处理参数校验异常(如@NotNull、@Size等校验失败)对应validate库 @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity handleValidationException(MethodArgumentNotValidException ex, HttpServletRequest httpServletRequest) { + List> errDetailList = new ArrayList<>(); List errors = new ArrayList<>(); - ex.getBindingResult().getFieldErrors().forEach(itemErr -> errors.add(itemErr.getField() + ":" + itemErr.getDefaultMessage())); + ex.getBindingResult().getFieldErrors().forEach(itemErr -> { + // message 层面显示的信息 + errors.add(itemErr.getField() + ":" + itemErr.getDefaultMessage()); + // err detail信息 + Map detail = new HashMap<>(); + detail.put("object_name", itemErr.getObjectName()); + detail.put("field", itemErr.getField()); + detail.put("input", itemErr.getRejectedValue()); + detail.put("code", itemErr.getCode()); + detail.put("binding_failure", itemErr.isBindingFailure()); + errDetailList.add(detail); + }); RuntimeContext runtimeContext = getRuntimeContext(httpServletRequest); - Response response = new Response<>(runtimeContext).failure("400", String.join(" - ", errors), ex.getFieldErrors()); + Response response = new Response<>(runtimeContext).failure("400", String.join(" - ", errors), errDetailList); return getResponseEntity(response); } diff --git a/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java index effca5e..422d7a7 100644 --- a/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java +++ b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java @@ -123,9 +123,9 @@ public class RequestInitFilter extends HttpFilter { List list = new ArrayList<>(); Instant instant = Instant.ofEpochMilli(runtimeContext.getStartTimeStamp()); ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault()); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); String formatted = zdt.format(formatter); - list.add(runtimeContext.getServerIp()); // 服务器IP + list.add(runtimeContext.getServerIp().replace(".", "")); // 服务器IP list.add(formatted); // 请求时间 list.add(UUID.randomUUID().toString()); // 随机字符串 String requestId = String.join("-", list); // 拼接成请求ID