CenterSettingConn.h 5.3 KB

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