فهرست منبع

增加注解参数校验以及参数校验异常统一拦截

dengsixing 3 سال پیش
والد
کامیت
62c03b7ffc

+ 1 - 17
4dkankan-center-scene/pom.xml

@@ -16,6 +16,7 @@
     </properties>
 
     <dependencies>
+
         <dependency>
             <groupId>com.fdkankan</groupId>
             <artifactId>4dkankan-center-platform-api</artifactId>
@@ -51,23 +52,6 @@
             <version>2.0.0</version>
         </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>com.alibaba.cloud</groupId>-->
-<!--            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
-<!--            <exclusions>-->
-<!--                <exclusion>-->
-<!--                    <artifactId>jackson-annotations</artifactId>-->
-<!--                    <groupId>com.fasterxml.jackson.core</groupId>-->
-<!--                </exclusion>-->
-<!--            </exclusions>-->
-<!--        </dependency>-->
-
-<!--        <dependency>-->
-<!--            <groupId>com.fasterxml.jackson.core</groupId>-->
-<!--            <artifactId>jackson-annotations</artifactId>-->
-<!--            <version>2.12.3</version>-->
-<!--        </dependency>-->
-
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -51,7 +51,7 @@ public class SceneEditController extends BaseController {
      * @return com.fdkankan.common.response.ResultData
      **/
     @PostMapping(value = "/saveSceneEditInfo")
-    public SceneEditInfoVO saveSceneEditInfo(@RequestBody SceneEditInfoParamVO param){
+    public SceneEditInfoVO saveSceneEditInfo(@RequestBody @Validated SceneEditInfoParamVO param){
         return sceneEditInfoService.saveSceneEditInfo(param);
     }
 

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java

@@ -51,6 +51,9 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
     public SceneEditInfoVO saveSceneEditInfo(SceneEditInfoParamVO param) {
 
         ScenePro scenePro = sceneProService.findBySceneNum(param.getNum());
+        if(Objects.isNull(scenePro)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
         SceneEditInfo sceneEditInfoDb = this.getBySceneProId(scenePro.getId());
         SceneEditControls sceneEditControlsDb = null;
         if(Objects.nonNull(sceneEditInfoDb)){

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneEditInfoParamVO.java

@@ -5,6 +5,8 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotBlank;
+
 @Data
 @Builder
 @NoArgsConstructor
@@ -20,6 +22,7 @@ public class SceneEditInfoParamVO {
     /**
      * 场景吗
      */
+    @NotBlank(message = "场景码不能为空")
     private String num;
 
     private Long sceneProId;

+ 32 - 0
4dkankan-common/src/main/java/com/fdkankan/common/exception/GlobalExceptionHandler.java

@@ -1,15 +1,21 @@
 package com.fdkankan.common.exception;
 
 import cn.hutool.core.exceptions.ExceptionUtil;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 /**
  * 全局异常处理器
@@ -29,6 +35,32 @@ public class GlobalExceptionHandler {
     }
 
     /**
+     * 校验错误拦截处理
+     */
+    @ResponseBody
+    @ExceptionHandler(MethodArgumentNotValidException.class)
+    public ResultData validationBodyException(MethodArgumentNotValidException exception) {
+        BindingResult result = exception.getBindingResult();
+        String message = "";
+        if (result.hasErrors()) {
+            List<ObjectError> errors = result.getAllErrors();
+            if (errors != null) {
+                errors.forEach(p -> {
+                    FieldError fieldError = (FieldError) p;
+                    log.error("Data check failure : object{" + fieldError.getObjectName() + "},field{" + fieldError.getField() +
+                            "},errorMessage{" + fieldError.getDefaultMessage() + "}");
+
+                });
+                if (errors.size() > 0) {
+                    FieldError fieldError = (FieldError) errors.get(0);
+                    message = fieldError.getDefaultMessage();
+                }
+            }
+        }
+        return ResultData.error(ErrorCode.PARAM_FORMAT_ERROR.code(), message);
+    }
+
+    /**
      * 处理业务异常
      */
     @ResponseBody