1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package com.llisoft.pay.config;
- import java.util.Objects;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.boot.web.servlet.error.ErrorController;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import com.llisoft.common.constant.CodeEnum;
- import com.llisoft.common.vo.ResponseVo;
- /**
- * 框架级异常处理, 覆盖默认/error
- * 根据错误信息返回具体的json结果
- * 模仿 org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController
- * @author YangJie [2018年12月27日]
- */
- @RestController
- public class ErrorConfig implements ErrorController {
-
- private Logger logger = LoggerFactory.getLogger(ErrorConfig.class);
-
- @RequestMapping("/error")
- public ResponseVo<Object> error(HttpServletRequest request, HttpServletResponse response) {
- response.setStatus(200); // 状态码全部200
- Object statusCode = request.getAttribute("javax.servlet.error.status_code");
- if(Objects.nonNull(statusCode) && statusCode instanceof Integer) {
- int code = Integer.parseInt(statusCode.toString());
- if(code == CodeEnum.C400.getCode()) {
- logger.error("/error: {}", CodeEnum.C400.getMsg());
- return ResponseVo.build(CodeEnum.C400);
- }else if (code == CodeEnum.C401.getCode()) {
- logger.error("/error: {}", CodeEnum.C401.getMsg());
- return ResponseVo.build(CodeEnum.C401);
- }else if (code == CodeEnum.C402.getCode()) {
- logger.error("/error: {}", CodeEnum.C402.getMsg());
- return ResponseVo.build(CodeEnum.C402);
- }else if (code == CodeEnum.C403.getCode()) {
- logger.error("/error: {}", CodeEnum.C403.getMsg());
- return ResponseVo.build(CodeEnum.C403);
- }else if (code == CodeEnum.C404.getCode()) {
- logger.error("/error: {}", CodeEnum.C404.getMsg());
- return ResponseVo.build(CodeEnum.C404);
- }
- }
- logger.error("/error: {}", CodeEnum.C500.getMsg());
- return ResponseVo.build(CodeEnum.C500);
- }
-
- @Override
- public String getErrorPath() {
- return "/error";
- }
-
- }
|