Skip to content

Commit 88bd31d

Browse files
committed
added:weather info query supported
1 parent 190848e commit 88bd31d

File tree

17 files changed

+290
-4
lines changed

17 files changed

+290
-4
lines changed

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ typedef struct
5151
}st_XSql;
5252
struct
5353
{
54+
XCHAR tszWeatherUrl[MAX_PATH]; //天气接口
5455
XCHAR tszBankUrl[MAX_PATH]; //银行卡验证地址
5556
XCHAR tszTranslationUrl[MAX_PATH]; //翻译接口
5657
struct

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,15 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
123123
pSt_ServerConfig->st_XLog.nLogLeave = st_JsonXLog["LogLeave"].asInt();
124124
_tcsxcpy(pSt_ServerConfig->st_XLog.tszLogFile, st_JsonXLog["tszLogFile"].asCString());
125125

126-
if (st_JsonRoot["XApi"].empty() || (3 != st_JsonRoot["XApi"].size()))
126+
if (st_JsonRoot["XApi"].empty() || (4 != st_JsonRoot["XApi"].size()))
127127
{
128128
Config_IsErrorOccur = true;
129129
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XAPI;
130130
return false;
131131
}
132132
Json::Value st_JsonXApi = st_JsonRoot["XApi"];
133+
134+
_tcsxcpy(pSt_ServerConfig->st_XApi.tszWeatherUrl, st_JsonXApi["tszWeatherUrl"].asCString());
133135
_tcsxcpy(pSt_ServerConfig->st_XApi.tszBankUrl, st_JsonXApi["tszBankUrl"].asCString());
134136
_tcsxcpy(pSt_ServerConfig->st_XApi.tszTranslationUrl, st_JsonXApi["tszTranslationUrl"].asCString());
135137
Json::Value st_JsonTranslationInfo = st_JsonXApi["st_TranslationInfo"];

XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,30 @@ extern "C" bool ModuleProtocol_Packet_Log(XCHAR* ptszMsgBuffer, int* pInt_MsgLen
439439
*********************************************************************/
440440
extern "C" bool ModuleProtocol_Packet_LogShow(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XCHAR*** ppptszList, int nListCount);
441441
/********************************************************************
442+
函数名称:ModuleProtocol_Packet_Weather
443+
函数功能:天气信息协议打包函数
444+
参数.一:ptszMsgBuffer
445+
In/Out:Out
446+
类型:字符指针
447+
可空:N
448+
意思:输出打包的数据信息
449+
参数.二:pInt_MsgLen
450+
In/Out:Out
451+
类型:整数型指针
452+
可空:N
453+
意思:输出打包大小
454+
参数.三:pSt_WeatherInfo
455+
In/Out:In
456+
类型:数据结构
457+
可空:N
458+
意思:输入要打包的信息
459+
返回值
460+
类型:逻辑型
461+
意思:是否成功
462+
备注:
463+
*********************************************************************/
464+
extern "C" bool ModuleProtocol_Packet_Weather(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo);
465+
/********************************************************************
442466
函数名称:ModuleProtocol_Packet_ShortLink
443467
函数功能:短连接生成协议打包函数
444468
参数.一:ptszMsgBuffer
@@ -960,4 +984,28 @@ extern "C" bool ModuleProtocol_Parse_Verifcation(LPCXSTR lpszMsgBuffer, int nMsg
960984
意思:是否成功
961985
备注:
962986
*********************************************************************/
963-
extern "C" bool ModuleProtocol_Parse_Deamon(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszAPPName, XCHAR* ptszAPPPath, int* pInt_Retime, bool* pbEnable);
987+
extern "C" bool ModuleProtocol_Parse_Deamon(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszAPPName, XCHAR* ptszAPPPath, int* pInt_Retime, bool* pbEnable);
988+
/********************************************************************
989+
函数名称:ModuleProtocol_Parse_Weather
990+
函数功能:解析天气信息
991+
参数.一:lpszMsgBuffer
992+
In/Out:In
993+
类型:常量字符指针
994+
可空:N
995+
意思:输入要解析的缓冲区
996+
参数.二:nMsgLen
997+
In/Out:In
998+
类型:整数型
999+
可空:N
1000+
意思:输入缓冲区大小
1001+
参数.三:pSt_WeatherInfo
1002+
In/Out:Out
1003+
类型:数据结构指针
1004+
可空:N
1005+
意思:输出解析后的信息
1006+
返回值
1007+
类型:逻辑型
1008+
意思:是否成功
1009+
备注:
1010+
*********************************************************************/
1011+
extern "C" bool ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo);

XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,61 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_TestReply(XCHAR* ptszMsgBuffe
691691
return true;
692692
}
693693
/********************************************************************
694+
函数名称:ModuleProtocol_Packet_Weather
695+
函数功能:天气信息协议打包函数
696+
参数.一:ptszMsgBuffer
697+
In/Out:Out
698+
类型:字符指针
699+
可空:N
700+
意思:输出打包的数据信息
701+
参数.二:pInt_MsgLen
702+
In/Out:Out
703+
类型:整数型指针
704+
可空:N
705+
意思:输出打包大小
706+
参数.三:pSt_WeatherInfo
707+
In/Out:In
708+
类型:数据结构
709+
可空:N
710+
意思:输入要打包的信息
711+
返回值
712+
类型:逻辑型
713+
意思:是否成功
714+
备注:
715+
*********************************************************************/
716+
bool CModuleProtocol_Packet::ModuleProtocol_Packet_Weather(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo)
717+
{
718+
ModuleProtocol_IsErrorOccur = false;
719+
720+
if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
721+
{
722+
ModuleProtocol_IsErrorOccur = true;
723+
ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT;
724+
return false;
725+
}
726+
Json::Value st_JsonRoot;
727+
Json::Value st_JsonObject;
728+
Json::StreamWriterBuilder st_JsonBuilder;
729+
730+
st_JsonObject["nHumidity"] = pSt_WeatherInfo->nHumidity;
731+
st_JsonObject["nTemperature"] = pSt_WeatherInfo->nTemperature;
732+
st_JsonObject["tszCity"] = pSt_WeatherInfo->tszCity;
733+
st_JsonObject["tszProvince"] = pSt_WeatherInfo->tszProvince;
734+
st_JsonObject["tszUPTime"] = pSt_WeatherInfo->tszUPTime;
735+
st_JsonObject["tszWeatherStr"] = pSt_WeatherInfo->tszWeatherStr;
736+
st_JsonObject["tszWinddiRection"] = pSt_WeatherInfo->tszWinddiRection;
737+
st_JsonObject["tszWindPowerStr"] = pSt_WeatherInfo->tszWindPowerStr;
738+
739+
st_JsonRoot["code"] = 0;
740+
st_JsonRoot["msg"] = "success";
741+
st_JsonRoot["data"] = st_JsonObject;
742+
st_JsonBuilder["emitUTF8"] = true;
743+
744+
*pInt_MsgLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length();
745+
memcpy(ptszMsgBuffer, Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), *pInt_MsgLen);
746+
return true;
747+
}
748+
/********************************************************************
694749
函数名称:ModuleProtocol_Packet_ShortLink
695750
函数功能:短连接生成协议打包函数
696751
参数.一:ptszMsgBuffer

XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class CModuleProtocol_Packet
3232
bool ModuleProtocol_Packet_LogShow(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XCHAR*** ppptszList, int nListCount);
3333
bool ModuleProtocol_Packet_TestReport(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, LPCXSTR lpszIPAddr, int nIPPort, __int64x nNumber, __int64x nFailed, __int64x nSuccess, int nStatus);
3434
bool ModuleProtocol_Packet_TestReply(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken);
35+
bool ModuleProtocol_Packet_Weather(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo);
3536
bool ModuleProtocol_Packet_ShortLink(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_SHORTLINK* pSt_ShortLink);
3637
bool ModuleProtocol_Packet_WordFilter(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WORDFILTER* pSt_WordFilter);
3738
bool ModuleProtocol_Packet_ImageAttr(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IMGBASEATTR* pSt_BaseInfo, XENGINE_IMGEXTATTR* pSt_ExtAttr);

XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,4 +990,84 @@ bool CModuleProtocol_Parse::ModuleProtocol_Parse_Deamon(LPCXSTR lpszMsgBuffer, i
990990
}
991991
}
992992
return true;
993+
}
994+
/********************************************************************
995+
函数名称:ModuleProtocol_Parse_Weather
996+
函数功能:解析天气信息
997+
参数.一:lpszMsgBuffer
998+
In/Out:In
999+
类型:常量字符指针
1000+
可空:N
1001+
意思:输入要解析的缓冲区
1002+
参数.二:nMsgLen
1003+
In/Out:In
1004+
类型:整数型
1005+
可空:N
1006+
意思:输入缓冲区大小
1007+
参数.三:pSt_WeatherInfo
1008+
In/Out:Out
1009+
类型:数据结构指针
1010+
可空:N
1011+
意思:输出解析后的信息
1012+
返回值
1013+
类型:逻辑型
1014+
意思:是否成功
1015+
备注:
1016+
*********************************************************************/
1017+
bool CModuleProtocol_Parse::ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo)
1018+
{
1019+
ModuleProtocol_IsErrorOccur = false;
1020+
1021+
if ((NULL == lpszMsgBuffer) || (0 == nMsgLen))
1022+
{
1023+
ModuleProtocol_IsErrorOccur = true;
1024+
ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PARSE_PARAMENT;
1025+
return false;
1026+
}
1027+
Json::Value st_JsonRoot;
1028+
JSONCPP_STRING st_JsonError;
1029+
Json::CharReaderBuilder st_JsonBuilder;
1030+
1031+
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_JsonBuilder.newCharReader());
1032+
if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
1033+
{
1034+
ModuleProtocol_IsErrorOccur = true;
1035+
ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PARSE_PARAMENT;
1036+
return false;
1037+
}
1038+
Json::Value st_JsonObject = st_JsonRoot["lives"][0];
1039+
1040+
if (!st_JsonObject["province"].isNull())
1041+
{
1042+
_tcsxcpy(pSt_WeatherInfo->tszProvince, st_JsonObject["province"].asCString());
1043+
}
1044+
if (!st_JsonObject["city"].isNull())
1045+
{
1046+
_tcsxcpy(pSt_WeatherInfo->tszCity, st_JsonObject["city"].asCString());
1047+
}
1048+
if (!st_JsonObject["weather"].isNull())
1049+
{
1050+
_tcsxcpy(pSt_WeatherInfo->tszWeatherStr, st_JsonObject["weather"].asCString());
1051+
}
1052+
if (!st_JsonObject["winddirection"].isNull())
1053+
{
1054+
_tcsxcpy(pSt_WeatherInfo->tszWinddiRection, st_JsonObject["winddirection"].asCString());
1055+
}
1056+
if (!st_JsonObject["windpower"].isNull())
1057+
{
1058+
_tcsxcpy(pSt_WeatherInfo->tszWindPowerStr, st_JsonObject["windpower"].asCString());
1059+
}
1060+
if (!st_JsonObject["reporttime"].isNull())
1061+
{
1062+
_tcsxcpy(pSt_WeatherInfo->tszUPTime, st_JsonObject["reporttime"].asCString());
1063+
}
1064+
if (!st_JsonObject["temperature"].isNull())
1065+
{
1066+
pSt_WeatherInfo->nTemperature = _ttxoi(st_JsonObject["temperature"].asCString());
1067+
}
1068+
if (!st_JsonObject["humidity"].isNull())
1069+
{
1070+
pSt_WeatherInfo->nHumidity = _ttxoi(st_JsonObject["humidity"].asCString());
1071+
}
1072+
return true;
9931073
}

XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,6 @@ class CModuleProtocol_Parse
3131
bool ModuleProtocol_Parse_BackService(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszSrcBuffer = NULL, XCHAR* ptszDstBuffer = NULL, int* pInt_BSType = NULL);
3232
bool ModuleProtocol_Parse_Verifcation(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszUserName, XCHAR* ptszUserPass);
3333
bool ModuleProtocol_Parse_Deamon(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszAPPName, XCHAR* ptszAPPPath, int* pInt_Retime, bool* pbEnable);
34+
bool ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo);
3435
private:
3536
};

XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ EXPORTS
1313
ModuleProtocol_Packet_LogShow
1414
ModuleProtocol_Packet_TestReport
1515
ModuleProtocol_Packet_TestReply
16+
ModuleProtocol_Packet_Weather
1617
ModuleProtocol_Packet_ShortLink
1718
ModuleProtocol_Packet_WordFilter
1819
ModuleProtocol_Packet_ImageAttr
@@ -36,4 +37,5 @@ EXPORTS
3637
ModuleProtocol_Parse_WordFilter
3738
ModuleProtocol_Parse_BackService
3839
ModuleProtocol_Parse_Verifcation
39-
ModuleProtocol_Parse_Deamon
40+
ModuleProtocol_Parse_Deamon
41+
ModuleProtocol_Parse_Weather

XEngine_Source/XEngine_ModuleProtocol/pch.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ extern "C" bool ModuleProtocol_Packet_LogShow(XCHAR * ptszMsgBuffer, int* pInt_M
6363
{
6464
return m_ProtocolPacket.ModuleProtocol_Packet_LogShow(ptszMsgBuffer, pInt_MsgLen, ppptszList, nListCount);
6565
}
66+
extern "C" bool ModuleProtocol_Packet_Weather(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WEATHERINFO * pSt_WeatherInfo)
67+
{
68+
return m_ProtocolPacket.ModuleProtocol_Packet_Weather(ptszMsgBuffer, pInt_MsgLen, pSt_WeatherInfo);
69+
}
6670
extern "C" bool ModuleProtocol_Packet_TestReport(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, LPCXSTR lpszIPAddr, int nIPPort, __int64x nNumber, __int64x nFailed, __int64x nSuccess, int nStatus)
6771
{
6872
return m_ProtocolPacket.ModuleProtocol_Packet_TestReport(ptszMsgBuffer, pInt_MsgLen, xhToken, lpszIPAddr, nIPPort, nNumber, nFailed, nSuccess, nStatus);
@@ -165,4 +169,8 @@ extern "C" bool ModuleProtocol_Parse_Verifcation(LPCXSTR lpszMsgBuffer, int nMsg
165169
extern "C" bool ModuleProtocol_Parse_Deamon(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR * ptszAPPName, XCHAR * ptszAPPPath, int* pInt_Retime, bool* pbEnable)
166170
{
167171
return m_ProtocolParse.ModuleProtocol_Parse_Deamon(lpszMsgBuffer, nMsgLen, ptszAPPName, ptszAPPPath, pInt_Retime, pbEnable);
172+
}
173+
extern "C" bool ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO * pSt_WeatherInfo)
174+
{
175+
return m_ProtocolParse.ModuleProtocol_Parse_Weather(lpszMsgBuffer, nMsgLen, pSt_WeatherInfo);
168176
}

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool
1414
-ljsoncpp
1515
LIBEX =
1616
OBJECTS = XEngine_Configure.o XEngine_Network.o XEngine_HTTPTask.o XEngine_PluginTask.o XEngine_HttpApp.o \
17-
TaskGet_Bank.o TaskGet_IDCard.o TaskGet_Locker.o TaskGet_Translation.o TaskGet_Reload.o \
17+
TaskGet_Bank.o TaskGet_IDCard.o TaskGet_Locker.o TaskGet_Translation.o TaskGet_Reload.o TaskGet_Weather.o \
1818
TaskPost_DTest.o TaskPost_Log.o TaskPost_P2PClient.o TaskPost_PostCode.o TaskPost_QRCode.o TaskPost_ShortLink.o TaskPost_SocketTest.o TaskPost_WordFilter.o TaskPost_Image.o TaskPost_BackService.o TaskPost_Deamon.o
1919

2020
ifeq ($(RELEASE),1)
@@ -75,6 +75,8 @@ TaskGet_Translation.o:./XEngine_TaskGet/TaskGet_Translation.cpp
7575
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_TaskGet/TaskGet_Translation.cpp
7676
TaskGet_Reload.o:./XEngine_TaskGet/TaskGet_Reload.cpp
7777
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_TaskGet/TaskGet_Reload.cpp
78+
TaskGet_Weather.o:./XEngine_TaskGet/TaskGet_Weather.cpp
79+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_TaskGet/TaskGet_Weather.cpp
7880

7981
TaskPost_DTest.o:./XEngine_TaskPost/TaskPost_DTest.cpp
8082
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_TaskPost/TaskPost_DTest.cpp

0 commit comments

Comments
 (0)