CenterSettingConn.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. #ifndef RVC_MOD_CENTERSETTING_CONN_H_
  2. #define RVC_MOD_CENTERSETTING_CONN_H_
  3. #pragma once
  4. #include "SpSecureClient.h"
  5. #include "SpIni.h"
  6. #include "IHttpFunc.h"
  7. #include "EventCode.h"
  8. #include <vector>
  9. #include <string>
  10. #if defined(RVC_OS_LINUX)
  11. //#define WITH_CPPRESTSDK_IN_CENTER
  12. #endif //RVC_OS_LINUX
  13. #ifdef WITH_CPPRESTSDK_IN_CENTER
  14. #include "CommEntityRestful.hpp"
  15. #include "microservices/api_terminal_center_config.h"
  16. struct ModuleConfigItemJson : public MicroServices::API::TerminalV3::ModuleConfigItem
  17. {
  18. JSONCONVERT2OBJECT_MEMEBER_REGISTER(m_moudle, m_name, m_value)
  19. JSONCONVERT2OBJECT_MEMEBER_RENAME_REGISTER("moudle", "name", "value")
  20. };
  21. struct CenterSettingReq
  22. {
  23. CenterSettingReq() :m_terminal_no(""), m_version(""), m_update_time(""),m_url(""),m_timeOut(0) {}
  24. std::string m_terminal_no;
  25. std::string m_version;
  26. std::string m_update_time;
  27. /** 兼容用途 [Gifur@202398]*/
  28. std::string m_url;
  29. int m_timeOut;
  30. std::string m_config;
  31. std::vector<ModuleConfigItemJson> configs;
  32. JSONCONVERT2OBJECT_MEMEBER_REGISTER(m_terminal_no, m_version, configs, m_update_time)
  33. JSONCONVERT2OBJECT_MEMEBER_RENAME_REGISTER("terminal_no", "version", "config", "update_time")
  34. };
  35. struct CenterSettingResponse
  36. {
  37. bool m_is_update;
  38. bool m_is_reset;
  39. std::string m_sm3;
  40. std::string m_version_no;
  41. std::vector<ModuleConfigItemJson> m_config;
  42. std::string m_strConfig;
  43. JSONCONVERT2OBJECT_MEMEBER_REGISTER(m_is_update, m_is_reset, m_sm3, m_version_no, m_strConfig)
  44. JSONCONVERT2OBJECT_MEMEBER_RENAME_REGISTER("is_update", "is_reset", "sm3", "version_no", "config")
  45. };
  46. #else
  47. struct CenterSettingReq : CHTTPReq
  48. {
  49. CenterSettingReq()
  50. {
  51. #if defined(_MSC_VER)
  52. m_bTransCode = true;
  53. #else
  54. m_bTransCode = false;
  55. #endif //_MSC_VER
  56. }
  57. string m_terminal_no;
  58. string m_version;
  59. string m_update_time;
  60. string m_config;
  61. virtual string ToJson()
  62. {
  63. CSimpleStringA reqcontent = CSimpleStringA::Format("{\"terminal_no\":\"%s\", \"version\":\"%s\", \"update_time\":\"%s\", \"config\":[%s]}",
  64. m_terminal_no.c_str(), m_version.c_str(), m_update_time.c_str(), m_config.c_str());
  65. return reqcontent.GetData();
  66. }
  67. };
  68. struct ConfigItem
  69. {
  70. string m_moudle;
  71. string m_name;
  72. string m_value;
  73. };
  74. struct CenterSettingResponse : CHTTPRet
  75. {
  76. CenterSettingResponse() {}
  77. bool m_success;
  78. string m_message;
  79. bool m_is_update;
  80. bool m_is_reset;
  81. string m_version_no;
  82. string m_sm3;
  83. string m_strConfig;
  84. vector<ConfigItem> m_config;
  85. virtual bool Parse(string strData);
  86. };
  87. #define SAFE_DELETE_HTTPCLIENT(obj) \
  88. do{if(obj != NULL) { obj->Destory(); obj = NULL; }}while(false)
  89. #endif
  90. struct AddVersionReq : CHTTPReq
  91. {
  92. AddVersionReq() {}
  93. string m_terminal_no;
  94. string m_version;
  95. string m_update_time;
  96. virtual string ToJson()
  97. {
  98. char reqcontent[256];
  99. sprintf(reqcontent, "{\"terminal_no\":\"%s\", \"version_no\":\"%s\", \"terminal_update_time\":\"%s\"}",
  100. m_terminal_no.c_str(), m_version.c_str(), m_update_time.c_str());
  101. return reqcontent;
  102. }
  103. };
  104. struct AddVersionResponse : CHTTPRet
  105. {
  106. AddVersionResponse() {}
  107. bool m_success;
  108. string m_message;
  109. virtual bool Parse(string strData);
  110. };
  111. class CenterSettingsMicroServiceHelper
  112. {
  113. public:
  114. CenterSettingsMicroServiceHelper(CEntityBase* pEntity);
  115. int GetCenterSetting(bool byHand);
  116. string GetLocalConfig(); //将集中配置转换成Json串
  117. string GetUpdateTime(); //获取集中配置更新时间,如果文件不存在则获取当前系统时间
  118. const char* GetErrMsg() { return m_strErrMsg.c_str(); }
  119. void GetTimeoutValue(int& timeout);
  120. void InitCenterSettingInfo();
  121. bool WriteToConfig(const CenterSettingResponse& sResponse);
  122. void UpdateVersion();
  123. void UpdateUrl(const string& url) { m_strUrl = url.c_str(); };
  124. int GetCenterSettingsFromHttp(CenterSettingReq& req, string& errMsg); //轮询域名下载集中配置
  125. string GetCurUrl() { return m_strCurUrl; }
  126. private:
  127. string m_strErrMsg;
  128. CEntityBase* m_pEntity;
  129. CSimpleStringA m_strLastTime;
  130. CSystemStaticInfo m_terminalInfo;
  131. IHttpFunc* m_pHttpFunc;
  132. CAutoArray<CSimpleStringA> m_arrKeys;
  133. vector<CSimpleStringA> m_arrURLs;
  134. CSimpleStringA m_strCurSite;
  135. CSmartPointer<IConfigInfo> m_pCenterConfig;
  136. CSmartPointer<IConfigInfo> m_pRunConfig;
  137. CSimpleStringA m_strFilePath;
  138. CSimpleStringA m_strBakPath;
  139. CSimpleStringA m_strVersion;
  140. CSimpleStringA m_strUrl;
  141. vector<CSimpleStringA> m_urlsFromShell;
  142. string m_strCurUrl;
  143. bool m_isFirst;
  144. };
  145. #endif //RVC_MOD_CENTERSETTING_CONN_H_