From 9d0c2d041c171b13271cd135a5fc0ba746618664 Mon Sep 17 00:00:00 2001 From: zhou-hao Date: Fri, 13 Mar 2020 14:31:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=82=E5=B8=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/web/DeviceMessageController.java | 3 ++ .../configuration/ErrorControllerAdvice.java | 36 +++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/DeviceMessageController.java b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/DeviceMessageController.java index 291b5131..d01a3d49 100644 --- a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/DeviceMessageController.java +++ b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/DeviceMessageController.java @@ -157,6 +157,9 @@ public class DeviceMessageController { private static Function mapReply(Function function) { return reply -> { + if (ErrorCode.REQUEST_HANDLING.name().equals(reply.getCode())) { + throw new DeviceOperationException(ErrorCode.REQUEST_HANDLING, reply.getMessage()); + } if (!reply.isSuccess()) { throw new BusinessException(reply.getMessage(), reply.getCode()); } diff --git a/jetlinks-standalone/src/main/java/org/jetlinks/community/standalone/configuration/ErrorControllerAdvice.java b/jetlinks-standalone/src/main/java/org/jetlinks/community/standalone/configuration/ErrorControllerAdvice.java index 0f8373f6..452d1a38 100644 --- a/jetlinks-standalone/src/main/java/org/jetlinks/community/standalone/configuration/ErrorControllerAdvice.java +++ b/jetlinks-standalone/src/main/java/org/jetlinks/community/standalone/configuration/ErrorControllerAdvice.java @@ -2,10 +2,12 @@ package org.jetlinks.community.standalone.configuration; import lombok.extern.slf4j.Slf4j; import org.hswebframework.web.crud.web.ResponseMessage; +import org.jetlinks.core.enums.ErrorCode; import org.jetlinks.core.exception.DeviceOperationException; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; @@ -17,9 +19,37 @@ import reactor.core.publisher.Mono; public class ErrorControllerAdvice { @ExceptionHandler - @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) - public Mono> handleException(DeviceOperationException e) { - return Mono.just(ResponseMessage.error(e.getCode().name().toLowerCase(), e.getMessage())); + public Mono>> handleException(DeviceOperationException e) { + + //202 + if (e.getCode() == ErrorCode.REQUEST_HANDLING) { + return Mono.just(ResponseEntity + .status(HttpStatus.ACCEPTED) + .body(ResponseMessage.error(202, + e.getCode().name().toLowerCase(), + e.getMessage()) + .result("消息已发往设备,处理中..."))); + } + if (e.getCode() == ErrorCode.FUNCTION_UNDEFINED + || e.getCode() == ErrorCode.PARAMETER_UNDEFINED) { + //404 + return Mono.just(ResponseEntity + .status(HttpStatus.NOT_FOUND) + .body(ResponseMessage.error(e.getCode().name().toLowerCase(), e.getMessage()))); + } + + if (e.getCode() == ErrorCode.PARAMETER_UNDEFINED) { + //400 + return Mono.just(ResponseEntity + .status(HttpStatus.BAD_REQUEST) + .body(ResponseMessage.error(e.getCode().name().toLowerCase(), e.getMessage()))); + } + + //500 + return Mono.just(ResponseEntity + .status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(ResponseMessage.error(e.getCode().name().toLowerCase(), e.getMessage()))); } + }