36 行
1.4 KiB
Java
36 行
1.4 KiB
Java
|
|
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<ApiResponse<Void>> handle(BusinessException ex) {
|
||
|
|
return ResponseEntity.status(ex.getCode())
|
||
|
|
.body(ApiResponse.error(ex.getCode(), ex.getMessage()));
|
||
|
|
}
|
||
|
|
|
||
|
|
@ExceptionHandler(MethodArgumentNotValidException.class)
|
||
|
|
public ResponseEntity<ApiResponse<Void>> 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<ApiResponse<Void>> handle(Exception ex) {
|
||
|
|
return ResponseEntity.internalServerError()
|
||
|
|
.body(ApiResponse.error(500, "服务器内部错误: " + ex.getMessage()));
|
||
|
|
}
|
||
|
|
}
|