Browse Source

fix:全局异常处理不再拼接字段名称

master
白凤吉 1 day ago
parent
commit
090627b7d3
  1. 12
      src/main/java/com/iflytop/handacid/app/common/handler/GlobalExceptionHandler.java
  2. 5
      src/main/java/com/iflytop/handacid/app/controller/FormulationController.java

12
src/main/java/com/iflytop/handacid/app/common/handler/GlobalExceptionHandler.java

@ -4,8 +4,10 @@ import com.iflytop.handacid.common.exception.AppException;
import com.iflytop.handacid.common.result.Result;
import com.iflytop.handacid.common.result.ResultCode;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.validation.BindException;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
@ -36,7 +38,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public Result<?> handleBodyValid(MethodArgumentNotValidException ex) {
String msg = ex.getBindingResult().getFieldErrors().stream()
.map(f -> f.getField() + ": " + f.getDefaultMessage())
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.joining("; "));
return Result.failed(ResultCode.INVALID_PARAMETER.getCode(), msg);
}
@ -45,11 +47,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler(ConstraintViolationException.class)
public Result<?> handleParamValid(ConstraintViolationException ex) {
String msg = ex.getConstraintViolations().stream()
.map(v -> {
String path = v.getPropertyPath().toString();
String field = path.substring(path.lastIndexOf('.') + 1);
return field + ": " + v.getMessage();
})
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining("; "));
return Result.failed(ResultCode.INVALID_PARAMETER.getCode(), msg);
}
@ -58,7 +56,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler(BindException.class)
public Result<?> handleBind(BindException ex) {
String msg = ex.getFieldErrors().stream()
.map(f -> f.getField() + ": " + f.getDefaultMessage())
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.joining("; "));
return Result.failed(ResultCode.INVALID_PARAMETER.getCode(), msg);
}

5
src/main/java/com/iflytop/handacid/app/controller/FormulationController.java

@ -14,6 +14,7 @@ import com.iflytop.handacid.common.result.ResultCode;
import com.iflytop.handacid.common.service.FormulationService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@ -52,7 +53,7 @@ public class FormulationController {
@PostMapping
@Operation(summary = "创建配方")
public Result<String> create(@RequestBody Formulation formulation) {
public Result<String> create(@Valid @RequestBody Formulation formulation) {
Formulation existFormulation = formulationService.getOne(new LambdaQueryWrapper<Formulation>().eq(Formulation::getSolutionId, formulation.getSolutionId())
.eq(Formulation::getConcentration, formulation.getConcentration()).eq(Formulation::getVolume, formulation.getVolume()).last("limit 1"));
if (existFormulation != null) {
@ -65,7 +66,7 @@ public class FormulationController {
@PutMapping
@Operation(summary = "修改配方")
public Result<String> update(@RequestBody Formulation formulation) {
public Result<String> update(@Valid @RequestBody Formulation formulation) {
boolean flag = formulationService.saveOrUpdate(formulation);
return flag ? Result.success() : Result.failed();
}

Loading…
Cancel
Save