commit fce06536363bbb3b5020a0d3add3d3dca75fba5a Author: 刘力 Date: Sun May 1 15:50:23 2022 +0800 新建项目,统一异常处理,统一返回数据格式 diff --git a/common/pom.xml b/common/pom.xml new file mode 100644 index 0000000..b38f0cd --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,19 @@ + + + + yxk_StoreroomSystem + com.storeroom + 1.0 + + 4.0.0 + + common + + + 17 + 17 + + + \ No newline at end of file diff --git a/common/src/main/java/com/storeroom/exception/BaseException.java b/common/src/main/java/com/storeroom/exception/BaseException.java new file mode 100644 index 0000000..82a6317 --- /dev/null +++ b/common/src/main/java/com/storeroom/exception/BaseException.java @@ -0,0 +1,33 @@ +package com.storeroom.exception; + +import com.storeroom.exception.constant.Status; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 统一异常类 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class BaseException extends RuntimeException{ + + private Integer code; + private String message; + + + + public BaseException(Status status){ + super(status.getMessage()); + this.code=status.getCode(); + this.message=status.getMessage(); + + } + + + public BaseException(Integer code,String message){ + super(message); + this.code=code; + this.message=message; + } +} diff --git a/common/src/main/java/com/storeroom/exception/JsonException.java b/common/src/main/java/com/storeroom/exception/JsonException.java new file mode 100644 index 0000000..e43cde4 --- /dev/null +++ b/common/src/main/java/com/storeroom/exception/JsonException.java @@ -0,0 +1,23 @@ +package com.storeroom.exception; + + +import com.storeroom.exception.constant.Status; +import lombok.Getter; + + +/** + * Json 异常 + */ +@Getter +public class JsonException extends BaseException { + + public JsonException(Status status) { + super(status); + } + + public JsonException(Integer code,String message) { + super(code, message); + } + + +} diff --git a/common/src/main/java/com/storeroom/exception/PageException.java b/common/src/main/java/com/storeroom/exception/PageException.java new file mode 100644 index 0000000..64c666b --- /dev/null +++ b/common/src/main/java/com/storeroom/exception/PageException.java @@ -0,0 +1,19 @@ +package com.storeroom.exception; + +import com.storeroom.exception.constant.Status; +import lombok.Getter; + +/** + * 页面异常类 + */ +@Getter +public class PageException extends BaseException { + + public PageException(Status status) { + super(status); + } + + public PageException(Integer code, String message) { + super(code, message); + } +} diff --git a/common/src/main/java/com/storeroom/exception/constant/Status.java b/common/src/main/java/com/storeroom/exception/constant/Status.java new file mode 100644 index 0000000..6baba42 --- /dev/null +++ b/common/src/main/java/com/storeroom/exception/constant/Status.java @@ -0,0 +1,30 @@ +package com.storeroom.exception.constant; + + +import lombok.Getter; + +@Getter +public enum Status { + + //操作成功 + SUCCESS(200,"操作成功"), + //操作失败 + FAIL(999,"操作失败"), + //未知异常 + UNKNOWN_ERROR(500,"服务器内部错误"); + + + //状态码 + private final Integer code; + + //内容 + private final String message; + + //构造 + Status(Integer code,String message){ + this.code=code; + this.message=message; + + } + +} diff --git a/common/src/main/java/com/storeroom/exception/controller/TestController.java b/common/src/main/java/com/storeroom/exception/controller/TestController.java new file mode 100644 index 0000000..8e1b9c8 --- /dev/null +++ b/common/src/main/java/com/storeroom/exception/controller/TestController.java @@ -0,0 +1,27 @@ +package com.storeroom.exception.controller; + +import com.storeroom.exception.JsonException; +import com.storeroom.exception.PageException; +import com.storeroom.exception.constant.Status; +import com.storeroom.exception.handler.ApiResponse; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class TestController { + + @GetMapping + public ApiResponse jsonException(){ + throw new JsonException(Status.UNKNOWN_ERROR); + } + + public ModelAndView pageException(){ + throw new PageException(Status.UNKNOWN_ERROR); + } + + + + +} diff --git a/common/src/main/java/com/storeroom/exception/handler/ApiResponse.java b/common/src/main/java/com/storeroom/exception/handler/ApiResponse.java new file mode 100644 index 0000000..a24b29b --- /dev/null +++ b/common/src/main/java/com/storeroom/exception/handler/ApiResponse.java @@ -0,0 +1,153 @@ +package com.storeroom.exception.handler; + + +import com.storeroom.exception.constant.Status; +import lombok.Data; + +/** + * 通用的 API 接口封装 + */ +@Data +public class ApiResponse { + + + /** + * 状态码 + */ + private Integer code; + + /** + * 返回类容 + */ + private String message; + + /** + * 返回数据 + */ + private Object data; + + /** + * 调用接口时间 + */ + private long timestamp; + + + /** + * 无参构造 + */ + public ApiResponse() { + //调用时间赋值 + this.timestamp = System.currentTimeMillis(); + } + + + /** + * 泛型构造 + * + * @param data + */ + private ApiResponse(T data) { + this.code = Status.SUCCESS.getCode(); + this.message = Status.SUCCESS.getMessage(); + this.data = data; + } + + /** + * 无状态码构造 + * + * @param status + */ + private ApiResponse(Status status) { + if (null == status) { + return; + } + this.code = status.getCode(); + this.message = status.getMessage(); + } + + /** + * 全参构造函数 + * + * @param code + * @param message + * @param data + */ + private ApiResponse(Integer code, String message, Object data) { + this.code = code; + this.message = message; + this.data = data; + } + + /** + * 成功返回 + * + * @param data 数据 + * @param + * @return + */ + public static ApiResponse success(T data) { + ApiResponse apiResponse = new ApiResponse<>(); + apiResponse.setCode(Status.SUCCESS.getCode()); + apiResponse.setMessage(Status.SUCCESS.getMessage()); + apiResponse.setData(data); + return apiResponse; + } + + /** + * 返回默认失败 + * + * @param code 错误代码 + * @param message 错误信息 + * @param + * @return + */ + public static ApiResponse error(Integer code, String message) { + ApiResponse respons = new ApiResponse<>(); + respons.setCode(code); + respons.setMessage(message); + return respons; + } + + + /** + * 错误状态返回 + * + * @param status 状态码 + * @param + * @return + */ + public static ApiResponse error(Status status) { + return new ApiResponse(status); + } + + /** + * 服务器错误失败 + * + * @param + * @return + */ + public static ApiResponse error() { + return error(Status.UNKNOWN_ERROR); + } + + + public Integer getCode() { + return code; + } + + public ApiResponse setCode(Integer code) { + this.code = code; + return this; + } + + public Object getData(){ + return data; + } + + public ApiResponse setData(T data){ + this.data=data; + return this; + } + + +} diff --git a/common/src/main/java/com/storeroom/exception/handler/GlobalExceptionHandler.java b/common/src/main/java/com/storeroom/exception/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..9d66c09 --- /dev/null +++ b/common/src/main/java/com/storeroom/exception/handler/GlobalExceptionHandler.java @@ -0,0 +1,46 @@ +package com.storeroom.exception.handler; + +import com.storeroom.exception.BaseException; +import com.storeroom.exception.constant.Status; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; + + +/** + * 统一异常处理 + */ +@ControllerAdvice +@Slf4j +public class GlobalExceptionHandler { + + private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); + + + @ExceptionHandler(BaseException.class) + @ResponseBody + public ApiResponse exception(Exception e){ + log.error("全局异常信息 ex={}",e.getMessage()); + return ApiResponse.error(Status.UNKNOWN_ERROR.getCode(),e.getMessage()); + } + + @ExceptionHandler(NullPointerException.class) + @ResponseBody + public ApiResponse exceptionHandler(HttpServletRequest req,NullPointerException e) { + log.error("发生空指针异常!原因是:",e); + return ApiResponse.error(Status.UNKNOWN_ERROR); + } + + @ExceptionHandler(value = Exception.class) + @ResponseBody + public ApiResponse exceptionHandler(HttpServletRequest req,Exception e){ + log.error("未知异常 原因是:",e); + return ApiResponse.error(Status.UNKNOWN_ERROR); + } +} diff --git a/common/target/classes/com/storeroom/exception/BaseException.class b/common/target/classes/com/storeroom/exception/BaseException.class new file mode 100644 index 0000000..04eb730 Binary files /dev/null and b/common/target/classes/com/storeroom/exception/BaseException.class differ diff --git a/common/target/classes/com/storeroom/exception/JsonException.class b/common/target/classes/com/storeroom/exception/JsonException.class new file mode 100644 index 0000000..eabd84d Binary files /dev/null and b/common/target/classes/com/storeroom/exception/JsonException.class differ diff --git a/common/target/classes/com/storeroom/exception/PageException.class b/common/target/classes/com/storeroom/exception/PageException.class new file mode 100644 index 0000000..23cd545 Binary files /dev/null and b/common/target/classes/com/storeroom/exception/PageException.class differ diff --git a/common/target/classes/com/storeroom/exception/constant/Status.class b/common/target/classes/com/storeroom/exception/constant/Status.class new file mode 100644 index 0000000..31f7b8d Binary files /dev/null and b/common/target/classes/com/storeroom/exception/constant/Status.class differ diff --git a/common/target/classes/com/storeroom/exception/controller/TestController.class b/common/target/classes/com/storeroom/exception/controller/TestController.class new file mode 100644 index 0000000..f17c69c Binary files /dev/null and b/common/target/classes/com/storeroom/exception/controller/TestController.class differ diff --git a/common/target/classes/com/storeroom/exception/handler/ApiResponse.class b/common/target/classes/com/storeroom/exception/handler/ApiResponse.class new file mode 100644 index 0000000..2b5e668 Binary files /dev/null and b/common/target/classes/com/storeroom/exception/handler/ApiResponse.class differ diff --git a/common/target/classes/com/storeroom/exception/handler/GlobalExceptionHandler.class b/common/target/classes/com/storeroom/exception/handler/GlobalExceptionHandler.class new file mode 100644 index 0000000..1de7ebe Binary files /dev/null and b/common/target/classes/com/storeroom/exception/handler/GlobalExceptionHandler.class differ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..8d3e02a --- /dev/null +++ b/pom.xml @@ -0,0 +1,227 @@ + + + 4.0.0 + + com.storeroom + yxk_StoreroomSystem + pom + 1.0 + + common + + 智能库房综合管理系统 + + + UTF-8 + UTF-8 + 17 + 1.16 + 2.9.2 + 1.2.78 + 1.2.8 + 2.11.1 + 1.4.2.Final + + + + + org.springframework.boot + spring-boot-starter-parent + 2.6.1 + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springframework.boot + spring-boot-starter-security + + + + + org.springframework.boot + spring-boot-starter-cache + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + org.apache.commons + commons-pool2 + ${commons-pool2.version} + + + org.apache.commons + commons-lang3 + 3.12.0 + + + + + org.bgee.log4jdbc-log4j2 + log4jdbc-log4j2-jdbc4.1 + ${log4jdbc.version} + + + + + io.springfox + springfox-swagger2 + ${swagger.version} + + + io.swagger + swagger-annotations + + + io.swagger + swagger-models + + + + + io.springfox + springfox-swagger-ui + ${swagger.version} + + + io.swagger + swagger-annotations + 1.5.21 + + + io.swagger + swagger-models + 1.5.21 + + + + com.github.xiaoymin + swagger-bootstrap-ui + 1.9.6 + + + + + mysql + mysql-connector-java + 8.0.27 + runtime + + + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + + + org.lionsoul + ip2region + 1.7.2 + + + + + org.projectlombok + lombok + 1.18.22 + true + + + + + org.apache.poi + poi + 3.17 + + + org.apache.poi + poi-ooxml + 3.17 + + + xerces + xercesImpl + 2.12.0 + + + + + com.alibaba + fastjson + ${fastjson.version} + + + + + org.mapstruct + mapstruct + ${mapstruct.version} + + + org.mapstruct + mapstruct-processor + ${mapstruct.version} + provided + + + javax.inject + javax.inject + 1 + + + + + com.github.whvcse + easy-captcha + 1.6.2 + + + + org.openjdk.nashorn + nashorn-core + 15.3 + + + + + eu.bitwalker + UserAgentUtils + 1.21 + + + + javax.persistence + javax.persistence-api + 2.2 + + + + \ No newline at end of file