From 8bd133f28006eda6cfac33d84ecb7124430bb6a8 Mon Sep 17 00:00:00 2001 From: zhoulingfengofcd <330233789@qq.com> Date: Wed, 26 Feb 2020 20:16:15 +0800 Subject: [PATCH 1/2] Update AbstractObjectParser.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit POST(新增)支持批量,批量事务问题处理方式:全部成功,则成功,只要一条失败,全部失败 --- .../apijson/server/AbstractObjectParser.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java b/APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java index 3b5709501..d33f8ecfb 100755 --- a/APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java +++ b/APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java @@ -240,8 +240,33 @@ public AbstractObjectParser parse() throws Exception { response.put(key, onChildParse(index, key, (JSONObject)value)); index ++; } - } - else if (method == PUT && value instanceof JSONArray + } else if (value instanceof JSONArray && method == POST && + key.startsWith("@") == false && key.endsWith("@") == false) {//JSONArray,批量新增,往下一级提取 + JSONArray valueArray = (JSONArray)value; + + for (int i = 0; i < valueArray.size(); i++) { + if (childMap != null) {//添加到childMap,最后再解析 + childMap.put(key, valueArray.getJSONObject(i)); + } + else {//直接解析并替换原来的,[]:{} 内必须直接解析,否则会因为丢掉count等属性,并且total@:"/[]/total"必须在[]:{} 后! + JSONObject result = (JSONObject)onChildParse(index, key, valueArray.getJSONObject(i)); + //合并结果 + JSONObject before = (JSONObject)response.get(key); + if(result.get("code").equals(200)){ + if(before!=null){ + before.put("count",before.getInteger("count")+result.getInteger("count")); + response.put(key, before); + }else{ + response.put(key, result); + } + } else { + //只要有一条失败,则抛出异常,全部失败 + throw new RuntimeException(key + "," + valueArray.getJSONObject(i) +",新增失败!"); + } + } + } + index ++; + } else if (method == PUT && value instanceof JSONArray && (whereList == null || whereList.contains(key) == false)) {//PUT JSONArray onPUTArrayParse(key, (JSONArray) value); } From 692c9fcf6095faf8f47d8050502e5eab7deffb70 Mon Sep 17 00:00:00 2001 From: zhoulingfeng <330233789@qq.com> Date: Thu, 27 Feb 2020 09:12:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=93=E5=8C=85=E7=BC=96=E8=AF=91=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=AE=8C=E5=96=84git=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 36 ++++++++++++++++--- .../apijson/server/AbstractObjectParser.java | 1 + 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index bda173cd4..204504dc5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,36 @@ .DS_Store -.idea .gradle +yarn.lock +*.project + +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project .settings +.springBeans +.sts4-cache -yarn.lock -*.classpath -*.project \ No newline at end of file +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java b/APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java index d33f8ecfb..ea82dd9c5 100755 --- a/APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java +++ b/APIJSON-Java-Server/APIJSONORM/src/main/java/zuo/biao/apijson/server/AbstractObjectParser.java @@ -17,6 +17,7 @@ import static zuo.biao.apijson.JSONObject.KEY_COMBINE; import static zuo.biao.apijson.JSONObject.KEY_DROP; import static zuo.biao.apijson.JSONObject.KEY_TRY; +import static zuo.biao.apijson.RequestMethod.POST; import static zuo.biao.apijson.RequestMethod.PUT; import static zuo.biao.apijson.server.SQLConfig.TYPE_ITEM;