Переглянути джерело

Merge branch 'master' into dev

mxd 3 роки тому
батько
коміт
f98235d8da

+ 6 - 2
magic-api/src/main/java/org/ssssssss/magicapi/controller/RequestHandler.java

@@ -103,6 +103,7 @@ public class RequestHandler extends MagicController {
 				.filter(it -> !paths.contains(it))
 				.forEach(paths::add);
 		Object bodyValue = readRequestBody(requestEntity.getRequest());
+		requestEntity.setRequestBody(bodyValue);
 		String scriptName = configuration.getGroupServiceProvider().getScriptName(info.getGroupId(), info.getName(), info.getPath());
 		MagicScriptContext context = createMagicScriptContext(scriptName, requestEntity, bodyValue);
 		requestEntity.setMagicScriptContext(context);
@@ -123,11 +124,15 @@ public class RequestHandler extends MagicController {
 			// 验证 header
 			doValidate(scriptName, "header", info.getHeaders(), headers, HEADER_INVALID);
 			// 设置 header 变量
-			context.set(VAR_NAME_HEADER, requestEntity.getHeaders());
+			context.set(VAR_NAME_HEADER, headers);
 			// 设置 session 变量
 			context.set(VAR_NAME_SESSION, new SessionContext(requestEntity.getRequest().getSession()));
 			// 设置 path 变量
 			context.set(VAR_NAME_PATH_VARIABLE, requestEntity.getPathVariables());
+			// 设置 body 变量
+			if(bodyValue != null){
+				context.set(VAR_NAME_REQUEST_BODY, bodyValue);
+			}
 			BaseDefinition requestBody = info.getRequestBodyDefinition();
 			if (requestBody != null) {
 				if(!CollectionUtils.isEmpty(requestBody.getChildren())){
@@ -136,7 +141,6 @@ public class RequestHandler extends MagicController {
 						put(requestBody.getName(), bodyValue);
 					}}, BODY_INVALID);
 				}
-				context.set(VAR_NAME_REQUEST_BODY, bodyValue);
 			}
 		} catch (ValidateException e) {
 			return afterCompletion(requestEntity, resultProvider.buildResult(requestEntity, RESPONSE_CODE_INVALID, e.getMessage()));

+ 6 - 1
magic-api/src/main/java/org/ssssssss/magicapi/model/RequestEntity.java

@@ -27,6 +27,7 @@ public class RequestEntity {
 	private Map<String, Object> parameters;
 	private Map<String, Object> pathVariables;
 	private MagicScriptContext magicScriptContext;
+	private Object requestBody;
 
 	private Map<String, Object> headers;
 
@@ -149,7 +150,11 @@ public class RequestEntity {
 	 * 获取 RequestBody
 	 */
 	public Object getRequestBody() {
-		return magicScriptContext == null ? null : this.magicScriptContext.get(VAR_NAME_REQUEST_BODY);
+		return this.requestBody;
+	}
+
+	public void setRequestBody(Object requestBody) {
+		this.requestBody = requestBody;
 	}
 
 	/**

+ 1 - 1
magic-api/src/main/java/org/ssssssss/magicapi/modules/BoundSql.java

@@ -140,7 +140,7 @@ public class BoundSql {
 
 	BoundSql copy(String newSqlOrXml) {
 		BoundSql boundSql = new BoundSql();
-		boundSql.setParameters(new ArrayList<>(this.parameters));
+		boundSql.parameters = this.parameters;
 		boundSql.bindParameters = this.bindParameters;
 		boundSql.sqlOrXml = newSqlOrXml;
 		boundSql.excludeColumns = this.excludeColumns;

+ 2 - 2
magic-api/src/main/java/org/ssssssss/magicapi/modules/mybatis/TrimSqlNode.java

@@ -29,11 +29,11 @@ public class TrimSqlNode extends SqlNode {
     }
 
     public void setSuffixOverrides(String suffixOverrides) {
-        this.suffixOverrides = suffixOverrides.toUpperCase();
+        this.suffixOverrides = suffixOverrides == null ? null : suffixOverrides.toUpperCase();
     }
 
     public void setPrefixOverrides(String prefixOverrides) {
-        this.prefixOverrides = prefixOverrides.toUpperCase();
+        this.prefixOverrides = prefixOverrides == null ? null : prefixOverrides.toUpperCase();
     }
 
     @Override

+ 18 - 4
magic-api/src/main/java/org/ssssssss/magicapi/modules/mybatis/WhereSqlNode.java

@@ -1,13 +1,27 @@
 package org.ssssssss.magicapi.modules.mybatis;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 对应XML中 <where>
+ *
  * @author zhangxu
  * @version : 2020-12-05
  */
 public class WhereSqlNode extends TrimSqlNode {
-    public WhereSqlNode() {
-        this.prefix = "WHERE";
-        this.prefixOverrides = "AND | OR | AND\n| OR\n| AND\r| OR\r| AND\t| OR\t";
-    }
+	public WhereSqlNode() {
+		this.prefix = "WHERE";
+		this.prefixOverrides = "AND | OR | AND\n| OR\n| AND\r| OR\r| AND\t| OR\t";
+	}
+
+	@Override
+	public String getSql(Map<String, Object> paramMap, List<Object> parameters) {
+		String sql = super.getSql(paramMap, parameters);
+		if (this.prefix.equals(sql.trim())) {
+			return "";
+		}
+		return sql;
+	}
+
 }

+ 8 - 2
magic-api/src/main/java/org/ssssssss/magicapi/script/ScriptManager.java

@@ -13,6 +13,8 @@ import java.util.Map;
  */
 public class ScriptManager {
 
+	private static final String EXPRESSION_PREFIX = "/* generated by execute expression */ return ";
+
 	/**
 	 * 执行脚本
 	 */
@@ -27,13 +29,17 @@ public class ScriptManager {
 	 * 执行脚本
 	 */
 	public static Object executeExpression(String script, MagicScriptContext context) {
-		return executeScript("/* generated by execute expression */ return " + script, context);
+		return executeScript(EXPRESSION_PREFIX + script, context);
 	}
 
 	/**
 	 * 执行脚本
 	 */
 	public static Object executeExpression(String script, Map<String, Object> paramMap) {
-		return executeExpression(script, new MagicScriptContext(paramMap));
+		MagicScriptContext context = MagicScriptContext.get();
+		if(context == null){
+			return executeExpression(script, new MagicScriptContext(paramMap));
+		}
+		return context.eval(script, paramMap);
 	}
 }