|
@@ -2,7 +2,6 @@ package org.ssssssss.magicapi.provider;
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
-import org.ssssssss.magicapi.model.ApiInfo;
|
|
|
import org.ssssssss.magicapi.model.PageResult;
|
|
|
import org.ssssssss.magicapi.model.RequestEntity;
|
|
|
import org.ssssssss.script.exception.MagicScriptAssertException;
|
|
@@ -10,8 +9,6 @@ import org.ssssssss.script.exception.MagicScriptException;
|
|
|
import org.ssssssss.script.functions.ObjectConvertExtension;
|
|
|
import org.ssssssss.script.parsing.ast.statement.Exit;
|
|
|
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
@@ -25,14 +22,17 @@ public interface ResultProvider {
|
|
|
|
|
|
/**
|
|
|
* 根据异常内容构建结果
|
|
|
+ *
|
|
|
+ * @param requestEntity 请求信息
|
|
|
+ * @param root 异常对象
|
|
|
*/
|
|
|
- default Object buildResult(ApiInfo apiInfo, HttpServletRequest request, HttpServletResponse response, Throwable root, long requestTime) {
|
|
|
+ default Object buildResult(RequestEntity requestEntity, Throwable root) {
|
|
|
MagicScriptException se = null;
|
|
|
Throwable parent = root;
|
|
|
do {
|
|
|
if (parent instanceof MagicScriptAssertException) {
|
|
|
MagicScriptAssertException sae = (MagicScriptAssertException) parent;
|
|
|
- return buildResult(apiInfo, request, response, sae.getCode(), sae.getMessage(), requestTime);
|
|
|
+ return buildResult(requestEntity, sae.getCode(), sae.getMessage());
|
|
|
}
|
|
|
if (parent instanceof MagicScriptException) {
|
|
|
se = (MagicScriptException) parent;
|
|
@@ -40,56 +40,48 @@ public interface ResultProvider {
|
|
|
} while ((parent = parent.getCause()) != null);
|
|
|
logger.error("调用接口出错", root);
|
|
|
if (se != null) {
|
|
|
- return buildResult(apiInfo, request, response, -1, se.getSimpleMessage(), requestTime);
|
|
|
+ return buildResult(requestEntity, -1, se.getSimpleMessage());
|
|
|
}
|
|
|
- return buildResult(apiInfo, request, response, -1, root.getMessage(), requestTime);
|
|
|
+ return buildResult(requestEntity, -1, root.getMessage());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 构建JSON返回结果(默认状态码和状态说明)
|
|
|
+ * 构建JSON返回结果,code和message 默认为 1 success
|
|
|
*
|
|
|
- * @param apiInfo 接口信息,可能为NULL
|
|
|
- * @param request 可能为NULL
|
|
|
- * @param response 可能为NULL
|
|
|
- * @param data 数据内容,状态码和状态说明默认为1 "success"
|
|
|
+ * @param requestEntity 请求相关信息
|
|
|
+ * @param data 返回内容
|
|
|
*/
|
|
|
- default Object buildResult(ApiInfo apiInfo, HttpServletRequest request, HttpServletResponse response, Object data, long requestTime) {
|
|
|
+ default Object buildResult(RequestEntity requestEntity, Object data) {
|
|
|
if (data instanceof Exit.Value) {
|
|
|
Exit.Value exitValue = (Exit.Value) data;
|
|
|
Object[] values = exitValue.getValues();
|
|
|
int code = values.length > 0 ? ObjectConvertExtension.asInt(values[0], 1) : 1;
|
|
|
String message = values.length > 1 ? Objects.toString(values[1], "success") : "success";
|
|
|
- return buildResult(apiInfo, request, response, code, message, values.length > 2 ? values[2] : null, requestTime);
|
|
|
+ return buildResult(requestEntity, code, message, values.length > 2 ? values[2] : null);
|
|
|
}
|
|
|
- return buildResult(apiInfo, request, response, 1, "success", data, requestTime);
|
|
|
+ return buildResult(requestEntity, 1, "success", data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 构建JSON返回结果(无数据内容)
|
|
|
+ * 构建JSON返回结果
|
|
|
*
|
|
|
- * @param code 状态码
|
|
|
- * @param message 状态说明
|
|
|
+ * @param requestEntity 请求相关信息
|
|
|
+ * @param code 状态码
|
|
|
+ * @param message 状态说明
|
|
|
*/
|
|
|
- default Object buildResult(ApiInfo apiInfo, HttpServletRequest request, HttpServletResponse response, int code, String message, long requestTime) {
|
|
|
- return buildResult(apiInfo, request, response, code, message, null, requestTime);
|
|
|
- }
|
|
|
-
|
|
|
default Object buildResult(RequestEntity requestEntity, int code, String message) {
|
|
|
return buildResult(requestEntity, code, message, null);
|
|
|
}
|
|
|
|
|
|
- default Object buildResult(RequestEntity requestEntity, int code, String message, Object data) {
|
|
|
- return buildResult(requestEntity.getApiInfo(), requestEntity.getRequest(), requestEntity.getResponse(), code, message, data, requestEntity.getRequestTime());
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 构建JSON返回结果
|
|
|
*
|
|
|
- * @param code 状态码
|
|
|
- * @param message 状态说明
|
|
|
- * @param data 数据内容,可以通过data的类型判断是否是分页结果进行区分普通结果集和分页结果集
|
|
|
+ * @param requestEntity 请求相关信息
|
|
|
+ * @param code 状态码
|
|
|
+ * @param message 状态说明
|
|
|
+ * @param data 数据内容,可以通过data的类型判断是否是分页结果进行区分普通结果集和分页结果集
|
|
|
*/
|
|
|
- Object buildResult(ApiInfo apiInfo, HttpServletRequest request, HttpServletResponse response, int code, String message, Object data, long requestTime);
|
|
|
+ Object buildResult(RequestEntity requestEntity, int code, String message, Object data);
|
|
|
|
|
|
/**
|
|
|
* @param total 总数
|