Răsfoiți Sursa

Z991239-4875 #comment feat: 更换请求集中配置的方法

陈纪林80310970 2 ani în urmă
părinte
comite
8de18531cc
1 a modificat fișierele cu 50 adăugiri și 39 ștergeri
  1. 50 39
      Module/mod_CenterSetting/CenterSettingConn.cpp

+ 50 - 39
Module/mod_CenterSetting/CenterSettingConn.cpp

@@ -14,6 +14,7 @@ using std::regex;
 #include "iniutil.h"
 #include "json/json.h"
 
+#include "CommEntityRestful.hpp"
 #include "mod_centersetting.h"
 #include "SpUtility.h"
 #include "RVCComm.h"
@@ -153,7 +154,7 @@ int CenterSettingsMicroServiceHelper::GetCenterSetting(bool byHand)
 
     if (m_isFirst) m_isFirst = false;
 
-    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_strVersion:%s", m_strVersion.GetData());
+    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_strVersion:%s", req.m_version.c_str());
     req.m_update_time = GetUpdateTime();
     GetTimeoutValue(req.m_timeOut);
 
@@ -164,6 +165,7 @@ int CenterSettingsMicroServiceHelper::GetCenterSetting(bool byHand)
         req.m_url = m_strUrl;
         m_strCurUrl = req.m_url;
         req.m_url += "?update_time=" + req.m_update_time + "&terminal_no=" + req.m_terminal_no + "&version=" + req.m_version;
+        Dbg("m_url1 = %s", req.m_url.c_str());
         ret1 = GetCenterSettingsFromHttp(req, m_strErrMsg);
     } else {
         DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetCenterSetting")("集中配置文件中地址为空,使用默认地址");
@@ -180,6 +182,7 @@ int CenterSettingsMicroServiceHelper::GetCenterSetting(bool byHand)
             req.m_url = m_urlsFromShell[i].GetData();
             m_strCurUrl = m_urlsFromShell[i].GetData();
             req.m_url += "?update_time=" + req.m_update_time + "&terminal_no=" + req.m_terminal_no + "&version=" + req.m_version;
+            Dbg("m_url2 = %s", req.m_url.c_str());
             ret1 = GetCenterSettingsFromHttp(req, m_strErrMsg);
             if (ret1 == SUCC || ret1 == EXIST)
                 break;
@@ -384,19 +387,45 @@ int CenterSettingsMicroServiceHelper::GetCenterSettingsFromHttp(CenterSettingReq
     LOG_FUNCTION();
     CenterSettingResponse res;
 
-#ifdef WITH_CPPRESTSDK_IN_CENTER
+    struct GetCenterSettingReq
+    {
+        string m_terminal_no;
+        string m_version;
+        string m_update_time;
+        string m_config;
+        JSONCONVERT2OBJECT_MEMEBER_REGISTER(m_terminal_no, m_version, m_update_time, m_config)
+    } getCenterSettingReq;
+
+    struct GetCenterSettingAns
+    {
+        bool success;
+        string message;
+        bool is_update;
+        bool is_reset;
+        string version_no;
+        string sm3;
+        string config;
+        JSONCONVERT2OBJECT_MEMEBER_REGISTER(success, message, is_update, is_reset, version_no, sm3, config)
+    }getCenterSettingAns;
+
     HttpClientResponseResult result;
-    RestfulClient client = RestfulClient::getInstance();
-    HttpClientRequestConfig config(HttpRequestMethod::POST);
-    config.SetUri(req.m_url);
-    //config.AppendQuery("update_time", req.m_update_time);
-    //config.AppendQuery("terminal_no", req.m_terminal_no);
-    //config.AppendQuery("version", req.m_version);
+    HttpClientRequestConfig config(HttpRequestMethod::POST, req.m_url);
     if (req.m_timeOut > 0) config.SetTimeout(req.m_timeOut);
-    SP::Module::Restful::FulfillRequestJsonBody(&config, req);
 
+    getCenterSettingReq.m_terminal_no = req.m_terminal_no;
+    getCenterSettingReq.m_version = req.m_version;
+    getCenterSettingReq.m_update_time = req.m_update_time;
+    getCenterSettingReq.m_config = req.m_config;
+
+    SP::Module::Restful::FulfillRequestJsonBody(&config, getCenterSettingReq);
+
+    Dbg("Geting centtersetting...");
+
+    RestfulClient client = RestfulClient::getInstance();
     config.PreDo();
     client.Do(&config, &result);
+
+    Dbg("ret result.ResponseOK() = %d.", result.ResponseOK());
     if (!result.ResponseOK()) {
         DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Do failed: %s", result.WhatError().c_str());
         errMsg = result.WhatError();
@@ -411,41 +440,23 @@ int CenterSettingsMicroServiceHelper::GetCenterSettingsFromHttp(CenterSettingReq
     }
 
     DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s", result.content.length() > 1000 ? result.content.substr(0, 1000).c_str() : result.content.c_str());
-    if (!SP::Module::Restful::ExtractDataFromDebranchResponse(result.content, res)) {
+    if (!SP::Module::Restful::ExtractDataFromDebranchResponse(result.content, getCenterSettingAns)) {
         DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("parse json data node failed: ");
         errMsg = "解析集中配置返回的信息失败";
         return UNknown;
     }
-    transferblank(res.m_version_no);
-    /** 当时粤超开发Windows版本时,要求服务端将数组转化为字符串传送,这边信创为了兼容,需要重新转为数组处理(信创是支持JSON数组) [Gifur@202398]*/
-    string strConfig = res.m_strConfig;
-
-    SP::Utility::replaceInPlace(res.m_strConfig, "\\\"", "\"");
-    if (!Json2Object(res.m_config, res.m_strConfig)) {
-        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("parse config content failed!");
-        errMsg = "解析集中配置返回的配置信息失败";
-        return UNknown;
-    }
-
-#else
-
-    bool ret = m_pHttpFunc->Post(req, res);
-    if (!ret || !res.m_success) {
-        errMsg = res.m_errMsg;
-        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetCenterSettingsFromHttp")("访问失败:%s", res.m_errMsg.c_str());
-        if (res.m_sysCode == 28 || res.m_sysCode == 7)
-            return AccessServiceFail;
-        return MANUAL;
-    }
-
-#if defined(_MSC_VER)
-    SP::Module::Util::ConvertGBKToUtf8(res.m_strConfig);
-    string strConfig = res.m_strConfig;
-#else
+    //transferblank(centerSettingAns.version_no);
+    ///** 当时粤超开发Windows版本时,要求服务端将数组转化为字符串传送,这边信创为了兼容,需要重新转为数组处理(信创是支持JSON数组) [Gifur@202398]*/
+    //string strConfig = centerSettingAns.config;  
+    //vector<ConfigItem> m_config;
+    //SP::Utility::replaceInPlace(centerSettingAns.config, "\\\"", "\"");
+    //if (!Json2Object(m_config, centerSettingAns.config)) {
+    //    DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("parse config content failed!");
+    //    errMsg = "解析集中配置返回的配置信息失败";
+    //    return UNknown;
+    //}
+    res.Parse(result.content);
     string strConfig = SP::Utility::GBK2UTF8(res.m_strConfig);
-#endif //_MSC_VER
-
-#endif //WITH_CPPRESTSDK_IN_CENTER
 
     if (!res.m_is_update) {
         DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetCenterSetting")("Centersetting not changed.");