package com.xuqm.tenant.controller; import com.xuqm.common.exception.BusinessException; import com.xuqm.common.model.ApiResponse; import org.springframework.http.ResponseEntity; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import java.util.stream.Collectors; @RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(BusinessException.class) public ResponseEntity> handle(BusinessException ex) { return ResponseEntity.status(ex.getCode()) .body(ApiResponse.error(ex.getCode(), ex.getMessage())); } @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity> handle(MethodArgumentNotValidException ex) { String message = ex.getBindingResult().getFieldErrors().stream() .map(FieldError::getDefaultMessage) .collect(Collectors.joining("; ")); return ResponseEntity.badRequest().body(ApiResponse.badRequest(message)); } @ExceptionHandler(Exception.class) public ResponseEntity> handle(Exception ex) { return ResponseEntity.internalServerError() .body(ApiResponse.error(500, "服务器内部错误: " + ex.getMessage())); } }