diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 35410ca..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# 默认忽略的文件
-/shelf/
-/workspace.xml
-# 基于编辑器的 HTTP 客户端请求
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/common-springboot-template-spring5-springboot2.iml b/.idea/common-springboot-template-spring5-springboot2.iml
deleted file mode 100644
index d6ebd48..0000000
--- a/.idea/common-springboot-template-spring5-springboot2.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 9452703..a818314 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,14 +1,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 305f729..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/template/common/src/main/java/{{.packagePath}}/common/response/FailData.java b/template/common/src/main/java/{{.packagePath}}/common/response/FailData.java
new file mode 100644
index 0000000..b64a4c7
--- /dev/null
+++ b/template/common/src/main/java/{{.packagePath}}/common/response/FailData.java
@@ -0,0 +1,26 @@
+package {{ .package }}.common.response;
+
+public class FailData {
+ private int code = 500;
+ private String message;
+
+ public FailData() {
+ }
+
+ public int getCode() {
+ return this.code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return this.message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+}
diff --git a/template/common/src/main/java/{{.packagePath}}/common/response/ResponseJsonExceptionResolver.java b/template/common/src/main/java/{{.packagePath}}/common/response/ResponseJsonExceptionResolver.java
index ce5c1f3..074381d 100644
--- a/template/common/src/main/java/{{.packagePath}}/common/response/ResponseJsonExceptionResolver.java
+++ b/template/common/src/main/java/{{.packagePath}}/common/response/ResponseJsonExceptionResolver.java
@@ -1,9 +1,6 @@
package {{ .package }}.common.response;
-import com.vs.common.util.rpc.pub.FailData;
-import com.vs.ox.common.exception.ErrorCode;
-import com.vs.ox.common.exception.IgnoredException;
-import com.vs.ox.common.utils.ObjectMapperFactory;
+import com.vs.ex.BizException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.InitializingBean;
@@ -54,21 +51,16 @@ public class ResponseJsonExceptionResolver extends AbstractHandlerExceptionResol
@Override
protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
- /**
- * web请求分页单独处理,应对antd框架
- */
FailData failData = new FailData();
failData.setMessage(ex.getMessage());
- if (ex instanceof IgnoredException) {
- IgnoredException realEx = (IgnoredException) ex;
- failData.setCode(realEx.getErrorCode());
- failData.setData(realEx.getData());
+ if (ex instanceof BizException) {
+ BizException realEx = (BizException) ex;
+ failData.setCode(realEx.getCode());
+ failData.setMessage(realEx.getMessage());
log.error("execute {} failed with exception", request.getRequestURL(), ex);
} else if (ex instanceof ConstraintViolationException) {
- failData.setCode(ErrorCode.WRONG_PARAMETER);
+ failData.setCode(400);
failData.setMessage(getMessage((ConstraintViolationException) ex));
- } else if (ex instanceof ErrorCode) {
- failData.setCode(((ErrorCode) ex).getErrorCode());
} else {
log.error("execute {} failed with exception", request.getRequestURL(), ex);
}
@@ -101,7 +93,7 @@ public class ResponseJsonExceptionResolver extends AbstractHandlerExceptionResol
}
param.append(node.getName());
}
- msgList.add("参数 [ " + param + " ] " + constraintViolation.getMessage());
+ msgList.add("Param [ " + param + " ] " + constraintViolation.getMessage());
}
return StringUtils.join(msgList.toArray(), ";");
}
diff --git a/template/common/src/main/java/{{.packagePath}}/common/response/ResponseJsonMethodReturnValueHandler.java b/template/common/src/main/java/{{.packagePath}}/common/response/ResponseJsonMethodReturnValueHandler.java
index a99592d..d79dcb5 100644
--- a/template/common/src/main/java/{{.packagePath}}/common/response/ResponseJsonMethodReturnValueHandler.java
+++ b/template/common/src/main/java/{{.packagePath}}/common/response/ResponseJsonMethodReturnValueHandler.java
@@ -1,7 +1,5 @@
package {{ .package }}.common.response;
-import com.vs.common.util.rpc.pub.SuccessData;
-import com.vs.ox.common.utils.ObjectMapperFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
@@ -15,9 +13,6 @@ import org.springframework.web.method.support.ModelAndViewContainer;
import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
-/**
- * 处理 Controller 里的返回值,从 Object转为Json
- */
public class ResponseJsonMethodReturnValueHandler implements HandlerMethodReturnValueHandler, InitializingBean {
private HttpMessageConverter messageConverter;
@@ -35,14 +30,17 @@ public class ResponseJsonMethodReturnValueHandler implements HandlerMethodReturn
@Override
public void handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
- mavContainer.setRequestHandled(true);
- Object result = returnValue;
- /**
- * Web分页请求的返回按照antd框架要求的格式,不转为SuccessData
- */
- result = result == null ? new SuccessData(Collections.emptyMap()) : new SuccessData(returnValue);
- ServletServerHttpResponse response = new ServletServerHttpResponse(webRequest.getNativeResponse(HttpServletResponse.class));
- messageConverter.write(result, new MediaType(MediaType.APPLICATION_JSON, Collections.singletonMap("charset", "utf-8")), response);
+ try {
+ mavContainer.setRequestHandled(true);
+ String customMessage = ResponseMessageHolder.getMessage();
+ int code = ResponseMessageHolder.getCode();
+ Object result = new SuccessData(code, returnValue, customMessage);
+
+ ServletServerHttpResponse response = new ServletServerHttpResponse(webRequest.getNativeResponse(HttpServletResponse.class));
+ messageConverter.write(result, new MediaType(MediaType.APPLICATION_JSON, Collections.singletonMap("charset", "utf-8")), response);
+ } finally {
+ ResponseMessageHolder.clear();
+ }
}
diff --git a/template/common/src/main/java/{{.packagePath}}/common/response/ResponseMessageHolder.java b/template/common/src/main/java/{{.packagePath}}/common/response/ResponseMessageHolder.java
new file mode 100644
index 0000000..eea6373
--- /dev/null
+++ b/template/common/src/main/java/{{.packagePath}}/common/response/ResponseMessageHolder.java
@@ -0,0 +1,44 @@
+package {{ .package }}.common.response;
+
+import java.lang.ThreadLocal;
+
+public class ResponseMessageHolder {
+ private static final ThreadLocal MESSAGE_HOLDER = new InheritableThreadLocal<>();
+
+ public static void setMessage(String message) {
+ MESSAGE_HOLDER.set(message);
+ }
+
+ public static String getMessage() {
+ return MESSAGE_HOLDER.get();
+ }
+
+ public static void clear() {
+ MESSAGE_HOLDER.remove();
+ }
+
+ private static final ThreadLocal CODE_HOLDER = new InheritableThreadLocal<>();
+
+ public static void setCode(Integer code) {
+ CODE_HOLDER.set(code);
+ }
+
+ public static Integer getCode() {
+ Integer code = CODE_HOLDER.get();
+ return code == null ? 200 : code;
+ }
+
+ public static void clearCode() {
+ CODE_HOLDER.remove();
+ }
+
+ public static void setCodeAndMessage(Integer code, String message) {
+ setCode(code);
+ setMessage(message);
+ }
+
+ public static void clearAll() {
+ MESSAGE_HOLDER.remove();
+ CODE_HOLDER.remove();
+ }
+}
\ No newline at end of file
diff --git a/template/common/src/main/java/{{.packagePath}}/common/response/SuccessData.java b/template/common/src/main/java/{{.packagePath}}/common/response/SuccessData.java
new file mode 100644
index 0000000..2ad201d
--- /dev/null
+++ b/template/common/src/main/java/{{.packagePath}}/common/response/SuccessData.java
@@ -0,0 +1,49 @@
+package {{ .package }}.common.response;
+
+public class SuccessData {
+ private int code = 200;
+ private Object data;
+ private String message;
+
+ public SuccessData() {
+ }
+
+ public SuccessData(Object data){
+ this.data = data;
+ }
+
+ public SuccessData(int code, Object data) {
+ this.code = code;
+ this.data = data;
+ }
+
+ public SuccessData(int code, Object data, String message) {
+ this.code = code;
+ this.data = data;
+ this.message = message;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public Object getData() {
+ return data;
+ }
+
+ public void setData(Object data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
\ No newline at end of file
diff --git a/template/common/src/main/java/{{.packagePath}}/common/utils/JsonUtils.java b/template/common/src/main/java/{{.packagePath}}/common/utils/JsonUtils.java
index 137bd3c..67344c8 100644
--- a/template/common/src/main/java/{{.packagePath}}/common/utils/JsonUtils.java
+++ b/template/common/src/main/java/{{.packagePath}}/common/utils/JsonUtils.java
@@ -7,7 +7,6 @@ import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.MissingNode;
-import com.vs.ox.common.utils.ObjectMapperFactory;
import java.io.IOException;
import java.util.Optional;
diff --git a/template/common/src/main/java/{{.packagePath}}/common/utils/ObjectMapperFactory.java b/template/common/src/main/java/{{.packagePath}}/common/utils/ObjectMapperFactory.java
new file mode 100644
index 0000000..096fb6f
--- /dev/null
+++ b/template/common/src/main/java/{{.packagePath}}/common/utils/ObjectMapperFactory.java
@@ -0,0 +1,23 @@
+package {{ .package }}.common.utils;
+
+import com.fasterxml.jackson.core.JsonParser.Feature;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import java.text.SimpleDateFormat;
+
+public class ObjectMapperFactory {
+ private static final ObjectMapper objectMapper = new ObjectMapper();
+
+ public ObjectMapperFactory() {
+ }
+
+ public static ObjectMapper getDefaultObjectMapper() {
+ return objectMapper.copy();
+ }
+
+ static {
+ objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).disable(SerializationFeature.FAIL_ON_EMPTY_BEANS).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).configure(Feature.ALLOW_SINGLE_QUOTES, true);
+ objectMapper.setDateFormat(new MyDateFormat());
+ }
+}
\ No newline at end of file