From 9e0fa31a2b81a9d2fd2588b78b6de637f0352639 Mon Sep 17 00:00:00 2001
From: wuxw7 <wuxw7@asiainfo.com>
Date: 星期二, 22 五月 2018 00:50:12 +0800
Subject: [PATCH] 中心服务和用户服务调用 逻辑调整

---
 java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java |   72 ++++++++++++++++++++++++++++++-----
 1 files changed, 61 insertions(+), 11 deletions(-)

diff --git a/java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java b/java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java
index 24070f2..02de09a 100644
--- a/java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java
+++ b/java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java
@@ -8,9 +8,10 @@
 import com.java110.common.constant.CommonConstant;
 import com.java110.common.constant.ResponseConstant;
 import com.java110.common.exception.BusinessException;
-import com.java110.common.factory.DataTransactionFactory;
+import com.java110.core.factory.DataTransactionFactory;
 import com.java110.common.log.LoggerEngine;
 import com.java110.common.util.Assert;
+import com.java110.common.util.StringUtil;
 import com.java110.entity.service.DataQuery;
 import com.java110.entity.service.ServiceSql;
 import com.java110.service.dao.IQueryServiceDAO;
@@ -44,6 +45,13 @@
             }
             if ("".equals(currentServiceSql.getQueryModel())) {
                 throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"閰嶇疆鏈嶅姟 serviceCode = " + dataQuery.getServiceCode() + " 閿欒锛屾湭閰嶇疆QueryModel,璇疯仈绯荤鐞嗗憳");
+            }
+            //璇锋眰鍙傛暟鏍¢獙
+            List<String> sysParams = currentServiceSql.getParamList();
+            for(String param : sysParams) {
+                if(!dataQuery.getRequestParams().containsKey(param)){
+                    throw new BusinessException(ResponseConstant.RESULT_PARAM_ERROR,"璇锋眰鍙傛暟閿欒锛岃姹傛姤鏂囦腑鏈寘鍚弬鏁� " + param + " 淇℃伅");
+                }
             }
             dataQuery.setServiceSql(currentServiceSql);
             if (CommonConstant.QUERY_MODEL_SQL.equals(currentServiceSql.getQueryModel())) {
@@ -100,10 +108,12 @@
      * @param dataQuery
      */
     private void doExecuteUpdateSql(DataQuery dataQuery) throws BusinessException{
-
+        JSONObject business = null;
         try {
             JSONObject params = dataQuery.getRequestParams();
             JSONObject sqlObj = JSONObject.parseObject(dataQuery.getServiceSql().getSql());
+            JSONObject templateObj = JSONObject.parseObject(dataQuery.getServiceSql().getTemplate());
+            business = JSONObject.parseObject(templateObj.getString("TEMPLATE"));
             List<Object> currentParams = new ArrayList<Object>();
             String currentSql = "";
             for(String key : sqlObj.keySet()) {
@@ -116,7 +126,7 @@
                         continue;
                     }
                     currentSqlNew += "?";
-                    currentParams.add(params.get(sqls[sqlIndex]) instanceof Integer ? params.getInteger(sqls[sqlIndex]) : "'" + params.getString(sqls[sqlIndex]) + "'");
+                    currentParams.add(params.get(sqls[sqlIndex]) instanceof Integer ? params.getInteger(sqls[sqlIndex]) : "" + params.getString(sqls[sqlIndex]) + "");
                     //currentSqlNew += params.get(sqls[sqlIndex]) instanceof Integer ? params.getInteger(sqls[sqlIndex]) : "'" + params.getString(sqls[sqlIndex]) + "'";
                 }
 
@@ -131,6 +141,9 @@
             logger.error("鏁版嵁浜や簰寮傚父锛�",e);
             throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"鏁版嵁浜や簰寮傚父銆傘�傘��");
         }
+
+        dataQuery.setResponseInfo(DataTransactionFactory.createBusinessResponseJson(ResponseConstant.RESULT_CODE_SUCCESS,
+                "鎴愬姛",business));
     }
 
     /**
@@ -182,15 +195,11 @@
         JSONArray currentJsonArr = null;
         for(String key:templateParams.keySet()){
             template = templateParams.getString(key);
-            if(!template.startsWith("$.")){
-                throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"template 閰嶇疆 涓嶆纭紝value 蹇呴』浠�$.寮�澶�");
-            }
-            values = template.split("#");
 
-            if(values == null || values.length != 3){
-                throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"template 閰嶇疆 涓嶆纭紝value 蹇呴』鏈変袱涓�#鍙�");
-            }
-            Object o = JSONPath.eval(business,values[0]);
+            values = judgeResponseTemplate(template);
+
+            Object o = JSONPath.eval(business, values[0]);
+
             dataQuery.setTemplateKey(key);
             if(o instanceof JSONObject){
                 currentJsonObj = (JSONObject)o;
@@ -253,12 +262,26 @@
             List<Map<String,Object>> results = queryServiceDAOImpl.executeSql(currentSqlNew, currentParams.toArray());
 
             if (results == null || results.size() == 0) {
+                if(StringUtil.isNullOrNone(values[1])){
+                    return ;
+                }
                 obj.put(values[1], new JSONObject());
                 return;
             }
             if (values[2].equals("Object")) {
+                if(StringUtil.isNullOrNone(values[1])){
+                    obj.putAll(JSONObject.parseObject(JSONObject.toJSONString(results.get(0))));
+                    return ;
+                }
                 obj.put(values[1], JSONObject.parseObject(JSONObject.toJSONString(results.get(0))));
             } else if (values[2].equals("Array")) {
+                if(StringUtil.isNullOrNone(values[1])){
+                    JSONArray datas = JSONArray.parseArray(JSONArray.toJSONString(results));
+                    for(int dataIndex = 0;dataIndex < datas.size();dataIndex ++){
+                        obj.putAll(datas.getJSONObject(dataIndex));
+                    }
+                    return ;
+                }
                 obj.put(values[1], JSONArray.parseArray(JSONArray.toJSONString(results)));
             }
         }catch (Exception e){
@@ -303,6 +326,33 @@
 
 
     /**
+     * 鏍¢獙 杩斿洖妯℃澘
+     * @param template
+     * @return
+     * @throws BusinessException
+     */
+    private String[] judgeResponseTemplate(String template) throws BusinessException{
+
+
+        if(!template.startsWith("$.")){
+            throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"template 閰嶇疆 涓嶆纭紝value 蹇呴』浠�$.寮�澶�");
+        }
+
+        String[] values = template.split("#");
+
+        if(values == null || values.length != 3){
+            throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"template 閰嶇疆 涓嶆纭紝value 蹇呴』鏈変袱涓�#鍙�");
+        }
+
+        if(StringUtil.isNullOrNone(values[1]) && !"$.##Object".equals(template) && !"$.##Array".equals(template)){
+            throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"template 閰嶇疆 涓嶆纭紝鐩墠鍙敮鎸� $.##Object 鍜� $.##Array ");
+        }
+
+        return values;
+    }
+
+
+    /**
      * 鎵ц瀛樺偍
      * @param dataQuery
      */

--
Gitblit v1.8.0