Просмотр исходного кода

修复ScriptObject解析的bug

zhourui 5 лет назад
Родитель
Сommit
61a3698da1

+ 1 - 1
o2server/configSample/dingding.json

@@ -19,7 +19,7 @@
   "###agentId": "agentId###",
   "###appKey": "应用的key,唯一标识###",
   "###appSecret": "应用的密钥###",
-  "###syncCron": "组织同步cron,默认每10分钟同步一次.###",
+  "###syncCron": "回调信号触发同步检查,默认每10分钟运行一次,如果期间内有钉钉回调信号接收到,那么触发同步任务进行人员同步.###",
   "###forceSyncCron": "强制拉入同步cron,默认在每天的8点和12点强制进行同步.###",
   "###oapiAddress": "oapi服务器地址###",
   "###workUrl": "钉钉消息打开工作的url地址,如:http://dev.o2oa.net/x_desktop/###",

+ 1 - 1
o2server/configSample/node_127.0.0.1.json

@@ -108,7 +108,7 @@
     "###excludes": "在此节点上不存储的类,和includes一起设置实际存储的类,可以使用通配符*###",
     "###jmxEnable": "是否启动jmx,如果启用,可以通过本地的jmx客户端进行访问,不支持远程jmx客户端.###",
     "###cacheSize": "H2数据库缓存大小,设置H2用于作为缓存的内存大小,以M作为单位,这里默认为512M.###",
-    "###logLevel": "默认日志级别,FATAL, ERROR, WARN, INFO, TRACE. 完的配置为DefaultLevel\u003dWARN, Tool\u003dTRACE, Enhance\u003dTRACE, METADATA\u003dTRACE, Runtime\u003dTRACE, Query\u003dTRACE, DataCache\u003dTRACE, JDBC\u003dTRACE, SQL\u003dTRACE###",
+    "###logLevel": "默认日志级别,FATAL, ERROR, WARN, INFO, TRACE. 完的配置为DefaultLevel\u003dWARN, Tool\u003dTRACE, Enhance\u003dTRACE, METADATA\u003dTRACE, Runtime\u003dTRACE, Query\u003dTRACE, DataCache\u003dTRACE, JDBC\u003dTRACE, SQL\u003dTRACE###",
     "###maxTotal": "最大使用连接数###",
     "###maxIdle": "最大空闲连接数###",
     "###statEnable": "启用统计,默认启用###",

+ 1 - 1
o2server/configSample/qiyeweixin.json

@@ -17,7 +17,7 @@
   "attendanceSyncAgentId": "",
   "attendanceSyncSecret": "",
   "###enable": "是否启用.###",
-  "###syncCron": "拉入同步cron,默认每10分钟同步一次.###",
+  "###syncCron": "回调信号触发同步检查,默认每10分钟运行一次,如果期间内有企业微信回调信号接收到,那么触发同步任务进行人员同步.###",
   "###forceSyncCron": "强制拉入同步cron,默认在每天的8点和12点强制进行同步.###",
   "###apiAddress": "api服务器地址###",
   "###corpId": "企业微信corpId###",

+ 1 - 1
o2server/configSample/zhengwuDingding.json

@@ -21,7 +21,7 @@
   "###appId": "政务钉钉appId###",
   "###appSecret": "政务钉钉appSecret###",
   "###agentId": "政务钉钉agentId###",
-  "###syncCron": "拉入同步cron,默认每10分钟同步一次.###",
+  "###syncCron": "回调信号触发同步检查,默认每10分钟运行一次,如果期间内有政务钉钉回调信号接收到,那么触发同步任务进行人员同步.###",
   "###forceSyncCron": "强制拉入同步cron,默认在每天的8点和12点强制进行同步.###",
   "###oapiAddress": "oapi服务器地址###",
   "###corpId": "政务钉钉corpId###",

+ 1 - 1
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/DataServer.java

@@ -57,7 +57,7 @@ public class DataServer extends ConfigObject {
 	private Boolean jmxEnable;
 	@FieldDescribe("H2数据库缓存大小,设置H2用于作为缓存的内存大小,以M作为单位,这里默认为512M.")
 	private Integer cacheSize;
-	@FieldDescribe("默认日志级别,FATAL, ERROR, WARN, INFO, TRACE. 完的配置为DefaultLevel=WARN, Tool=TRACE, Enhance=TRACE, METADATA=TRACE, Runtime=TRACE, Query=TRACE, DataCache=TRACE, JDBC=TRACE, SQL=TRACE")
+	@FieldDescribe("默认日志级别,FATAL, ERROR, WARN, INFO, TRACE. 完的配置为DefaultLevel=WARN, Tool=TRACE, Enhance=TRACE, METADATA=TRACE, Runtime=TRACE, Query=TRACE, DataCache=TRACE, JDBC=TRACE, SQL=TRACE")
 	private String logLevel;
 	@FieldDescribe("最大使用连接数")
 	private Integer maxTotal;

+ 13 - 18
o2server/x_base_core_project/src/main/java/com/x/base/core/project/script/ScriptFactory.java

@@ -3,30 +3,26 @@ package com.x.base.core.project.script;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
-import java.util.regex.Matcher;
 
 import javax.script.Compilable;
 import javax.script.CompiledScript;
-import javax.script.ScriptContext;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineManager;
-import javax.script.ScriptException;
-import javax.script.SimpleScriptContext;
 
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.text.StringEscapeUtils;
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.project.config.Config;
-import com.x.base.core.project.tools.StringTools;
+import com.x.base.core.project.tools.PropertyTools;
 
 import jdk.nashorn.api.scripting.ScriptObjectMirror;
+import jdk.nashorn.internal.runtime.ScriptObject;
 
 public class ScriptFactory {
 
@@ -242,10 +238,7 @@ public class ScriptFactory {
 						if (obj instanceof CharSequence) {
 							list.add(Objects.toString(obj, ""));
 						} else {
-							Object d = PropertyUtils.getProperty(obj, JpaObject.DISTINGUISHEDNAME);
-							if (null != d) {
-								list.add(Objects.toString(d, ""));
-							}
+							list.add(PropertyTools.getOrElse(obj, JpaObject.DISTINGUISHEDNAME, String.class, ""));
 						}
 					}
 				}
@@ -258,18 +251,20 @@ public class ScriptFactory {
 							if (obj instanceof CharSequence) {
 								list.add(Objects.toString(obj, ""));
 							} else {
-								Object d = PropertyUtils.getProperty(obj, JpaObject.DISTINGUISHEDNAME);
-								if (null != d) {
-									list.add(Objects.toString(d, ""));
+								if (obj instanceof ScriptObject) {
+									ScriptObject so = (ScriptObject) obj;
+									if (so.containsKey(JpaObject.DISTINGUISHEDNAME)) {
+										list.add(Objects.toString(so.get(JpaObject.DISTINGUISHEDNAME), ""));
+									}
+								} else {
+									list.add(PropertyTools.getOrElse(obj, JpaObject.DISTINGUISHEDNAME, String.class,
+											""));
 								}
 							}
 						}
 					}
 				} else {
-					Object d = PropertyUtils.getProperty(o, JpaObject.DISTINGUISHEDNAME);
-					if (null != d) {
-						list.add(Objects.toString(d, ""));
-					}
+					list.add(PropertyTools.getOrElse(som, JpaObject.DISTINGUISHEDNAME, String.class, ""));
 				}
 			}
 		}

+ 17 - 4
o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/PropertyTools.java

@@ -1,14 +1,27 @@
 package com.x.base.core.project.tools;
 
+import java.lang.reflect.Field;
+
 import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.lang3.reflect.FieldUtils;
 
 public class PropertyTools {
 	@SuppressWarnings("unchecked")
 	public static <T> T getOrElse(Object bean, String name, Class<T> cls, T defaultObject) throws Exception {
-		if ((null != bean) && PropertyUtils.isReadable(bean, name)) {
-			Object o = PropertyUtils.getProperty(bean, name);
-			if (null != o) {
-				return (T) o;
+		if (null != bean) {
+			if (PropertyUtils.isReadable(bean, name)) {
+				Object o = PropertyUtils.getProperty(bean, name);
+				if (null != o) {
+					return (T) o;
+				}
+			} else {
+				Field field = FieldUtils.getField(bean.getClass(), name, true);
+				if (null != field) {
+					Object o = FieldUtils.readField(field, bean, true);
+					if (null != o) {
+						return (T) o;
+					}
+				}
 			}
 		}
 		return defaultObject;