From a4807e30ad4123c7c2138b6ecef9f09062ad5ea1 Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Mon, 24 Oct 2022 10:14:52 +0800
Subject: [PATCH 01/15] update:match xengine v7.42
---
.../XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp | 2 +-
.../XEngine_HTTPTask/HTTPTask_Translation.cpp | 2 +-
.../XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h | 2 +-
.../XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp | 5 +++--
4 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp
index ec8a23b..911b38d 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp
@@ -24,7 +24,7 @@ BOOL XEngine_HTTPTask_BankInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszBankNumber, i
_tcscpy(st_BankInfo.tszBankNumber, lpszBankNumber);
_stprintf(tszUrlBuffer, st_ServiceConfig.st_XApi.tszBankUrl, lpszBankNumber);
- APIHelp_HttpRequest_Get(tszUrlBuffer, &ptszBodyBuffer, &nBLen);
+ APIHelp_HttpRequest_Custom(_T("GET"), tszUrlBuffer, NULL, NULL, &ptszBodyBuffer, &nBLen);
//解析JSON信息
if (!ModuleProtocol_Parse_Bank(ptszBodyBuffer, nBLen, &st_BankInfo))
{
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.cpp
index 0086f66..67d4ab0 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.cpp
@@ -42,7 +42,7 @@ BOOL XEngine_HTTPTask_Translation(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer,
return FALSE;
}
_stprintf(tszUrlBuffer, st_ServiceConfig.st_XApi.tszTranslationUrl, tszTypeBuffer, lpszMsgBuffer);
- APIHelp_HttpRequest_Get(tszUrlBuffer, &ptszBodyBuffer, &nBLen);
+ APIHelp_HttpRequest_Custom(_T("GET"), tszUrlBuffer, NULL, NULL, &ptszBodyBuffer, &nBLen);
//解析数据
if (!ModuleProtocol_Parse_Translation(ptszBodyBuffer, nBLen, &st_LanguageInfo))
{
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h
index 5428895..25464ef 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h
@@ -85,7 +85,7 @@ extern XLOG xhLog;
extern XHANDLE xhHTTPSocket;
extern XHANDLE xhHTTPHeart;
extern XHANDLE xhHTTPPacket;
-extern XNETHANDLE xhHTTPPool;
+extern XHANDLE xhHTTPPool;
//配置文件
extern XENGINE_SERVICECONFIG st_ServiceConfig;
extern XENGINE_OPENCCCONFIG st_OPenccConfig;
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp
index 8ee33d9..afa7c45 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp
@@ -16,7 +16,7 @@ XLOG xhLog = NULL;
XHANDLE xhHTTPSocket = NULL;
XHANDLE xhHTTPHeart = NULL;
XHANDLE xhHTTPPacket = NULL;
-XNETHANDLE xhHTTPPool = 0;
+XHANDLE xhHTTPPool = 0;
//配置文件
XENGINE_SERVICECONFIG st_ServiceConfig;
XENGINE_OPENCCCONFIG st_OPenccConfig;
@@ -220,7 +220,8 @@ int main(int argc, char** argv)
ppSt_ListHTTPParam[i]->lParam = pInt_Pos;
ppSt_ListHTTPParam[i]->fpCall_ThreadsTask = XEngine_HTTPTask_Thread;
}
- if (!ManagePool_Thread_NQCreate(&xhHTTPPool, &ppSt_ListHTTPParam, st_ServiceConfig.st_XMax.nHTTPThread))
+ xhHTTPPool = ManagePool_Thread_NQCreate(&ppSt_ListHTTPParam, st_ServiceConfig.st_XMax.nHTTPThread);
+ if (NULL == xhHTTPPool)
{
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动HTTP线程池服务失败,错误:%lX"), ManagePool_GetLastError());
goto XENGINE_SERVICEAPP_EXIT;
--
Gitee
From d088c394c9c626529a62640eccf1bf1ebb5ec562 Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Thu, 27 Oct 2022 13:52:48 +0800
Subject: [PATCH 02/15] delete:reply type 1 functions for bank and id and ip
and language and phone and translation
---
.../ModuleProtocol_Define.h | 150 -----------
.../ModuleProtocol_Packet.cpp | 241 ------------------
.../ModuleProtocol_Packet.h | 5 -
.../XEngine_ModuleProtocol.def | 5 -
XEngine_Source/XEngine_ModuleProtocol/pch.cpp | 20 --
.../XEngine_HttpApp/XEngine_HTTPTask.cpp | 46 +---
.../XEngine_HTTPTask/HTTPTask_Bank.cpp | 29 +--
.../XEngine_HTTPTask/HTTPTask_Bank.h | 2 +-
.../XEngine_HTTPTask/HTTPTask_IDCard.cpp | 38 +--
.../XEngine_HTTPTask/HTTPTask_IDCard.h | 2 +-
.../XEngine_HTTPTask/HTTPTask_IPInfo.cpp | 29 +--
.../XEngine_HTTPTask/HTTPTask_IPInfo.h | 2 +-
.../XEngine_HTTPTask/HTTPTask_Language.cpp | 11 +-
.../XEngine_HTTPTask/HTTPTask_Language.h | 2 +-
.../XEngine_HTTPTask/HTTPTask_Phone.cpp | 20 +-
.../XEngine_HTTPTask/HTTPTask_Phone.h | 2 +-
.../XEngine_HTTPTask/HTTPTask_Translation.cpp | 29 +--
.../XEngine_HTTPTask/HTTPTask_Translation.h | 2 +-
.../XEngine_HttpApp/XEngine_HttpApp.vcxproj | 2 +
.../XEngine_HttpApp.vcxproj.filters | 6 +
20 files changed, 44 insertions(+), 599 deletions(-)
diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h
index 756869a..c9c2537 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h
+++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h
@@ -81,35 +81,6 @@ extern "C" BOOL ModuleProtocol_Packet_Common(TCHAR * ptszMsgBuffer, int* pInt_Ms
*********************************************************************/
extern "C" BOOL ModuleProtocol_Packet_IPQuery(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IPADDRINFO * pSt_IPAddrInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
/********************************************************************
-函数名称:ModuleProtocol_Packet_IPQuery2
-函数功能:IP查询打包函数另一种方式
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_IPAddrInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要操作的IP地址信息
- 参数.四:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-extern "C" BOOL ModuleProtocol_Packet_IPQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IPADDRINFO* pSt_IPAddrInfo, int nCode = 0);
-/********************************************************************
函数名称:ModuleProtocol_Packet_IDQuery
函数功能:ID查询打包为JSON的封包函数
参数.一:ptszMsgBuffer
@@ -149,40 +120,6 @@ extern "C" BOOL ModuleProtocol_Packet_IPQuery2(TCHAR* ptszMsgBuffer, int* pInt_M
*********************************************************************/
extern "C" BOOL ModuleProtocol_Packet_IDQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IDCARDINFO* pSt_IDInfo, XENGINE_IDREGION* pSt_IDRegion, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
/********************************************************************
-函数名称:ModuleProtocol_Packet_IDQuery2
-函数功能:ID查询打包为字符串流函数
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_IDInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要打包的ID信息
- 参数.四:pSt_IDRegion
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入ID地址信息
- 参数.五:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-extern "C" BOOL ModuleProtocol_Packet_IDQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IDCARDINFO* pSt_IDInfo, XENGINE_IDREGION* pSt_IDRegion, int nCode = 0);
-/********************************************************************
函数名称:ModuleProtocol_Packet_PhoneQuery
函数功能:电话信息查询打包为JSON的封包函数
参数.一:ptszMsgBuffer
@@ -217,35 +154,6 @@ extern "C" BOOL ModuleProtocol_Packet_IDQuery2(TCHAR* ptszMsgBuffer, int* pInt_M
*********************************************************************/
extern "C" BOOL ModuleProtocol_Packet_PhoneQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_PHONEINFO* pSt_PhoneInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
/********************************************************************
-函数名称:ModuleProtocol_Packet_PhoneQuery2
-函数功能:电话查询打包为字符串流函数
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_PhoneInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要打包的信息
- 参数.四:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-extern "C" BOOL ModuleProtocol_Packet_PhoneQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_PHONEINFO* pSt_PhoneInfo, int nCode = 0);
-/********************************************************************
函数名称:ModuleProtocol_Packet_BankQuery
函数功能:银行卡信息查询打包为JSON
参数.一:ptszMsgBuffer
@@ -280,35 +188,6 @@ extern "C" BOOL ModuleProtocol_Packet_PhoneQuery2(TCHAR* ptszMsgBuffer, int* pIn
*********************************************************************/
extern "C" BOOL ModuleProtocol_Packet_BankQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_BANKINFO* pSt_BankInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
/********************************************************************
-函数名称:ModuleProtocol_Packet_BankQuery2
-函数功能:银行卡信息查询打包为字节流
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_PhoneInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要打包的信息
- 参数.四:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-extern "C" BOOL ModuleProtocol_Packet_BankQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_BANKINFO* pSt_BankInfo, int nCode = 0);
-/********************************************************************
函数名称:ModuleProtocol_Packet_LanguageQuery
函数功能:语言打包为JSON
参数.一:ptszMsgBuffer
@@ -343,35 +222,6 @@ extern "C" BOOL ModuleProtocol_Packet_BankQuery2(TCHAR* ptszMsgBuffer, int* pInt
*********************************************************************/
extern "C" BOOL ModuleProtocol_Packet_LanguageQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_LANGUAGEINFO* pSt_LanguageInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
/********************************************************************
-函数名称:ModuleProtocol_Packet_LanguageQuery2
-函数功能:语言打包为字节流
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_PhoneInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要打包的信息
- 参数.四:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-extern "C" BOOL ModuleProtocol_Packet_LanguageQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_LANGUAGEINFO* pSt_LanguageInfo, int nCode = 0);
-/********************************************************************
函数名称:ModuleProtocol_Packet_Locker
函数功能:分布式锁协议打包函数
参数.一:ptszMsgBuffer
diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp
index a8c04ce..b343c21 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp
+++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp
@@ -148,57 +148,6 @@ BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_IPQuery(TCHAR* ptszMsgBuffer,
return TRUE;
}
/********************************************************************
-函数名称:ModuleProtocol_Packet_IPQuery2
-函数功能:IP查询打包函数另一种方式
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_IPAddrInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要操作的IP地址信息
- 参数.四:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_IPQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IPADDRINFO* pSt_IPAddrInfo, int nCode /* = 0 */)
-{
- ModuleProtocol_IsErrorOccur = FALSE;
-
- if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen) || (NULL == pSt_IPAddrInfo))
- {
- ModuleProtocol_IsErrorOccur = TRUE;
- ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT;
- return FALSE;
- }
- *pInt_MsgLen = _stprintf(ptszMsgBuffer, "%d\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s", nCode, pSt_IPAddrInfo->tszIPAddr, pSt_IPAddrInfo->tszIPStart, pSt_IPAddrInfo->tszIPEnd, pSt_IPAddrInfo->tszIPCountry, pSt_IPAddrInfo->tszIPProvince, pSt_IPAddrInfo->tszIPCity, pSt_IPAddrInfo->tszIPCounty, pSt_IPAddrInfo->tszIPAddress, pSt_IPAddrInfo->tszIPISP, pSt_IPAddrInfo->tszIPTime);
- return TRUE;
-}
-/********************************************************************
函数名称:ModuleProtocol_Packet_IDQuery
函数功能:ID查询打包为JSON的封包函数
参数.一:ptszMsgBuffer
@@ -282,61 +231,6 @@ BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_IDQuery(TCHAR* ptszMsgBuffer,
return TRUE;
}
/********************************************************************
-函数名称:ModuleProtocol_Packet_IDQuery2
-函数功能:ID查询打包为字符串流函数
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_IDInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要打包的ID信息
- 参数.四:pSt_IDRegion
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入ID地址信息
- 参数.五:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_IDQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IDCARDINFO* pSt_IDInfo, XENGINE_IDREGION* pSt_IDRegion, int nCode /* = 0 */)
-{
- ModuleProtocol_IsErrorOccur = FALSE;
-
- if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
- {
- ModuleProtocol_IsErrorOccur = TRUE;
- ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT;
- return FALSE;
- }
- *pInt_MsgLen = _stprintf(ptszMsgBuffer, "%d\r\n"
- "%s\r\n"
- "%d\r\n"
- "%d\r\n"
- "%d\r\n"
- "%d\r\n"
- "%d\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s", nCode, pSt_IDInfo->tszIDNumber, pSt_IDInfo->nBirthYear, pSt_IDInfo->nBirthMonth, pSt_IDInfo->nBirthDay, pSt_IDInfo->nPoliceID, pSt_IDInfo->nSex / 2 == 0 ? 0 : 1, pSt_IDRegion->tszProvincer, pSt_IDRegion->tszCity, pSt_IDRegion->tszCounty);
- return TRUE;
-}
-/********************************************************************
函数名称:ModuleProtocol_Packet_PhoneQuery
函数功能:电话信息查询打包为JSON的封包函数
参数.一:ptszMsgBuffer
@@ -409,52 +303,6 @@ BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_PhoneQuery(TCHAR* ptszMsgBuff
return TRUE;
}
/********************************************************************
-函数名称:ModuleProtocol_Packet_PhoneQuery2
-函数功能:电话查询打包为字符串流函数
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_PhoneInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要打包的信息
- 参数.四:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_PhoneQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_PHONEINFO* pSt_PhoneInfo, int nCode /* = 0 */)
-{
- ModuleProtocol_IsErrorOccur = FALSE;
-
- if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
- {
- ModuleProtocol_IsErrorOccur = TRUE;
- ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT;
- return FALSE;
- }
- *pInt_MsgLen = _stprintf(ptszMsgBuffer, "%d\r\n"
- "%lld\r\n"
- "%s\r\n"
- "%s\r\n"
- "%d\r\n"
- "%d", nCode, pSt_PhoneInfo->nPhoneNumber, pSt_PhoneInfo->tszProvincer, pSt_PhoneInfo->tszCity, pSt_PhoneInfo->nZipCode, pSt_PhoneInfo->nAreaCode);
- return TRUE;
-}
-/********************************************************************
函数名称:ModuleProtocol_Packet_BankQuery
函数功能:银行卡信息查询打包为JSON
参数.一:ptszMsgBuffer
@@ -526,51 +374,6 @@ BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_BankQuery(TCHAR* ptszMsgBuffe
return TRUE;
}
/********************************************************************
-函数名称:ModuleProtocol_Packet_BankQuery2
-函数功能:银行卡信息查询打包为字节流
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_PhoneInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要打包的信息
- 参数.四:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_BankQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_BANKINFO* pSt_BankInfo, int nCode /* = 0 */)
-{
- ModuleProtocol_IsErrorOccur = FALSE;
-
- if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
- {
- ModuleProtocol_IsErrorOccur = TRUE;
- ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT;
- return FALSE;
- }
- *pInt_MsgLen = _stprintf(ptszMsgBuffer, "%d\r\n"
- "%s\r\n"
- "%s\r\n"
- "%s\r\n"
- "%d", nCode, pSt_BankInfo->tszBankNumber, pSt_BankInfo->tszBankName, pSt_BankInfo->tszBankAbridge, pSt_BankInfo->enBankType);
- return TRUE;
-}
-/********************************************************************
函数名称:ModuleProtocol_Packet_LanguageQuery
函数功能:语言打包为JSON
参数.一:ptszMsgBuffer
@@ -641,50 +444,6 @@ BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_LanguageQuery(TCHAR* ptszMsgB
return TRUE;
}
/********************************************************************
-函数名称:ModuleProtocol_Packet_LanguageQuery2
-函数功能:语言打包为字节流
- 参数.一:ptszMsgBuffer
- In/Out:Out
- 类型:字符指针
- 可空:N
- 意思:输出打包的数据信息
- 参数.二:pInt_MsgLen
- In/Out:Out
- 类型:整数型指针
- 可空:N
- 意思:输出打包大小
- 参数.三:pSt_PhoneInfo
- In/Out:In
- 类型:数据结构指针
- 可空:N
- 意思:输入要打包的信息
- 参数.四:nCode
- In/Out:In
- 类型:整数型
- 可空:Y
- 意思:输入返回的值
-返回值
- 类型:逻辑型
- 意思:是否成功
-备注:
-*********************************************************************/
-BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_LanguageQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_LANGUAGEINFO* pSt_LanguageInfo, int nCode /* = 0 */)
-{
- ModuleProtocol_IsErrorOccur = FALSE;
-
- if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
- {
- ModuleProtocol_IsErrorOccur = TRUE;
- ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT;
- return FALSE;
- }
- *pInt_MsgLen = _stprintf(ptszMsgBuffer, "%d\r\n"
- "%s\r\n"
- "%s\r\n"
- "%d", nCode, pSt_LanguageInfo->tszSourceStr, pSt_LanguageInfo->tszDestStr, pSt_LanguageInfo->enType);
- return TRUE;
-}
-/********************************************************************
函数名称:ModuleProtocol_Packet_Locker
函数功能:分布式锁协议打包函数
参数.一:ptszMsgBuffer
diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h
index f029e03..9123f87 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h
+++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h
@@ -24,15 +24,10 @@ public:
public:
BOOL ModuleProtocol_Packet_Common(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
BOOL ModuleProtocol_Packet_IPQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IPADDRINFO* pSt_IPAddrInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
- BOOL ModuleProtocol_Packet_IPQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IPADDRINFO* pSt_IPAddrInfo, int nCode = 0);
BOOL ModuleProtocol_Packet_IDQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IDCARDINFO* pSt_IDInfo, XENGINE_IDREGION* pSt_IDRegion, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
- BOOL ModuleProtocol_Packet_IDQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IDCARDINFO* pSt_IDInfo, XENGINE_IDREGION* pSt_IDRegion, int nCode = 0);
BOOL ModuleProtocol_Packet_PhoneQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_PHONEINFO* pSt_PhoneInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
- BOOL ModuleProtocol_Packet_PhoneQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_PHONEINFO* pSt_PhoneInfo, int nCode = 0);
BOOL ModuleProtocol_Packet_BankQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_BANKINFO* pSt_BankInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
- BOOL ModuleProtocol_Packet_BankQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_BANKINFO* pSt_BankInfo, int nCode = 0);
BOOL ModuleProtocol_Packet_LanguageQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_LANGUAGEINFO* pSt_LanguageInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
- BOOL ModuleProtocol_Packet_LanguageQuery2(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_LANGUAGEINFO* pSt_LanguageInfo, int nCode = 0);
BOOL ModuleProtocol_Packet_Locker(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
public:
BOOL ModuleProtocol_Packet_P2PLan(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_P2XPPEER_PROTOCOL*** pppSt_ListClients, int nListCount);
diff --git a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def
index 1fa7507..148abd2 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def
+++ b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def
@@ -5,15 +5,10 @@ EXPORTS
ModuleProtocol_Packet_Common
ModuleProtocol_Packet_IPQuery
- ModuleProtocol_Packet_IPQuery2
ModuleProtocol_Packet_IDQuery
- ModuleProtocol_Packet_IDQuery2
ModuleProtocol_Packet_PhoneQuery
- ModuleProtocol_Packet_PhoneQuery2
ModuleProtocol_Packet_BankQuery
- ModuleProtocol_Packet_BankQuery2
ModuleProtocol_Packet_LanguageQuery
- ModuleProtocol_Packet_LanguageQuery2
ModuleProtocol_Packet_Locker
ModuleProtocol_Packet_P2PLan
ModuleProtocol_Packet_P2PWLan
diff --git a/XEngine_Source/XEngine_ModuleProtocol/pch.cpp b/XEngine_Source/XEngine_ModuleProtocol/pch.cpp
index 92c712f..b12ac5e 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/pch.cpp
+++ b/XEngine_Source/XEngine_ModuleProtocol/pch.cpp
@@ -39,42 +39,22 @@ extern "C" BOOL ModuleProtocol_Packet_IPQuery(TCHAR * ptszMsgBuffer, int* pInt_M
{
return m_ProtocolPacket.ModuleProtocol_Packet_IPQuery(ptszMsgBuffer, pInt_MsgLen, pSt_IPAddrInfo, nCode, lpszMsgBuffer);
}
-extern "C" BOOL ModuleProtocol_Packet_IPQuery2(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IPADDRINFO * pSt_IPAddrInfo, int nCode)
-{
- return m_ProtocolPacket.ModuleProtocol_Packet_IPQuery2(ptszMsgBuffer, pInt_MsgLen, pSt_IPAddrInfo, nCode);
-}
extern "C" BOOL ModuleProtocol_Packet_IDQuery(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IDCARDINFO * pSt_IDInfo, XENGINE_IDREGION * pSt_IDRegion, int nCode, LPCTSTR lpszMsgBuffer)
{
return m_ProtocolPacket.ModuleProtocol_Packet_IDQuery(ptszMsgBuffer, pInt_MsgLen, pSt_IDInfo, pSt_IDRegion, nCode, lpszMsgBuffer);
}
-extern "C" BOOL ModuleProtocol_Packet_IDQuery2(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IDCARDINFO * pSt_IDInfo, XENGINE_IDREGION * pSt_IDRegion, int nCode)
-{
- return m_ProtocolPacket.ModuleProtocol_Packet_IDQuery2(ptszMsgBuffer, pInt_MsgLen, pSt_IDInfo, pSt_IDRegion, nCode);
-}
extern "C" BOOL ModuleProtocol_Packet_PhoneQuery(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_PHONEINFO * pSt_PhoneInfo, int nCode, LPCTSTR lpszMsgBuffer)
{
return m_ProtocolPacket.ModuleProtocol_Packet_PhoneQuery(ptszMsgBuffer, pInt_MsgLen, pSt_PhoneInfo, nCode, lpszMsgBuffer);
}
-extern "C" BOOL ModuleProtocol_Packet_PhoneQuery2(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_PHONEINFO * pSt_PhoneInfo, int nCode)
-{
- return m_ProtocolPacket.ModuleProtocol_Packet_PhoneQuery2(ptszMsgBuffer, pInt_MsgLen, pSt_PhoneInfo, nCode);
-}
extern "C" BOOL ModuleProtocol_Packet_BankQuery(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_BANKINFO * pSt_BankInfo, int nCode, LPCTSTR lpszMsgBuffer)
{
return m_ProtocolPacket.ModuleProtocol_Packet_BankQuery(ptszMsgBuffer, pInt_MsgLen, pSt_BankInfo, nCode, lpszMsgBuffer);
}
-extern "C" BOOL ModuleProtocol_Packet_BankQuery2(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_BANKINFO * pSt_BankInfo, int nCode)
-{
- return m_ProtocolPacket.ModuleProtocol_Packet_BankQuery2(ptszMsgBuffer, pInt_MsgLen, pSt_BankInfo, nCode);
-}
extern "C" BOOL ModuleProtocol_Packet_LanguageQuery(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_LANGUAGEINFO * pSt_LanguageInfo, int nCode, LPCTSTR lpszMsgBuffer)
{
return m_ProtocolPacket.ModuleProtocol_Packet_LanguageQuery(ptszMsgBuffer, pInt_MsgLen, pSt_LanguageInfo, nCode, lpszMsgBuffer);
}
-extern "C" BOOL ModuleProtocol_Packet_LanguageQuery2(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_LANGUAGEINFO * pSt_LanguageInfo, int nCode)
-{
- return m_ProtocolPacket.ModuleProtocol_Packet_LanguageQuery2(ptszMsgBuffer, pInt_MsgLen, pSt_LanguageInfo, nCode);
-}
extern "C" BOOL ModuleProtocol_Packet_Locker(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nCode, LPCTSTR lpszMsgBuffer)
{
return m_ProtocolPacket.ModuleProtocol_Packet_Locker(ptszMsgBuffer, pInt_MsgLen, xhToken, nCode, lpszMsgBuffer);
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp
index 2dca4e4..3a19dc2 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp
@@ -201,13 +201,7 @@ BOOL XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCTSTR
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
return FALSE;
}
- TCHAR tszGetType[64];
-
- memset(tszKey, '\0', sizeof(tszKey));
- memset(tszGetType, '\0', sizeof(tszGetType));
-
- BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszKey, tszGetType);
- XEngine_HTTPTask_IPInfo(lpszClientAddr, tszValue, _ttoi(tszGetType));
+ XEngine_HTTPTask_IPInfo(lpszClientAddr, tszValue);
}
else if (0 == _tcsnicmp(lpszParamIDCard, tszValue, _tcslen(lpszParamIDCard)))
{
@@ -224,13 +218,7 @@ BOOL XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCTSTR
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
return FALSE;
}
- TCHAR tszGetType[64];
-
- memset(tszKey, '\0', sizeof(tszKey));
- memset(tszGetType, '\0', sizeof(tszGetType));
-
- BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszKey, tszGetType);
- XEngine_HTTPTask_IDCard(lpszClientAddr, tszValue, _ttoi(tszGetType));
+ XEngine_HTTPTask_IDCard(lpszClientAddr, tszValue);
}
else if (0 == _tcsnicmp(lpszParamPhone, tszValue, _tcslen(lpszParamPhone)))
{
@@ -247,13 +235,7 @@ BOOL XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCTSTR
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
return FALSE;
}
- TCHAR tszGetType[64];
-
- memset(tszKey, '\0', sizeof(tszKey));
- memset(tszGetType, '\0', sizeof(tszGetType));
-
- BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszKey, tszGetType);
- XEngine_HTTPTask_PhoneInfo(lpszClientAddr, tszValue, _ttoi(tszGetType));
+ XEngine_HTTPTask_PhoneInfo(lpszClientAddr, tszValue);
}
else if (0 == _tcsnicmp(lpszParamBank, tszValue, _tcslen(lpszParamBank)))
{
@@ -270,24 +252,16 @@ BOOL XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCTSTR
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
return FALSE;
}
- TCHAR tszGetType[64];
-
- memset(tszKey, '\0', sizeof(tszKey));
- memset(tszGetType, '\0', sizeof(tszGetType));
-
- BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszKey, tszGetType);
- XEngine_HTTPTask_BankInfo(lpszClientAddr, tszValue, _ttoi(tszGetType));
+ XEngine_HTTPTask_BankInfo(lpszClientAddr, tszValue);
}
else if (0 == _tcsnicmp(lpszParamLanguage, tszValue, _tcslen(lpszParamLanguage)))
{
//是不是语言转换
TCHAR tszCvtType[64];
- TCHAR tszGetType[64];
memset(tszCvtType, '\0', sizeof(tszCvtType));
memset(tszKey, '\0', sizeof(tszKey));
memset(tszValue, '\0', sizeof(tszValue));
- memset(tszGetType, '\0', sizeof(tszGetType));
BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszKey, tszValue);
if (0 != _tcsnicmp(lpszParamName, tszKey, _tcslen(lpszParamName)))
@@ -301,20 +275,17 @@ BOOL XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCTSTR
}
memset(tszKey, '\0', sizeof(tszKey));
- BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszKey, tszGetType);
- BaseLib_OperatorString_GetKeyValue(pptszList[3], "=", tszKey, tszCvtType);
- XEngine_HTTPTask_Language(lpszClientAddr, tszValue, _ttoi(tszGetType), _ttoi(tszCvtType));
+ BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszKey, tszCvtType);
+ XEngine_HTTPTask_Language(lpszClientAddr, tszValue, _ttoi(tszCvtType));
}
else if (0 == _tcsnicmp(lpszParamTranslation, tszValue, _tcslen(lpszParamTranslation)))
{
//是不是翻译
TCHAR tszCvtType[64];
- TCHAR tszGetType[64];
memset(tszCvtType, '\0', sizeof(tszCvtType));
memset(tszKey, '\0', sizeof(tszKey));
memset(tszValue, '\0', sizeof(tszValue));
- memset(tszGetType, '\0', sizeof(tszGetType));
BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszKey, tszValue);
if (0 != _tcsnicmp(lpszParamName, tszKey, _tcslen(lpszParamName)))
@@ -328,9 +299,8 @@ BOOL XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCTSTR
}
memset(tszKey, '\0', sizeof(tszKey));
- BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszKey, tszGetType);
- BaseLib_OperatorString_GetKeyValue(pptszList[3], "=", tszKey, tszCvtType);
- XEngine_HTTPTask_Translation(lpszClientAddr, tszValue, _ttoi(tszGetType), _ttoi(tszCvtType));
+ BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszKey, tszCvtType);
+ XEngine_HTTPTask_Translation(lpszClientAddr, tszValue, _ttoi(tszCvtType));
}
else if (0 == _tcsnicmp(lpszParamLocker, tszValue, _tcslen(lpszParamLocker)))
{
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp
index 911b38d..7d47e61 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.cpp
@@ -1,7 +1,7 @@
#include "../XEngine_Hdr.h"
-BOOL XEngine_HTTPTask_BankInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszBankNumber, int nType)
+BOOL XEngine_HTTPTask_BankInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszBankNumber)
{
int nMsgLen = 4096;
int nPktLen = 4096;
@@ -28,14 +28,7 @@ BOOL XEngine_HTTPTask_BankInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszBankNumber, i
//解析JSON信息
if (!ModuleProtocol_Parse_Bank(ptszBodyBuffer, nBLen, &st_BankInfo))
{
- if (0 == nType)
- {
- ModuleProtocol_Packet_BankQuery(tszPktBuffer, &nPktLen, NULL, 1001, _T("banknumber is corrent"));
- }
- else
- {
- ModuleProtocol_Packet_BankQuery2(tszPktBuffer, &nPktLen, NULL, 1001);
- }
+ ModuleProtocol_Packet_BankQuery(tszPktBuffer, &nPktLen, NULL, 1001, _T("banknumber is corrent"));
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBodyBuffer);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
@@ -46,28 +39,14 @@ BOOL XEngine_HTTPTask_BankInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszBankNumber, i
//查询对应名称
if (!ModuleDatabase_Bank_Query(&st_BankInfo))
{
- if (0 == nType)
- {
- ModuleProtocol_Packet_BankQuery(tszPktBuffer, &nPktLen, NULL, 1010, _T("not found"));
- }
- else
- {
- ModuleProtocol_Packet_BankQuery2(tszPktBuffer, &nPktLen, NULL, 1010);
- }
+ ModuleProtocol_Packet_BankQuery(tszPktBuffer, &nPktLen, NULL, 1010, _T("not found"));
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求的银行卡信息没有找到:%s"), lpszClientAddr, lpszBankNumber);
return FALSE;
}
//打包发送
- if (0 == nType)
- {
- ModuleProtocol_Packet_BankQuery(tszPktBuffer, &nPktLen, &st_BankInfo);
- }
- else
- {
- ModuleProtocol_Packet_BankQuery2(tszPktBuffer, &nPktLen, &st_BankInfo);
- }
+ ModuleProtocol_Packet_BankQuery(tszPktBuffer, &nPktLen, &st_BankInfo);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,发送银行卡信息获取请求给服务器,查询号码:%s"), lpszClientAddr, lpszBankNumber);
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.h
index af85047..994afd9 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.h
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Bank.h
@@ -1,3 +1,3 @@
#pragma once
-BOOL XEngine_HTTPTask_BankInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszBankNumber, int nType);
\ No newline at end of file
+BOOL XEngine_HTTPTask_BankInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszBankNumber);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IDCard.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IDCard.cpp
index a4a6d29..7687f64 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IDCard.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IDCard.cpp
@@ -1,6 +1,6 @@
#include "../XEngine_Hdr.h"
-BOOL XEngine_HTTPTask_IDCard(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nType)
+BOOL XEngine_HTTPTask_IDCard(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer)
{
int nMsgLen = 4096;
int nPktLen = 4096;
@@ -21,14 +21,7 @@ BOOL XEngine_HTTPTask_IDCard(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
if (!ModuleProtocol_Parse_IDCard(lpszMsgBuffer, &st_IDCardInfo))
{
- if (0 == nType)
- {
- ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, NULL, NULL, 1001, _T("idnumber is incorrent"));
- }
- else
- {
- ModuleProtocol_Packet_IDQuery2(tszPktBuffer, &nPktLen, NULL, NULL, 1001);
- }
+ ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, NULL, NULL, 1001, _T("idnumber is incorrent"));
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求的身份证编号不正确:%s"), lpszClientAddr, lpszMsgBuffer);
@@ -37,14 +30,7 @@ BOOL XEngine_HTTPTask_IDCard(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
//验证身份证是否正确
if (!ModuleHelp_IDCard_CheckBirth(&st_IDCardInfo))
{
- if (0 == nType)
- {
- ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, NULL, NULL, 1002, _T("idnumber is incorrent"));
- }
- else
- {
- ModuleProtocol_Packet_IDQuery2(tszPktBuffer, &nPktLen, NULL, NULL, 1002);
- }
+ ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, NULL, NULL, 1002, _T("idnumber is incorrent"));
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求的身份证验证生日失败:%s"), lpszClientAddr, lpszMsgBuffer);
@@ -52,28 +38,14 @@ BOOL XEngine_HTTPTask_IDCard(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
}
if (!ModuleHelp_IDCard_CheckSum(&st_IDCardInfo))
{
- if (0 == nType)
- {
- ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, NULL, NULL, 1010, _T("not found"));
- }
- else
- {
- ModuleProtocol_Packet_IDQuery2(tszPktBuffer, &nPktLen, NULL, NULL, 1010);
- }
+ ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, NULL, NULL, 1010, _T("not found"));
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求的身份证验证校验码失败:%s"), lpszClientAddr, lpszMsgBuffer);
return FALSE;
}
ModuleDatabase_IDCard_QueryRegion(&st_IDRegion, &st_IDCardInfo);
- if (0 == nType)
- {
- ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, &st_IDCardInfo, &st_IDRegion);
- }
- else
- {
- ModuleProtocol_Packet_IDQuery2(tszPktBuffer, &nPktLen, &st_IDCardInfo, &st_IDRegion);
- }
+ ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, &st_IDCardInfo, &st_IDRegion);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求身份证号码验证与信息查询成功,号码:%s"), lpszClientAddr, lpszMsgBuffer);
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IDCard.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IDCard.h
index ba0cbec..51f9ee3 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IDCard.h
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IDCard.h
@@ -1,3 +1,3 @@
#pragma once
-BOOL XEngine_HTTPTask_IDCard(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nType);
\ No newline at end of file
+BOOL XEngine_HTTPTask_IDCard(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IPInfo.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IPInfo.cpp
index e1029f8..eecc72a 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IPInfo.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IPInfo.cpp
@@ -1,7 +1,7 @@
#include "../XEngine_Hdr.h"
-BOOL XEngine_HTTPTask_IPInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszIPAddr, int nType)
+BOOL XEngine_HTTPTask_IPInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszIPAddr)
{
int nMsgLen = 4096;
int nPktLen = 4096;
@@ -24,14 +24,7 @@ BOOL XEngine_HTTPTask_IPInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszIPAddr, int nTy
{
if (!ModuleDatabase_IPInfo_IPV4Query(&st_IPAddrInfo, lpszIPAddr))
{
- if (0 == nType)
- {
- ModuleProtocol_Packet_IPQuery(tszPktBuffer, &nPktLen, NULL, 1001, _T("ip is incorrent"));
- }
- else
- {
- ModuleProtocol_Packet_IPQuery2(tszPktBuffer, &nPktLen, NULL, 1001);
- }
+ ModuleProtocol_Packet_IPQuery(tszPktBuffer, &nPktLen, NULL, 1001, _T("ip is incorrent"));
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求的IP地址不正确:%s"), lpszClientAddr, lpszIPAddr);
@@ -42,14 +35,7 @@ BOOL XEngine_HTTPTask_IPInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszIPAddr, int nTy
{
if (!ModuleDatabase_IPInfo_IPV6Query(&st_IPAddrInfo, lpszIPAddr))
{
- if (0 == nType)
- {
- ModuleProtocol_Packet_IPQuery(tszPktBuffer, &nPktLen, NULL, 1010, _T("not found"));
- }
- else
- {
- ModuleProtocol_Packet_IPQuery2(tszPktBuffer, &nPktLen, NULL, 1010);
- }
+ ModuleProtocol_Packet_IPQuery(tszPktBuffer, &nPktLen, NULL, 1010, _T("not found"));
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求的IP地址不正确:%s"), lpszClientAddr, lpszIPAddr);
@@ -57,14 +43,7 @@ BOOL XEngine_HTTPTask_IPInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszIPAddr, int nTy
}
}
//通过此函数来打包成我们要发送的数据,就是打包成一条标准的HTTP协议
- if (0 == nType)
- {
- ModuleProtocol_Packet_IPQuery(tszPktBuffer, &nPktLen, &st_IPAddrInfo);
- }
- else
- {
- ModuleProtocol_Packet_IPQuery2(tszPktBuffer, &nPktLen, &st_IPAddrInfo);
- }
+ ModuleProtocol_Packet_IPQuery(tszPktBuffer, &nPktLen, &st_IPAddrInfo);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
//打包完毕后才能发送给客户端
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IPInfo.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IPInfo.h
index 127cdbd..ae35585 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IPInfo.h
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_IPInfo.h
@@ -1,3 +1,3 @@
#pragma once
-BOOL XEngine_HTTPTask_IPInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszIPAddr, int nType);
\ No newline at end of file
+BOOL XEngine_HTTPTask_IPInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszIPAddr);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Language.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Language.cpp
index eb770e1..e021103 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Language.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Language.cpp
@@ -1,7 +1,7 @@
#include "../XEngine_Hdr.h"
-BOOL XEngine_HTTPTask_Language(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nReplyType, int nConvertType)
+BOOL XEngine_HTTPTask_Language(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nConvertType)
{
int nMsgLen = 4096;
int nPktLen = 4096;
@@ -77,14 +77,7 @@ BOOL XEngine_HTTPTask_Language(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
ModuleHelp_Language_ConvertZh(st_OPenccConfig.tszFiletw2t, st_LanguageInfo.tszSourceStr, st_LanguageInfo.tszDestStr);
}
//打包发送
- if (0 == nReplyType)
- {
- ModuleProtocol_Packet_LanguageQuery(tszPktBuffer, &nPktLen, &st_LanguageInfo);
- }
- else
- {
- ModuleProtocol_Packet_LanguageQuery2(tszPktBuffer, &nPktLen, &st_LanguageInfo);
- }
+ ModuleProtocol_Packet_LanguageQuery(tszPktBuffer, &nPktLen, &st_LanguageInfo);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求语言转换成功,原始语言:%s,目标语言:%s"), lpszClientAddr, st_LanguageInfo.tszSourceStr, st_LanguageInfo.tszDestStr);
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Language.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Language.h
index af59a40..efc91f9 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Language.h
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Language.h
@@ -1,3 +1,3 @@
#pragma once
-BOOL XEngine_HTTPTask_Language(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nReplyType, int nConvertType);
\ No newline at end of file
+BOOL XEngine_HTTPTask_Language(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nConvertType);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Phone.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Phone.cpp
index a9fe612..f3a3234 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Phone.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Phone.cpp
@@ -1,7 +1,7 @@
#include "../XEngine_Hdr.h"
-BOOL XEngine_HTTPTask_PhoneInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszPhoneNumber, int nType)
+BOOL XEngine_HTTPTask_PhoneInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszPhoneNumber)
{
int nMsgLen = 4096;
int nPktLen = 4096;
@@ -21,28 +21,14 @@ BOOL XEngine_HTTPTask_PhoneInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszPhoneNumber,
st_PhoneInfo.nPhoneNumber = _ttoi64(lpszPhoneNumber);
if (!ModuleDatabase_Phone_Query(lpszPhoneNumber, &st_PhoneInfo))
{
- if (0 == nType)
- {
- ModuleProtocol_Packet_PhoneQuery(tszPktBuffer, &nPktLen, NULL, 1010, _T("not found"));
- }
- else
- {
- ModuleProtocol_Packet_PhoneQuery2(tszPktBuffer, &nPktLen, NULL, 1010);
- }
+ ModuleProtocol_Packet_PhoneQuery(tszPktBuffer, &nPktLen, NULL, 1010, _T("not found"));
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求的电话号码没有找到:%s"), lpszClientAddr, lpszPhoneNumber);
return FALSE;
}
//打包发送
- if (0 == nType)
- {
- ModuleProtocol_Packet_PhoneQuery(tszPktBuffer, &nPktLen, &st_PhoneInfo);
- }
- else
- {
- ModuleProtocol_Packet_PhoneQuery2(tszPktBuffer, &nPktLen, &st_PhoneInfo);
- }
+ ModuleProtocol_Packet_PhoneQuery(tszPktBuffer, &nPktLen, &st_PhoneInfo);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,发送电话信息获取请求给服务器,查询号码:%s"), lpszClientAddr, lpszPhoneNumber);
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Phone.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Phone.h
index 9a25ff5..2b955c8 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Phone.h
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Phone.h
@@ -1,3 +1,3 @@
#pragma once
-BOOL XEngine_HTTPTask_PhoneInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszPhoneNumber, int nType);
\ No newline at end of file
+BOOL XEngine_HTTPTask_PhoneInfo(LPCTSTR lpszClientAddr, LPCTSTR lpszPhoneNumber);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.cpp
index 67d4ab0..6d3027e 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.cpp
@@ -1,6 +1,6 @@
#include "../XEngine_Hdr.h"
-BOOL XEngine_HTTPTask_Translation(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nReplyType, int nConvertType)
+BOOL XEngine_HTTPTask_Translation(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nConvertType)
{
int nMsgLen = 4096;
int nPktLen = 4096;
@@ -27,14 +27,7 @@ BOOL XEngine_HTTPTask_Translation(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer,
//转换类型
if (!ModuleHelp_Translation_Convert((ENUM_XENGINE_APISERVICE_TRANSLATION_TYPE)nConvertType, tszTypeBuffer))
{
- if (0 == nReplyType)
- {
- ModuleProtocol_Packet_LanguageQuery(tszPktBuffer, &nPktLen, NULL, 1001, _T("type not support"));
- }
- else
- {
- ModuleProtocol_Packet_LanguageQuery2(tszPktBuffer, &nPktLen, NULL, 1001);
- }
+ ModuleProtocol_Packet_LanguageQuery(tszPktBuffer, &nPktLen, NULL, 1001, _T("type not support"));
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBodyBuffer);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
@@ -46,14 +39,7 @@ BOOL XEngine_HTTPTask_Translation(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer,
//解析数据
if (!ModuleProtocol_Parse_Translation(ptszBodyBuffer, nBLen, &st_LanguageInfo))
{
- if (0 == nReplyType)
- {
- ModuleProtocol_Packet_LanguageQuery(tszPktBuffer, &nPktLen, NULL, 1002, _T("translation failed"));
- }
- else
- {
- ModuleProtocol_Packet_LanguageQuery2(tszPktBuffer, &nPktLen, NULL, 1002);
- }
+ ModuleProtocol_Packet_LanguageQuery(tszPktBuffer, &nPktLen, NULL, 1002, _T("translation failed"));
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBodyBuffer);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
@@ -61,14 +47,7 @@ BOOL XEngine_HTTPTask_Translation(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer,
return FALSE;
}
//打包发送
- if (0 == nReplyType)
- {
- ModuleProtocol_Packet_LanguageQuery(tszPktBuffer, &nPktLen, &st_LanguageInfo);
- }
- else
- {
- ModuleProtocol_Packet_LanguageQuery2(tszPktBuffer, &nPktLen, &st_LanguageInfo);
- }
+ ModuleProtocol_Packet_LanguageQuery(tszPktBuffer, &nPktLen, &st_LanguageInfo);
RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen);
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBodyBuffer);
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.h
index 7b9a291..322fa84 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.h
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_Translation.h
@@ -1,3 +1,3 @@
#pragma once
-BOOL XEngine_HTTPTask_Translation(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nReplyType, int nConvertType);
\ No newline at end of file
+BOOL XEngine_HTTPTask_Translation(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nConvertType);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj
index 5618d0c..6bab032 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj
@@ -165,6 +165,7 @@
+
@@ -182,6 +183,7 @@
+
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters
index 5be50f7..1a80599 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters
@@ -66,6 +66,9 @@
源文件\XEngine_HTTPTask
+
+ 源文件\XEngine_HTTPTask
+
@@ -113,5 +116,8 @@
头文件\XEngine_HTTPTask
+
+ 头文件\XEngine_HTTPTask
+
\ No newline at end of file
--
Gitee
From e6d02b2fe2eea44d13d2198c6e2e867d1d14138e Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Thu, 27 Oct 2022 14:01:51 +0800
Subject: [PATCH 03/15] fixed:vs build print dir warn
---
.../ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj | 2 ++
.../ModulePlugin_Password/ModulePlugin_Password.vcxproj | 1 +
.../ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj | 1 +
.../ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj | 2 +-
4 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj
index 740493a..15e5169 100644
--- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj
@@ -75,6 +75,8 @@
$(SolutionDir)$(Configuration)\XEngine_Plugin\
../../XEngine_ThirdPart/jsoncpp;$(XEngine_Include);$(IncludePath)
$(XEngine_Lib32);$(LibraryPath)
+ $(Configuration)\XEngine_Plugin\
+ $(ProjectName)
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.vcxproj
index 2261346..5d98d2a 100644
--- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.vcxproj
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.vcxproj
@@ -76,6 +76,7 @@
$(SolutionDir)$(Configuration)\XEngine_Plugin\
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib32);$(LibraryPath)
+ $(Configuration)\XEngine_Plugin\
false
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj
index 8c1e055..f028dfc 100644
--- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj
@@ -75,6 +75,7 @@
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib32);$(LibraryPath)
$(SolutionDir)$(Configuration)\XEngine_Plugin\
+ $(Configuration)\XEngine_Plugin\
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj
index b7dc062..4b854a2 100644
--- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj
@@ -73,7 +73,7 @@
true
- $(Configuration)\
+ $(Configuration)\XEngine_Plugin\
$(SolutionDir)$(Configuration)\XEngine_Plugin\
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib32);$(LibraryPath)
--
Gitee
From 1a9be2be55158ca40bf1c6eac6b7053da6935afc Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 10:02:13 +0800
Subject: [PATCH 04/15] modify:error code define for db module
---
.../XEngine_ModuleDatabase/ModuleDB_Error.h | 24 ++++++++++++-------
.../ModuleDatabase_Bank.cpp | 4 ++--
.../ModuleDatabase_IDCard.cpp | 12 +++++-----
.../ModuleDatabase_IPInfo.cpp | 8 +++----
.../ModuleDatabase_Phone.cpp | 16 ++++++-------
.../XEngine_ModuleDatabase.vcxproj | 2 ++
.../XEngine_ModuleDatabase.vcxproj.filters | 12 ++++++++++
7 files changed, 49 insertions(+), 29 deletions(-)
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Error.h b/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Error.h
index 2cf7d30..6280a5f 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Error.h
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Error.h
@@ -13,21 +13,27 @@
//////////////////////////////////////////////////////////////////////////
// 导出的IP数据库错误
//////////////////////////////////////////////////////////////////////////
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_IPINFO_PARAMENT 0xB0001 //初始化失败.参数错误
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_IPINFO_NOTFOUND 0xB0002 //没有找到
+#define ERROR_APISERVICE_MODULE_DATABASE_IPINFO_PARAMENT 0xB0001 //初始化失败.参数错误
+#define ERROR_APISERVICE_MODULE_DATABASE_IPINFO_NOTFOUND 0xB0002 //没有找到
//////////////////////////////////////////////////////////////////////////
// 导出的身份证数据库错误
//////////////////////////////////////////////////////////////////////////
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_IDCARD_PARAMENT 0xB1001 //初始化失败.参数错误
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_IDCARD_NOTFOUND 0xB1002 //没有找到
+#define ERROR_APISERVICE_MODULE_DATABASE_IDCARD_PARAMENT 0xB1001 //初始化失败.参数错误
+#define ERROR_APISERVICE_MODULE_DATABASE_IDCARD_NOTFOUND 0xB1002 //没有找到
//////////////////////////////////////////////////////////////////////////
// 导出的电话数据库错误
//////////////////////////////////////////////////////////////////////////
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_PARAMENT 0xB2001 //初始化失败.参数错误
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_MALLOC 0xB2002 //申请内存失败
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_NOTFOUND 0xB1002 //没有找到
+#define ERROR_APISERVICE_MODULE_DATABASE_PHONE_PARAMENT 0xB2001 //初始化失败.参数错误
+#define ERROR_APISERVICE_MODULE_DATABASE_PHONE_MALLOC 0xB2002 //申请内存失败
+#define ERROR_APISERVICE_MODULE_DATABASE_PHONE_NOTFOUND 0xB1002 //没有找到
//////////////////////////////////////////////////////////////////////////
// 导出的银行卡数据库错误
//////////////////////////////////////////////////////////////////////////
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_BANK_PARAMENT 0xB2001 //参数错误
-#define ERROR_XENGINE_IPADDR_MODULE_DATABASE_BANK_NOTFOUND 0xB2002 //没有找到
\ No newline at end of file
+#define ERROR_APISERVICE_MODULE_DATABASE_BANK_PARAMENT 0xB2001 //参数错误
+#define ERROR_APISERVICE_MODULE_DATABASE_BANK_NOTFOUND 0xB2002 //没有找到
+//////////////////////////////////////////////////////////////////////////
+// 行政邮编错误
+//////////////////////////////////////////////////////////////////////////
+#define ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_NOTFOUND 0xB3001 //没有找到
+#define ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_PARAMENT 0xB3002 //参数错误
+#define ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_NOTSET 0xB3003 //没有设置查询参数
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Bank/ModuleDatabase_Bank.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Bank/ModuleDatabase_Bank.cpp
index 199d129..46b4953 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Bank/ModuleDatabase_Bank.cpp
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Bank/ModuleDatabase_Bank.cpp
@@ -81,7 +81,7 @@ BOOL CModuleDatabase_Bank::ModuleDatabase_Bank_Query(XENGINE_BANKINFO* pSt_BankI
if (NULL == pSt_BankInfo)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_BANK_PARAMENT;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_BANK_PARAMENT;
return FALSE;
}
//查询
@@ -101,7 +101,7 @@ BOOL CModuleDatabase_Bank::ModuleDatabase_Bank_Query(XENGINE_BANKINFO* pSt_BankI
if (nLine <= 0)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_BANK_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_BANK_NOTFOUND;
return FALSE;
}
_tcscpy(pSt_BankInfo->tszBankName, pptszResult[nRow + 1]);
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_IDCard/ModuleDatabase_IDCard.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_IDCard/ModuleDatabase_IDCard.cpp
index b5f7fb2..dcc268a 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_IDCard/ModuleDatabase_IDCard.cpp
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_IDCard/ModuleDatabase_IDCard.cpp
@@ -113,7 +113,7 @@ BOOL CModuleDatabase_IDCard::ModuleDatabase_IDCard_QueryProvincer(XENGINE_IDREGI
if ((NULL == pSt_IDRegion) || (NULL == pSt_IDInfo))
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IDCARD_PARAMENT;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IDCARD_PARAMENT;
return FALSE;
}
//查询
@@ -133,7 +133,7 @@ BOOL CModuleDatabase_IDCard::ModuleDatabase_IDCard_QueryProvincer(XENGINE_IDREGI
if (nLine <= 0)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IDCARD_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IDCARD_NOTFOUND;
return FALSE;
}
_tcscpy(pSt_IDRegion->tszProvincer, pptszResult[nRow + 1]);
@@ -166,7 +166,7 @@ BOOL CModuleDatabase_IDCard::ModuleDatabase_IDCard_QueryCity(XENGINE_IDREGION* p
if ((NULL == pSt_IDRegion) || (NULL == pSt_IDInfo))
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IDCARD_PARAMENT;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IDCARD_PARAMENT;
return FALSE;
}
//查询
@@ -186,7 +186,7 @@ BOOL CModuleDatabase_IDCard::ModuleDatabase_IDCard_QueryCity(XENGINE_IDREGION* p
if (nLine <= 0)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IDCARD_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IDCARD_NOTFOUND;
return FALSE;
}
_tcscpy(pSt_IDRegion->tszCity, pptszResult[nRow + 1]);
@@ -219,7 +219,7 @@ BOOL CModuleDatabase_IDCard::ModuleDatabase_IDCard_QueryCounty(XENGINE_IDREGION*
if ((NULL == pSt_IDRegion) || (NULL == pSt_IDInfo))
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IDCARD_PARAMENT;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IDCARD_PARAMENT;
return FALSE;
}
//查询
@@ -239,7 +239,7 @@ BOOL CModuleDatabase_IDCard::ModuleDatabase_IDCard_QueryCounty(XENGINE_IDREGION*
if (nLine <= 0)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IDCARD_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IDCARD_NOTFOUND;
return FALSE;
}
_tcscpy(pSt_IDRegion->tszCounty, pptszResult[nRow + 1]);
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_IPInfo/ModuleDatabase_IPInfo.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_IPInfo/ModuleDatabase_IPInfo.cpp
index 583d89d..3deacd6 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_IPInfo/ModuleDatabase_IPInfo.cpp
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_IPInfo/ModuleDatabase_IPInfo.cpp
@@ -86,7 +86,7 @@ BOOL CModuleDatabase_IPInfo::ModuleDatabase_IPInfo_IPV4Query(XENGINE_IPADDRINFO*
if ((NULL == pSt_IPAddrInfo) && (NULL == lpszIPAddr))
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IPINFO_PARAMENT;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IPINFO_PARAMENT;
return FALSE;
}
//查询
@@ -111,7 +111,7 @@ BOOL CModuleDatabase_IPInfo::ModuleDatabase_IPInfo_IPV4Query(XENGINE_IPADDRINFO*
if (nLine <= 0)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IPINFO_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IPINFO_NOTFOUND;
return FALSE;
}
_tcscpy(pSt_IPAddrInfo->tszIPStart, pptszResult[nRow + 1]);
@@ -153,7 +153,7 @@ BOOL CModuleDatabase_IPInfo::ModuleDatabase_IPInfo_IPV6Query(XENGINE_IPADDRINFO*
if ((NULL == pSt_IPAddrInfo) && (NULL == lpszIPAddr))
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IPINFO_PARAMENT;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IPINFO_PARAMENT;
return FALSE;
}
//查询
@@ -181,7 +181,7 @@ BOOL CModuleDatabase_IPInfo::ModuleDatabase_IPInfo_IPV6Query(XENGINE_IPADDRINFO*
if (nLine <= 0)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_IPINFO_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_IPINFO_NOTFOUND;
return FALSE;
}
_tcscpy(pSt_IPAddrInfo->tszIPStart, pptszResult[nRow + 1]);
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Phone/ModuleDatabase_Phone.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Phone/ModuleDatabase_Phone.cpp
index 2ebecde..5f6cdb7 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Phone/ModuleDatabase_Phone.cpp
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Phone/ModuleDatabase_Phone.cpp
@@ -41,7 +41,7 @@ BOOL CModuleDatabase_Phone::ModuleDatabase_Phone_Init(LPCTSTR lpszSQLFile)
if (NULL == lpszSQLFile)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_PARAMENT;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PHONE_PARAMENT;
return FALSE;
}
//打开数据库
@@ -49,7 +49,7 @@ BOOL CModuleDatabase_Phone::ModuleDatabase_Phone_Init(LPCTSTR lpszSQLFile)
if (NULL == pSt_File)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PHONE_NOTFOUND;
return FALSE;
}
//申请内存
@@ -57,7 +57,7 @@ BOOL CModuleDatabase_Phone::ModuleDatabase_Phone_Init(LPCTSTR lpszSQLFile)
if (NULL == ptszMsgBuffer)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_MALLOC;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PHONE_MALLOC;
return FALSE;
}
memset(ptszMsgBuffer, '\0', XENGINE_APISERVICE_DATABASE_PHONE_BUFFER_SIZE);
@@ -117,7 +117,7 @@ BOOL CModuleDatabase_Phone::ModuleDatabase_Phone_Query(LPCTSTR lpszPhoneNumber,
if ((NULL == lpszPhoneNumber) || (NULL == pSt_PhoneInfo))
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_PARAMENT;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PHONE_PARAMENT;
return FALSE;
}
size_t nPLen = _tcslen(lpszPhoneNumber);
@@ -219,7 +219,7 @@ BOOL CModuleDatabase_Phone::ModuleDatabase_Phone_Convert(LPCTSTR lpszPhoneInfo,
if (NULL == ptszTokStr)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PHONE_NOTFOUND;
return FALSE;
}
_tcscpy(pSt_PhoneInfo->tszProvincer, ptszTokStr);
@@ -228,7 +228,7 @@ BOOL CModuleDatabase_Phone::ModuleDatabase_Phone_Convert(LPCTSTR lpszPhoneInfo,
if (NULL == ptszTokStr)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PHONE_NOTFOUND;
return FALSE;
}
_tcscpy(pSt_PhoneInfo->tszCity, ptszTokStr);
@@ -237,7 +237,7 @@ BOOL CModuleDatabase_Phone::ModuleDatabase_Phone_Convert(LPCTSTR lpszPhoneInfo,
if (NULL == ptszTokStr)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PHONE_NOTFOUND;
return FALSE;
}
pSt_PhoneInfo->nZipCode = _ttoi(ptszTokStr);
@@ -246,7 +246,7 @@ BOOL CModuleDatabase_Phone::ModuleDatabase_Phone_Convert(LPCTSTR lpszPhoneInfo,
if (NULL == ptszTokStr)
{
DBModule_IsErrorOccur = TRUE;
- DBModule_dwErrorCode = ERROR_XENGINE_IPADDR_MODULE_DATABASE_PHONE_NOTFOUND;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PHONE_NOTFOUND;
return FALSE;
}
pSt_PhoneInfo->nAreaCode = _ttoi(ptszTokStr);
diff --git a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj
index 87b52cb..d2be24a 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj
+++ b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj
@@ -168,6 +168,7 @@
+
@@ -178,6 +179,7 @@
+
Create
Create
diff --git a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj.filters b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj.filters
index fe0fa12..213672e 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj.filters
+++ b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj.filters
@@ -37,6 +37,12 @@
{d795f584-6d94-4d87-85a9-b6787ccd8783}
+
+ {bc7c2fd0-b3ee-4525-aa21-9b255773a05f}
+
+
+ {5095bb8f-8ecf-4876-ad6b-f9fe6bcbcc3c}
+
@@ -63,6 +69,9 @@
头文件\ModuleDatabase_Bank
+
+ 头文件\ModuleDatabase_ZIPCode
+
@@ -83,6 +92,9 @@
源文件\ModuleDatabase_Bank
+
+ 源文件\ModuleDatabase_ZIPCode
+
--
Gitee
From 3fb049446aba40e118f5cb5d0142bf0acf8621bd Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 11:23:46 +0800
Subject: [PATCH 05/15] update:zip database file configure
---
XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h | 1 +
.../ModuleConfigure_Json/ModuleConfigure_Json.cpp | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h
index 0aac0a0..dbcca66 100644
--- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h
+++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h
@@ -43,6 +43,7 @@ typedef struct
TCHAR tszIDData[MAX_PATH]; //ID数据库地址
TCHAR tszPhoneData[MAX_PATH]; //电话号码数据库地址
TCHAR tszBankData[MAX_PATH]; //银行卡数据库地址
+ TCHAR tszZIPCodeData[MAX_PATH]; //邮编数据库地址
TCHAR tszBankUrl[MAX_PATH]; //银行卡验证地址
TCHAR tszTranslationUrl[MAX_PATH]; //翻译接口
}st_XApi;
diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp
index fe6faab..7d9cee1 100644
--- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp
+++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp
@@ -119,7 +119,7 @@ BOOL CModuleConfigure_Json::ModuleConfigure_Json_File(LPCTSTR lpszConfigFile, XE
pSt_ServerConfig->st_XLog.nMaxCount = st_JsonXLog["MaxCount"].asInt();
pSt_ServerConfig->st_XLog.nLogLeave = st_JsonXLog["LogLeave"].asInt();
- if (st_JsonRoot["XApi"].empty() || (6 != st_JsonRoot["XApi"].size()))
+ if (st_JsonRoot["XApi"].empty() || (7 != st_JsonRoot["XApi"].size()))
{
Config_IsErrorOccur = TRUE;
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XDB;
@@ -130,6 +130,7 @@ BOOL CModuleConfigure_Json::ModuleConfigure_Json_File(LPCTSTR lpszConfigFile, XE
_tcscpy(pSt_ServerConfig->st_XApi.tszIDData, st_JsonXApi["tszIDData"].asCString());
_tcscpy(pSt_ServerConfig->st_XApi.tszPhoneData, st_JsonXApi["tszPhoneData"].asCString());
_tcscpy(pSt_ServerConfig->st_XApi.tszBankData, st_JsonXApi["tszBankData"].asCString());
+ _tcscpy(pSt_ServerConfig->st_XApi.tszZIPCodeData, st_JsonXApi["tszZIPCodeData"].asCString());
_tcscpy(pSt_ServerConfig->st_XApi.tszBankUrl, st_JsonXApi["tszBankUrl"].asCString());
_tcscpy(pSt_ServerConfig->st_XApi.tszTranslationUrl, st_JsonXApi["tszTranslationUrl"].asCString());
--
Gitee
From f3f2609095f77fa6c2e4456b814033f3ebc0817b Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 11:24:48 +0800
Subject: [PATCH 06/15] added:zipcode query for db
---
.../XEngine_ModuleDatabase/Makefile | 4 +-
.../XEngine_ModuleDatabase/ModuleDB_Define.h | 56 ++-
.../ModuleDatabase_ZIPCode.cpp | 329 ++++++++++++++++++
.../ModuleDatabase_ZIPCode.h | 30 ++
.../XEngine_ModuleDatabase.def | 7 +-
XEngine_Source/XEngine_ModuleDatabase/pch.cpp | 21 ++
6 files changed, 444 insertions(+), 3 deletions(-)
create mode 100644 XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp
create mode 100644 XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.h
diff --git a/XEngine_Source/XEngine_ModuleDatabase/Makefile b/XEngine_Source/XEngine_ModuleDatabase/Makefile
index 91276a9..d55e9dc 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/Makefile
+++ b/XEngine_Source/XEngine_ModuleDatabase/Makefile
@@ -8,7 +8,7 @@ LOADBIN = -L /usr/local/lib/XEngine_Release/XEngine_BaseLib -L /usr/local/lib/XE
LIB = -lXEngine_BaseLib -lHelpComponents_DataBase
LIBEX = -ldl -lpthread
LOADSO = -Wl,-rpath=./,--disable-new-dtags
-LIBINCLUDE = ModuleDatabase_IDCard.o ModuleDatabase_IPInfo.o ModuleDatabase_Phone.o ModuleDatabase_Bank.o pch.o
+LIBINCLUDE = ModuleDatabase_IDCard.o ModuleDatabase_IPInfo.o ModuleDatabase_Phone.o ModuleDatabase_Bank.o ModuleDatabase_ZIPCode.o pch.o
ifeq ($(shell uname),Darwin)
SHAREDLL = dylib
@@ -45,6 +45,8 @@ ModuleDatabase_Phone.o:./ModuleDatabase_Phone/ModuleDatabase_Phone.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(INCLUDE) ./ModuleDatabase_Phone/ModuleDatabase_Phone.cpp
ModuleDatabase_Bank.o:./ModuleDatabase_Bank/ModuleDatabase_Bank.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(INCLUDE) ./ModuleDatabase_Bank/ModuleDatabase_Bank.cpp
+ModuleDatabase_ZIPCode.o:./ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp
+ $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(INCLUDE) ./ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp
pch.o:./pch.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(INCLUDE) ./pch.cpp
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Define.h b/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Define.h
index 1bac187..4c89e66 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Define.h
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Define.h
@@ -207,4 +207,58 @@ extern "C" BOOL ModuleDatabase_Bank_Destory();
意思:是否成功
备注:
*********************************************************************/
-extern "C" BOOL ModuleDatabase_Bank_Query(XENGINE_BANKINFO * pSt_BankInfo);
\ No newline at end of file
+extern "C" BOOL ModuleDatabase_Bank_Query(XENGINE_BANKINFO * pSt_BankInfo);
+/************************************************************************/
+/* 导出的邮编行政信息函数 */
+/************************************************************************/
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_Init
+函数功能:初始化数据库
+ 参数.一:lpszSQLFile
+ In/Out:In
+ 类型:常量字符指针
+ 可空:N
+ 意思:输入要操作的SQL文件
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL ModuleDatabase_ZIPCode_Init(LPCTSTR lpszSQLFile);
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_Destory
+函数功能:销毁
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL ModuleDatabase_ZIPCode_Destory();
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_QueryZIPCode
+函数功能:通过邮编查询行政地址信息
+ 参数.一:pSt_ZIPInfo
+ In/Out:In/Out
+ 类型:数据结构指针
+ 可空:N
+ 意思:输入要查询的邮编,输出查询到的信息
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL ModuleDatabase_ZIPCode_QueryZIPCode(XENGINE_ZIPINFO* pSt_ZIPInfo);
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_QueryName
+函数功能:通过行政名称查询内容
+ 参数.一:pSt_ZIPInfo
+ In/Out:In/Out
+ 类型:数据结构指针
+ 可空:N
+ 意思:输入要查询的信息,输出查询到的信息
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL ModuleDatabase_ZIPCode_QueryName(XENGINE_ZIPINFO* pSt_ZIPInfo);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp
new file mode 100644
index 0000000..8f7b320
--- /dev/null
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp
@@ -0,0 +1,329 @@
+#include "pch.h"
+#include "ModuleDatabase_ZIPCode.h"
+/********************************************************************
+// Created: 2022/10/27 16:16:03
+// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModuleDatabase\ModuleDatabase_ZIPCode\ModuleDatabase_ZIPCode.cpp
+// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModuleDatabase\ModuleDatabase_ZIPCode
+// File Base: ModuleDatabase_ZIPCode
+// File Ext: cpp
+// Project: XEngine(网络通信引擎)
+// Author: qyt
+// Purpose: 邮政编码地址信息数据库
+// History:
+*********************************************************************/
+CModuleDatabase_ZIPCode::CModuleDatabase_ZIPCode()
+{
+}
+CModuleDatabase_ZIPCode::~CModuleDatabase_ZIPCode()
+{
+
+}
+//////////////////////////////////////////////////////////////////////////
+// 公有函数
+//////////////////////////////////////////////////////////////////////////
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_Init
+函数功能:初始化数据库
+ 参数.一:lpszSQLFile
+ In/Out:In
+ 类型:常量字符指针
+ 可空:N
+ 意思:输入要操作的SQL文件
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_Init(LPCTSTR lpszSQLFile)
+{
+ DBModule_IsErrorOccur = FALSE;
+ //打开数据库
+ if (!DataBase_SQLite_Open(&xhSQL, lpszSQLFile))
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = DataBase_GetLastError();
+ return FALSE;
+ }
+ return TRUE;
+}
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_Destory
+函数功能:销毁
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_Destory()
+{
+ DBModule_IsErrorOccur = FALSE;
+
+ DataBase_SQLite_Close(xhSQL);
+ return TRUE;
+}
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_QueryZIPCode
+函数功能:通过邮编查询行政地址信息
+ 参数.一:pSt_ZIPInfo
+ In/Out:In/Out
+ 类型:数据结构指针
+ 可空:N
+ 意思:输入要查询的邮编,输出查询到的信息
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_QueryZIPCode(XENGINE_ZIPINFO* pSt_ZIPInfo)
+{
+ DBModule_IsErrorOccur = FALSE;
+
+ //查询
+ int nLine = 0;
+ int nRow = 0;
+ TCHAR** pptszResult;
+ TCHAR tszSQLStatement[1024];
+
+ memset(tszSQLStatement, '\0', sizeof(tszSQLStatement));
+ _stprintf(tszSQLStatement, _T("SELECT * FROM `hy_area` WHERE zip_code = %d"), pSt_ZIPInfo->nZipCode);
+ if (!DataBase_SQLite_GetTable(xhSQL, tszSQLStatement, &pptszResult, &nLine, &nRow))
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = DataBase_GetLastError();
+ return FALSE;
+ }
+ if (nLine <= 0)
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_NOTFOUND;
+ return FALSE;
+ }
+ int nFliedValue = nRow;
+ //三个级别 省->市->区/县
+ _tcscpy(pSt_ZIPInfo->tszPinYin, pptszResult[nFliedValue + 6]);
+ pSt_ZIPInfo->nLevel = _ttoi(pptszResult[nFliedValue + 5]);
+ pSt_ZIPInfo->nAreaCode = _ttoi(pptszResult[nFliedValue + 7]);
+ pSt_ZIPInfo->dlLng = _ttof(pptszResult[nFliedValue + 10]);
+ pSt_ZIPInfo->dlLat = _ttof(pptszResult[nFliedValue + 11]);
+ if (3 == pSt_ZIPInfo->nLevel)
+ {
+ //获取上级节点
+ int nParentID = 0;
+ _tcscpy(pSt_ZIPInfo->tszCounty, pptszResult[nFliedValue + 2]);
+ ModuleDatabase_ZIPCode_QueryParentByID(_ttoi(pptszResult[nFliedValue + 1]), pSt_ZIPInfo->tszCity, &nParentID);
+ ModuleDatabase_ZIPCode_QueryParentByID(nParentID, pSt_ZIPInfo->tszProvincer, &nParentID);
+ }
+ else if (2 == pSt_ZIPInfo->nLevel)
+ {
+ int nParentID = 0;
+ _tcscpy(pSt_ZIPInfo->tszCity, pptszResult[nFliedValue + 2]);
+ ModuleDatabase_ZIPCode_QueryParentByID(_ttoi(pptszResult[nFliedValue + 1]), pSt_ZIPInfo->tszProvincer);
+ }
+ else
+ {
+ _tcscpy(pSt_ZIPInfo->tszProvincer, pptszResult[nFliedValue + 2]);
+ }
+
+ DataBase_SQLite_FreeTable(pptszResult);
+ return TRUE;
+}
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_QueryName
+函数功能:通过行政名称查询内容
+ 参数.一:pSt_ZIPInfo
+ In/Out:In/Out
+ 类型:数据结构指针
+ 可空:N
+ 意思:输入要查询的信息,输出查询到的信息
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_QueryName(XENGINE_ZIPINFO* pSt_ZIPInfo)
+{
+ DBModule_IsErrorOccur = FALSE;
+
+ if (NULL == pSt_ZIPInfo)
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_PARAMENT;
+ return FALSE;
+ }
+ //查询
+ int nLine = 0;
+ int nRow = 0;
+ TCHAR** pptszResult;
+ TCHAR tszSQLStatement[1024];
+
+ memset(tszSQLStatement, '\0', sizeof(tszSQLStatement));
+
+ if ((_tcslen(pSt_ZIPInfo->tszCounty) > 0) && (_tcslen(pSt_ZIPInfo->tszCity) == 0))
+ {
+ int nParentID = 0;
+ ModuleDatabase_ZIPCode_QueryParentByName(pSt_ZIPInfo->tszCounty, &nParentID);
+ ModuleDatabase_ZIPCode_QueryParentByID(nParentID, pSt_ZIPInfo->tszCity, &nParentID);
+ ModuleDatabase_ZIPCode_QueryParentByID(nParentID, pSt_ZIPInfo->tszProvincer, &nParentID);
+
+ _stprintf(tszSQLStatement, _T("SELECT * FROM `hy_area` WHERE name = '%s'"), pSt_ZIPInfo->tszCounty);
+ }
+ else if ((_tcslen(pSt_ZIPInfo->tszCounty) == 0) && (_tcslen(pSt_ZIPInfo->tszCity) > 0))
+ {
+ int nParentID = 0;
+ ModuleDatabase_ZIPCode_QueryParentByName(pSt_ZIPInfo->tszCity, &nParentID);
+ ModuleDatabase_ZIPCode_QueryParentByID(nParentID, pSt_ZIPInfo->tszProvincer, &nParentID);
+
+ _stprintf(tszSQLStatement, _T("SELECT * FROM `hy_area` WHERE name = '%s'"), pSt_ZIPInfo->tszCity);
+ }
+ else
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_NOTSET;
+ return FALSE;
+ }
+ //查询内容
+ if (!DataBase_SQLite_GetTable(xhSQL, tszSQLStatement, &pptszResult, &nLine, &nRow))
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = DataBase_GetLastError();
+ return FALSE;
+ }
+ if (nLine <= 0)
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_NOTFOUND;
+ return FALSE;
+ }
+ int nFliedValue = nRow;
+ pSt_ZIPInfo->nLevel = _ttoi(pptszResult[nFliedValue + 5]);
+ pSt_ZIPInfo->nAreaCode = _ttoi(pptszResult[nFliedValue + 7]);
+ pSt_ZIPInfo->nZipCode = _ttoi(pptszResult[nFliedValue + 8]);
+ pSt_ZIPInfo->dlLng = _ttof(pptszResult[nFliedValue + 10]);
+ pSt_ZIPInfo->dlLat = _ttof(pptszResult[nFliedValue + 11]);
+ _tcscpy(pSt_ZIPInfo->tszPinYin, pptszResult[nFliedValue + 6]);
+
+ DataBase_SQLite_FreeTable(pptszResult);
+ return TRUE;
+}
+//////////////////////////////////////////////////////////////////////////
+// 保护函数
+//////////////////////////////////////////////////////////////////////////
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_QueryParentByID
+函数功能:通过ID查询父节点信息
+ 参数.一:nParentID
+ In/Out:In
+ 类型:整数型
+ 可空:N
+ 意思:输入要查询的父节点
+ 参数.二:ptszParentStr
+ In/Out:Out
+ 类型:字符指针
+ 可空:N
+ 意思:输出查询到的父节点名
+ 参数.三:pInt_ParentID
+ In/Out:Out
+ 类型:整数型指针
+ 可空:Y
+ 意思:导出上级节点ID
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_QueryParentByID(int nParentID, TCHAR* ptszParentStr, int* pInt_ParentID /* = NULL */)
+{
+ DBModule_IsErrorOccur = FALSE;
+
+ if (NULL == ptszParentStr)
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_PARAMENT;
+ return FALSE;
+ }
+ //查询
+ int nLine = 0;
+ int nRow = 0;
+ TCHAR** pptszResult;
+ TCHAR tszSQLStatement[1024];
+
+ memset(tszSQLStatement, '\0', sizeof(tszSQLStatement));
+ _stprintf(tszSQLStatement, _T("SELECT * FROM `hy_area` WHERE id = %d"), nParentID);
+ if (!DataBase_SQLite_GetTable(xhSQL, tszSQLStatement, &pptszResult, &nLine, &nRow))
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = DataBase_GetLastError();
+ return FALSE;
+ }
+ if (nLine <= 0)
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_NOTFOUND;
+ return FALSE;
+ }
+ int nFliedValue = nRow;
+ if (NULL != pInt_ParentID)
+ {
+ *pInt_ParentID = _ttoi(pptszResult[nFliedValue + 1]);
+ }
+ _tcscpy(ptszParentStr, pptszResult[nFliedValue + 3]);
+
+ DataBase_SQLite_FreeTable(pptszResult);
+ return TRUE;
+}
+/********************************************************************
+函数名称:ModuleDatabase_ZIPCode_QueryParentByName
+函数功能:通过名称查询父节点信息
+ 参数.一:lpszName
+ In/Out:In
+ 类型:常量字符指针
+ 可空:N
+ 意思:输入要查询的名称
+ 参数.二:pInt_ParentID
+ In/Out:Out
+ 类型:整数型指针
+ 可空:Y
+ 意思:导出上级节点ID
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_QueryParentByName(LPCTSTR lpszName, int* pInt_ParentID /* = NULL */)
+{
+ DBModule_IsErrorOccur = FALSE;
+
+ if (NULL == lpszName)
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_PARAMENT;
+ return FALSE;
+ }
+ //查询
+ int nLine = 0;
+ int nRow = 0;
+ TCHAR** pptszResult;
+ TCHAR tszSQLStatement[1024];
+
+ memset(tszSQLStatement, '\0', sizeof(tszSQLStatement));
+ _stprintf(tszSQLStatement, _T("SELECT * FROM `hy_area` WHERE name = '%s'"), lpszName);
+ if (!DataBase_SQLite_GetTable(xhSQL, tszSQLStatement, &pptszResult, &nLine, &nRow))
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = DataBase_GetLastError();
+ return FALSE;
+ }
+ if (nLine <= 0)
+ {
+ DBModule_IsErrorOccur = TRUE;
+ DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_ZIPCODE_NOTFOUND;
+ return FALSE;
+ }
+ int nFliedValue = nRow;
+ if (NULL != pInt_ParentID)
+ {
+ *pInt_ParentID = _ttoi(pptszResult[nFliedValue + 1]);
+ }
+ DataBase_SQLite_FreeTable(pptszResult);
+ return TRUE;
+}
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.h b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.h
new file mode 100644
index 0000000..0935005
--- /dev/null
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.h
@@ -0,0 +1,30 @@
+#pragma once
+/********************************************************************
+// Created: 2022/10/27 16:15:22
+// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModuleDatabase\ModuleDatabase_ZIPCode\ModuleDatabase_ZIPCode.h
+// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModuleDatabase\ModuleDatabase_ZIPCode
+// File Base: ModuleDatabase_ZIPCode
+// File Ext: h
+// Project: XEngine(网络通信引擎)
+// Author: qyt
+// Purpose: 邮政编码地址信息数据库
+// History:
+*********************************************************************/
+
+
+class CModuleDatabase_ZIPCode
+{
+public:
+ CModuleDatabase_ZIPCode();
+ ~CModuleDatabase_ZIPCode();
+public:
+ BOOL ModuleDatabase_ZIPCode_Init(LPCTSTR lpszSQLFile);
+ BOOL ModuleDatabase_ZIPCode_Destory();
+ BOOL ModuleDatabase_ZIPCode_QueryZIPCode(XENGINE_ZIPINFO* pSt_ZIPInfo);
+ BOOL ModuleDatabase_ZIPCode_QueryName(XENGINE_ZIPINFO* pSt_ZIPInfo);
+protected:
+ BOOL ModuleDatabase_ZIPCode_QueryParentByID(int nParentID, TCHAR* ptszParentStr, int* pInt_ParentID = NULL);
+ BOOL ModuleDatabase_ZIPCode_QueryParentByName(LPCTSTR lpszName, int* pInt_ParentID = NULL);
+private:
+ XHDATA xhSQL;
+};
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.def b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.def
index 32665b9..090f98b 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.def
+++ b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.def
@@ -18,4 +18,9 @@ EXPORTS
ModuleDatabase_Bank_Init
ModuleDatabase_Bank_Destory
- ModuleDatabase_Bank_Query
\ No newline at end of file
+ ModuleDatabase_Bank_Query
+
+ ModuleDatabase_ZIPCode_Init
+ ModuleDatabase_ZIPCode_Destory
+ ModuleDatabase_ZIPCode_QueryZIPCode
+ ModuleDatabase_ZIPCode_QueryName
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleDatabase/pch.cpp b/XEngine_Source/XEngine_ModuleDatabase/pch.cpp
index 8982b5b..5945e18 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/pch.cpp
+++ b/XEngine_Source/XEngine_ModuleDatabase/pch.cpp
@@ -3,6 +3,7 @@
#include "ModuleDatabase_IPInfo/ModuleDatabase_IPInfo.h"
#include "ModuleDatabase_Phone/ModuleDatabase_Phone.h"
#include "ModuleDatabase_Bank/ModuleDatabase_Bank.h"
+#include "ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.h"
/********************************************************************
// Created: 2022/02/28 13:26:15
// File Name: D:\XEngine_IPInfo\XEngine_Source\XEngine_ModuleDatabase\pch.cpp
@@ -21,6 +22,7 @@ CModuleDatabase_IPInfo m_IPAddr;
CModuleDatabase_IDCard m_IDCard;
CModuleDatabase_Phone m_Phone;
CModuleDatabase_Bank m_Bank;
+CModuleDatabase_ZIPCode m_ZIPCode;
//////////////////////////////////////////////////////////////////////////
/// 导出的函数
//////////////////////////////////////////////////////////////////////////
@@ -95,4 +97,23 @@ extern "C" BOOL ModuleDatabase_Bank_Destory()
extern "C" BOOL ModuleDatabase_Bank_Query(XENGINE_BANKINFO * pSt_BankInfo)
{
return m_Bank.ModuleDatabase_Bank_Query(pSt_BankInfo);
+}
+/************************************************************************/
+/* 导出的邮编行政信息函数 */
+/************************************************************************/
+extern "C" BOOL ModuleDatabase_ZIPCode_Init(LPCTSTR lpszSQLFile)
+{
+ return m_ZIPCode.ModuleDatabase_ZIPCode_Init(lpszSQLFile);
+}
+extern "C" BOOL ModuleDatabase_ZIPCode_Destory()
+{
+ return m_ZIPCode.ModuleDatabase_ZIPCode_Destory();
+}
+extern "C" BOOL ModuleDatabase_ZIPCode_QueryZIPCode(XENGINE_ZIPINFO * pSt_ZIPInfo)
+{
+ return m_ZIPCode.ModuleDatabase_ZIPCode_QueryZIPCode(pSt_ZIPInfo);
+}
+extern "C" BOOL ModuleDatabase_ZIPCode_QueryName(XENGINE_ZIPINFO * pSt_ZIPInfo)
+{
+ return m_ZIPCode.ModuleDatabase_ZIPCode_QueryName(pSt_ZIPInfo);
}
\ No newline at end of file
--
Gitee
From b5e54352a2a9ec9300c4eb746eab16976763a619 Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 11:25:19 +0800
Subject: [PATCH 07/15] added:zipcode protocol packet and parse
---
.../ModuleProtocol_Define.h | 60 ++++++++++++++-
.../ModuleProtocol_Packet.cpp | 76 +++++++++++++++++++
.../ModuleProtocol_Packet.h | 1 +
.../ModuleProtocol_Parse.cpp | 64 ++++++++++++++++
.../ModuleProtocol_Parse.h | 1 +
.../XEngine_ModuleProtocol.def | 4 +-
XEngine_Source/XEngine_ModuleProtocol/pch.cpp | 8 ++
7 files changed, 212 insertions(+), 2 deletions(-)
diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h
index c9c2537..20d54e3 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h
+++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h
@@ -256,6 +256,40 @@ extern "C" BOOL ModuleProtocol_Packet_LanguageQuery(TCHAR* ptszMsgBuffer, int* p
*********************************************************************/
extern "C" BOOL ModuleProtocol_Packet_Locker(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
/********************************************************************
+函数名称:ModuleProtocol_Packet_ZIPCode
+函数功能:打包行政邮编信息协议
+ 参数.一:ptszMsgBuffer
+ In/Out:Out
+ 类型:字符指针
+ 可空:N
+ 意思:输出打包的数据信息
+ 参数.二:pInt_MsgLen
+ In/Out:Out
+ 类型:整数型指针
+ 可空:N
+ 意思:输出打包大小
+ 参数.三:pSt_ZIPInfo
+ In/Out:In
+ 类型:数据结构指针
+ 可空:N
+ 意思:输入要打包的数据
+ 参数.四:nCode
+ In/Out:In
+ 类型:整数型
+ 可空:Y
+ 意思:输入返回的值
+ 参数.五:lpszMsgBuffer
+ In/Out:In
+ 类型:常量字符指针
+ 可空:Y
+ 意思:输入操作结果
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL ModuleProtocol_Packet_ZIPCode(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_ZIPINFO* pSt_ZIPInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
+/********************************************************************
函数名称:ModuleProtocol_Packet_P2PLan
函数功能:响应同步局域网地址列表
参数.一:ptszMsgBuffer
@@ -483,4 +517,28 @@ extern "C" BOOL ModuleProtocol_Parse_P2PClient(LPCTSTR lpszMsgBuffer, int nMsgLe
意思:是否成功
备注:
*********************************************************************/
-extern "C" BOOL ModuleProtocol_Parse_CDKey(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_Authorize);
\ No newline at end of file
+extern "C" BOOL ModuleProtocol_Parse_CDKey(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_Authorize);
+/********************************************************************
+函数名称:ModuleProtocol_Parse_ZIPCode
+函数功能:解析邮政地址信息
+ 参数.一:lpszMsgBuffer
+ In/Out:In
+ 类型:常量字符指针
+ 可空:N
+ 意思:输入要解析的缓冲区
+ 参数.二:nMsgLen
+ In/Out:In
+ 类型:整数型
+ 可空:N
+ 意思:输入缓冲区大小
+ 参数.三:pSt_ZIPInfo
+ In/Out:Out
+ 类型:数据结构指针
+ 可空:N
+ 意思:输出解析后的信息
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL ModuleProtocol_Parse_ZIPCode(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_ZIPINFO* pSt_ZIPInfo);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp
index b343c21..3985177 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp
+++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp
@@ -509,6 +509,82 @@ BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_Locker(TCHAR* ptszMsgBuffer,
return TRUE;
}
/********************************************************************
+函数名称:ModuleProtocol_Packet_ZIPCode
+函数功能:打包行政邮编信息协议
+ 参数.一:ptszMsgBuffer
+ In/Out:Out
+ 类型:字符指针
+ 可空:N
+ 意思:输出打包的数据信息
+ 参数.二:pInt_MsgLen
+ In/Out:Out
+ 类型:整数型指针
+ 可空:N
+ 意思:输出打包大小
+ 参数.三:pSt_ZIPInfo
+ In/Out:In
+ 类型:数据结构指针
+ 可空:N
+ 意思:输入要打包的数据
+ 参数.四:nCode
+ In/Out:In
+ 类型:整数型
+ 可空:Y
+ 意思:输入返回的值
+ 参数.五:lpszMsgBuffer
+ In/Out:In
+ 类型:常量字符指针
+ 可空:Y
+ 意思:输入操作结果
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CModuleProtocol_Packet::ModuleProtocol_Packet_ZIPCode(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_ZIPINFO* pSt_ZIPInfo, int nCode /* = 0 */, LPCTSTR lpszMsgBuffer /* = NULL */)
+{
+ ModuleProtocol_IsErrorOccur = FALSE;
+
+ if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
+ {
+ ModuleProtocol_IsErrorOccur = TRUE;
+ ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT;
+ return FALSE;
+ }
+ Json::Value st_JsonRoot;
+ Json::Value st_JsonObject;
+ Json::StreamWriterBuilder st_JsonBuilder;
+
+ if (0 == nCode)
+ {
+ st_JsonObject["dlLat"] = pSt_ZIPInfo->dlLat;
+ st_JsonObject["dlLng"] = pSt_ZIPInfo->dlLng;
+ st_JsonObject["nAreaCode"] = pSt_ZIPInfo->nAreaCode;
+ st_JsonObject["nLevel"] = pSt_ZIPInfo->nLevel;
+ st_JsonObject["nZipCode"] = pSt_ZIPInfo->nZipCode;
+ st_JsonObject["tszCity"] = pSt_ZIPInfo->tszCity;
+ st_JsonObject["tszCounty"] = pSt_ZIPInfo->tszCounty;
+ st_JsonObject["tszPinYin"] = pSt_ZIPInfo->tszPinYin;
+ st_JsonObject["tszProvincer"] = pSt_ZIPInfo->tszProvincer;
+ }
+
+ st_JsonRoot["code"] = nCode;
+ if (NULL == lpszMsgBuffer)
+ {
+ st_JsonRoot["msg"] = "success";
+ }
+ else
+ {
+ st_JsonRoot["msg"] = lpszMsgBuffer;
+ }
+ st_JsonRoot["data"] = st_JsonObject;
+ st_JsonBuilder["emitUTF8"] = true;
+
+ *pInt_MsgLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length();
+ memcpy(ptszMsgBuffer, Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), *pInt_MsgLen);
+ return TRUE;
+}
+/********************************************************************
函数名称:ModuleProtocol_Packet_P2PLan
函数功能:响应同步局域网地址列表
参数.一:ptszMsgBuffer
diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h
index 9123f87..016227b 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h
+++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h
@@ -29,6 +29,7 @@ public:
BOOL ModuleProtocol_Packet_BankQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_BANKINFO* pSt_BankInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
BOOL ModuleProtocol_Packet_LanguageQuery(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_LANGUAGEINFO* pSt_LanguageInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
BOOL ModuleProtocol_Packet_Locker(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
+ BOOL ModuleProtocol_Packet_ZIPCode(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_ZIPINFO* pSt_ZIPInfo, int nCode = 0, LPCTSTR lpszMsgBuffer = NULL);
public:
BOOL ModuleProtocol_Packet_P2PLan(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_P2XPPEER_PROTOCOL*** pppSt_ListClients, int nListCount);
BOOL ModuleProtocol_Packet_P2PWLan(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, list* pStl_ListClients);
diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp
index 4fc9937..7df766b 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp
+++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp
@@ -443,4 +443,68 @@ BOOL CModuleProtocol_Parse::ModuleProtocol_Parse_CDKey(LPCTSTR lpszMsgBuffer, in
_tcscpy(pSt_Authorize->st_AuthUserInfo.tszCustom, st_JsonUserInfo["tszCustom"].asCString());
}
return TRUE;
+}
+/********************************************************************
+函数名称:ModuleProtocol_Parse_ZIPCode
+函数功能:解析邮政地址信息
+ 参数.一:lpszMsgBuffer
+ In/Out:In
+ 类型:常量字符指针
+ 可空:N
+ 意思:输入要解析的缓冲区
+ 参数.二:nMsgLen
+ In/Out:In
+ 类型:整数型
+ 可空:N
+ 意思:输入缓冲区大小
+ 参数.三:pSt_ZIPInfo
+ In/Out:Out
+ 类型:数据结构指针
+ 可空:N
+ 意思:输出解析后的信息
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CModuleProtocol_Parse::ModuleProtocol_Parse_ZIPCode(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_ZIPINFO* pSt_ZIPInfo)
+{
+ ModuleProtocol_IsErrorOccur = FALSE;
+
+ if ((NULL == lpszMsgBuffer) || (NULL == pSt_ZIPInfo))
+ {
+ ModuleProtocol_IsErrorOccur = TRUE;
+ ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PARSE_PARAMENT;
+ return FALSE;
+ }
+ Json::Value st_JsonRoot;
+ JSONCPP_STRING st_JsonError;
+ Json::CharReaderBuilder st_ReaderBuilder;
+ //解析JSON
+ std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader());
+ if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
+ {
+ ModuleProtocol_IsErrorOccur = TRUE;
+ ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PARSE_PARAMENT;
+ return FALSE;
+ }
+
+ if (!st_JsonRoot["tszProvincer"].isNull())
+ {
+ _tcscpy(pSt_ZIPInfo->tszProvincer, st_JsonRoot["tszProvincer"].asCString());
+ }
+ if (!st_JsonRoot["tszCity"].isNull())
+ {
+ _tcscpy(pSt_ZIPInfo->tszCity, st_JsonRoot["tszCity"].asCString());
+ }
+ if (!st_JsonRoot["tszCounty"].isNull())
+ {
+ _tcscpy(pSt_ZIPInfo->tszCounty, st_JsonRoot["tszCounty"].asCString());
+ }
+
+ if (!st_JsonRoot["nZipCode"].isNull())
+ {
+ pSt_ZIPInfo->nZipCode = st_JsonRoot["nZipCode"].asInt();
+ }
+ return TRUE;
}
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h
index 0ff655e..c27d58c 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h
+++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h
@@ -23,5 +23,6 @@ public:
BOOL ModuleProtocol_Parse_Translation(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_LANGUAGEINFO* pSt_LanguageInfo);
BOOL ModuleProtocol_Parse_P2PClient(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_P2XPPEER_PROTOCOL* pSt_P2XPPeer);
BOOL ModuleProtocol_Parse_CDKey(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_Authorize);
+ BOOL ModuleProtocol_Parse_ZIPCode(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_ZIPINFO* pSt_ZIPInfo);
private:
};
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def
index 148abd2..f25bb0a 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def
+++ b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def
@@ -10,6 +10,7 @@ EXPORTS
ModuleProtocol_Packet_BankQuery
ModuleProtocol_Packet_LanguageQuery
ModuleProtocol_Packet_Locker
+ ModuleProtocol_Packet_ZIPCode
ModuleProtocol_Packet_P2PLan
ModuleProtocol_Packet_P2PWLan
ModuleProtocol_Packet_P2PUser
@@ -19,4 +20,5 @@ EXPORTS
ModuleProtocol_Parse_Bank
ModuleProtocol_Parse_Translation
ModuleProtocol_Parse_P2PClient
- ModuleProtocol_Parse_CDKey
\ No newline at end of file
+ ModuleProtocol_Parse_CDKey
+ ModuleProtocol_Parse_ZIPCode
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ModuleProtocol/pch.cpp b/XEngine_Source/XEngine_ModuleProtocol/pch.cpp
index b12ac5e..2e32fa7 100644
--- a/XEngine_Source/XEngine_ModuleProtocol/pch.cpp
+++ b/XEngine_Source/XEngine_ModuleProtocol/pch.cpp
@@ -59,6 +59,10 @@ extern "C" BOOL ModuleProtocol_Packet_Locker(TCHAR * ptszMsgBuffer, int* pInt_Ms
{
return m_ProtocolPacket.ModuleProtocol_Packet_Locker(ptszMsgBuffer, pInt_MsgLen, xhToken, nCode, lpszMsgBuffer);
}
+extern "C" BOOL ModuleProtocol_Packet_ZIPCode(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_ZIPINFO * pSt_ZIPInfo, int nCode, LPCTSTR lpszMsgBuffer)
+{
+ return m_ProtocolPacket.ModuleProtocol_Packet_ZIPCode(ptszMsgBuffer, pInt_MsgLen, pSt_ZIPInfo, nCode, lpszMsgBuffer);
+}
extern "C" BOOL ModuleProtocol_Packet_P2PLan(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_P2XPPEER_PROTOCOL * **pppSt_ListClients, int nListCount)
{
return m_ProtocolPacket.ModuleProtocol_Packet_P2PLan(ptszMsgBuffer, pInt_MsgLen, pppSt_ListClients, nListCount);
@@ -97,4 +101,8 @@ extern "C" BOOL ModuleProtocol_Parse_P2PClient(LPCTSTR lpszMsgBuffer, int nMsgLe
extern "C" BOOL ModuleProtocol_Parse_CDKey(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL * pSt_Authorize)
{
return m_ProtocolParse.ModuleProtocol_Parse_CDKey(lpszMsgBuffer, nMsgLen, pSt_Authorize);
+}
+extern "C" BOOL ModuleProtocol_Parse_ZIPCode(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_ZIPINFO * pSt_ZIPInfo)
+{
+ return m_ProtocolParse.ModuleProtocol_Parse_ZIPCode(lpszMsgBuffer, nMsgLen, pSt_ZIPInfo);
}
\ No newline at end of file
--
Gitee
From 2aee34952b0ead54ed6a70bc2f6c6b829bb0073e Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 11:25:35 +0800
Subject: [PATCH 08/15] update:vsproject
---
.../ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj | 3 +++
.../ModulePlugin_Password/ModulePlugin_Password.vcxproj | 3 +++
.../ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj | 3 +++
.../ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj | 3 +++
4 files changed, 12 insertions(+)
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj
index 15e5169..2a566f2 100644
--- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/ModulePlugin_BMIndex.vcxproj
@@ -82,16 +82,19 @@
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib32);$(LibraryPath)
$(SolutionDir)$(Configuration)\XEngine_Plugin\
+ $(Configuration)\XEngine_Plugin\
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib64);$(LibraryPath)
$(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib64);$(LibraryPath)
$(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.vcxproj
index 5d98d2a..8e4412a 100644
--- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.vcxproj
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/ModulePlugin_Password.vcxproj
@@ -83,18 +83,21 @@
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib32);$(LibraryPath)
$(SolutionDir)$(Configuration)\XEngine_Plugin\
+ $(Configuration)\XEngine_Plugin\
true
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib64);$(LibraryPath)
$(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
false
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib64);$(LibraryPath)
$(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj
index f028dfc..07ca3e7 100644
--- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/ModulePlugin_Timezone.vcxproj
@@ -81,16 +81,19 @@
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib32);$(LibraryPath)
$(SolutionDir)$(Configuration)\XEngine_Plugin\
+ $(Configuration)\XEngine_Plugin\
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib64);$(LibraryPath)
$(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib64);$(LibraryPath)
$(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj
index 4b854a2..4fc65cf 100644
--- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/ModulePlugin_Zodiac.vcxproj
@@ -83,18 +83,21 @@
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib32);$(LibraryPath)
$(SolutionDir)$(Configuration)\XEngine_Plugin\
+ $(Configuration)\XEngine_Plugin\
true
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib64);$(LibraryPath)
$(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
false
$(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
$(XEngine_Lib64);$(LibraryPath)
$(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
--
Gitee
From 0bd4e6d664827b94dbb08854946e045d8000421c Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 15:22:45 +0800
Subject: [PATCH 09/15] added:meter convert plugin module
---
.../ModulePlugin_Meter/Makefile | 55 ++++
.../ModulePlugin_Meter/ModulePlugin_Meter.def | 8 +
.../ModulePlugin_Meter.vcxproj | 193 ++++++++++++++
.../ModulePlugin_Meter.vcxproj.filters | 56 ++++
.../ModulePlugin_Meter.vcxproj.user | 4 +
.../ModulePlugin_Meter/PluginMeter_Define.h | 104 ++++++++
.../ModulePlugin_Meter/PluginMeter_Error.h | 16 ++
.../Plugin_Meter/Plugin_Meter.cpp | 249 ++++++++++++++++++
.../Plugin_Meter/Plugin_Meter.h | 29 ++
.../ModulePlugin_Meter/dllmain.cpp | 19 ++
.../ModulePlugin_Meter/framework.h | 5 +
.../ModulePlugin_Meter/pch.cpp | 39 +++
.../ModulePlugin_Meter/pch.h | 57 ++++
13 files changed, 834 insertions(+)
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Makefile
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.def
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj.filters
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj.user
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Error.h
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/dllmain.cpp
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/framework.h
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp
create mode 100644 XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Makefile b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Makefile
new file mode 100644
index 0000000..f62a01d
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Makefile
@@ -0,0 +1,55 @@
+CC = g++ -Wall -std=c++17 -fPIC
+SHAREFLAG = -shared
+SHAREDLL = so
+RELEASE = 0
+UNICODE = 0
+INCLUDE = -I ./ -I ../../XEngine_ThirdPart/jsoncpp
+LOADBIN = -L /usr/local/lib/XEngine_Release/XEngine_BaseLib -L ../../XEngine_ThirdPart/jsoncpp
+LIB = -lXEngine_BaseLib -ljsoncpp
+LIBEX = -ldl -lpthread
+LOADSO = -Wl,-rpath=../,--disable-new-dtags
+LIBINCLUDE = Plugin_Meter.o pch.o
+
+ifeq ($(shell uname),Darwin)
+ SHAREDLL = dylib
+ SHAREFLAG = -dynamiclib
+ LOADSO =
+else
+ SHAREDLL = so
+ SHAREFLAG = -shared
+endif
+
+ifeq ($(RELEASE),1)
+FLAGS = -c -O2
+DEBUG =
+else
+FLAGS = -c
+DEBUG = -g
+endif
+
+ifeq ($(UNICODE),1)
+UNICODE = -D _UNICODE
+else
+UNICODE =
+endif
+
+
+all:$(LIBINCLUDE)
+ $(CC) $(DEBUG) $(LIBINCLUDE) -o libModulePlugin_Meter.$(SHAREDLL) $(SHAREFLAG) -fPIC $(LOADBIN) $(LIB) $(LIBEX) $(LOADSO)
+
+Plugin_Meter.o:./Plugin_Meter/Plugin_Meter.cpp
+ $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(INCLUDE) ./Plugin_Meter/Plugin_Meter.cpp
+
+pch.o:./pch.cpp
+ $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(INCLUDE) ./pch.cpp
+
+
+InstallAll:InstallSo
+InstallSo:./libModulePlugin_Meter.$(SHAREDLL)
+ cp ./libModulePlugin_Meter.$(SHAREDLL) ../../../XEngine_Release/XEngine_Plugin/libModulePlugin_Meter.$(SHAREDLL)
+
+CleanAll:CleanObj CleanMk
+CleanObj:
+ rm *.o
+CleanMk:
+ rm *.$(SHAREDLL)
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.def b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.def
new file mode 100644
index 0000000..78dedee
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.def
@@ -0,0 +1,8 @@
+LIBRARY
+
+EXPORTS
+ PluginCore_GetLastError
+
+ PluginCore_Init
+ PluginCore_UnInit
+ PluginCore_Call
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj
new file mode 100644
index 0000000..7fb4df7
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj
@@ -0,0 +1,193 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ Win32Proj
+ {6f111577-daf8-4294-b516-0077c22d7613}
+ ModulePluginMeter
+ 10.0
+ libModulePlugin_Meter
+
+
+
+ DynamicLibrary
+ true
+ v143
+ MultiByte
+
+
+ DynamicLibrary
+ false
+ v143
+ true
+ MultiByte
+
+
+ DynamicLibrary
+ true
+ v143
+ MultiByte
+
+
+ DynamicLibrary
+ false
+ v143
+ true
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)$(Configuration)\XEngine_Plugin\
+ $(Configuration)\XEngine_Plugin\
+ $(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
+ $(XEngine_Lib32);$(LibraryPath)
+
+
+ $(SolutionDir)$(Configuration)\XEngine_Plugin\
+ $(Configuration)\XEngine_Plugin\
+ $(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
+ $(XEngine_Lib32);$(LibraryPath)
+
+
+ $(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
+ $(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
+ $(XEngine_Lib64);$(LibraryPath)
+
+
+ $(SolutionDir)$(Platform)\$(Configuration)\XEngine_Plugin\
+ $(Platform)\$(Configuration)\XEngine_Plugin\
+ $(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath)
+ $(XEngine_Lib64);$(LibraryPath)
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;MODULEPLUGINMETER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ Use
+ pch.h
+
+
+ Windows
+ true
+ false
+ ModulePlugin_Meter.def
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;MODULEPLUGINMETER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ Use
+ pch.h
+
+
+ Windows
+ true
+ true
+ true
+ false
+ ModulePlugin_Meter.def
+
+
+
+
+ Level3
+ true
+ _DEBUG;MODULEPLUGINMETER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ Use
+ pch.h
+
+
+ Windows
+ true
+ false
+ ModulePlugin_Meter.def
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;MODULEPLUGINMETER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ Use
+ pch.h
+
+
+ Windows
+ true
+ true
+ true
+ false
+ ModulePlugin_Meter.def
+
+
+
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj.filters b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj.filters
new file mode 100644
index 0000000..a9c99fc
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj.filters
@@ -0,0 +1,56 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {787df7a3-1a7f-4e06-88a0-34b0a4b6bbb5}
+
+
+ {8b14df4b-7a4b-4ec5-b07c-d210aa340660}
+
+
+
+
+ 头文件
+
+
+ 头文件
+
+
+ 头文件\Plugin_Meter
+
+
+ 头文件
+
+
+ 头文件
+
+
+
+
+ 源文件
+
+
+ 源文件
+
+
+ 源文件\Plugin_Meter
+
+
+
+
+ 源文件
+
+
+
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj.user b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj.user
new file mode 100644
index 0000000..88a5509
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/ModulePlugin_Meter.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h
new file mode 100644
index 0000000..9de2074
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h
@@ -0,0 +1,104 @@
+#pragma once
+/********************************************************************
+// Created: 2022/11/01 13:56:53
+// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter\PluginMeter_Define.h
+// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter
+// File Base: PluginMeter_Define
+// File Ext: h
+// Project: XEngine(网络通信引擎)
+// Author: qyt
+// Purpose: 计量转换插件
+// History:
+*********************************************************************/
+//长度计量
+typedef enum
+{
+ //美国标准
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_KILOMETRE = 0, //公里
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_METRE = 1, //米
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_DECIMETER = 2, //分米
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_CENTIMEER = 3, //厘米
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_MILLMETER = 4, //毫米
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_MICROMETER = 5, //微米
+ //中国标准
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_LI = 10, //里
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_ZHANG = 11, //丈
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_CHI = 12, //尺
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_CUN = 13, //寸
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_FEN = 14, //分
+ //英国标准
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_NAUTICALMILE = 20, //海里
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_MILE = 21, //英里
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_YARD = 22, //码
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_INCH = 23, //英寸
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_FUR = 24, //弗隆
+ ENUM_APISERVICE_PLUGIN_METER_LENGTH_FOOT = 25 //英尺
+}ENUM_APISERVICE_PLUGIN_METER_LENGTH;
+//温度计量
+typedef enum
+{
+ ENUM_APISERVICE_PLUGIN_METER_TEMPERATURE_C = 0, //摄氏度
+ ENUM_APISERVICE_PLUGIN_METER_TEMPERATURE_F = 1, //华氏度
+ ENUM_APISERVICE_PLUGIN_METER_TEMPERATURE_K = 2, //开氏度
+ ENUM_APISERVICE_PLUGIN_METER_TEMPERATURE_RA = 3, //兰氏度
+ ENUM_APISERVICE_PLUGIN_METER_TEMPERATURE_RE = 4 //列氏度
+}ENUM_APISERVICE_PLUGIN_METER_TEMPERATURE;
+//功率
+typedef enum
+{
+ ENUM_APISERVICE_PLUGIN_METER_POWER_W = 0, //瓦
+ ENUM_APISERVICE_PLUGIN_METER_POWER_KW = 1, //千瓦
+ ENUM_APISERVICE_PLUGIN_METER_POWER_HP = 2, //英制马力
+ ENUM_APISERVICE_PLUGIN_METER_POWER_PS = 3, //米制马力
+}ENUM_APISERVICE_PLUGIN_METER_POWER;
+//速度
+typedef enum
+{
+ ENUM_APISERVICE_PLUGIN_METER_SPEED_KNOT = 0, //节
+ ENUM_APISERVICE_PLUGIN_METER_POWER_MILE = 1, //里
+ ENUM_APISERVICE_PLUGIN_METER_POWER_KILOMETER = 2, //公里
+}ENUM_APISERVICE_PLUGIN_METER_SPEED;
+//重量
+//面积
+//体积
+//压力
+//进制
+//////////////////////////////////////////////////////////////////////////
+// 导出函数定义
+//////////////////////////////////////////////////////////////////////////
+extern "C" DWORD PluginCore_GetLastError();
+/*********************************************************************************
+* 导出函数定义 *
+*********************************************************************************/
+/********************************************************************
+函数名称:PluginCore_Init
+函数功能:初始化插件模块
+ 参数.一:lParam
+ In/Out:In/Out
+ 类型:无类型指针
+ 可空:N
+ 意思:自定义参数
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL PluginCore_Init(LPVOID lParam = NULL);
+/********************************************************************
+函数名称:PluginCore_UnInit
+函数功能:卸载插件
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL PluginCore_UnInit();
+/********************************************************************
+函数名称:PluginCore_Call
+函数功能:调用插件
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+extern "C" BOOL PluginCore_Call(TCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, TCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCTSTR lpszMsgBuffer = NULL, int nMsgLen = 0);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Error.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Error.h
new file mode 100644
index 0000000..7554c79
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Error.h
@@ -0,0 +1,16 @@
+#pragma once
+/********************************************************************
+// Created: 2022/11/01 13:57:03
+// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter\PluginMeter_Error.h
+// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter
+// File Base: PluginMeter_Error
+// File Ext: h
+// Project: XEngine(网络通信引擎)
+// Author: qyt
+// Purpose: 计量转换导出错误
+// History:
+*********************************************************************/
+//////////////////////////////////////////////////////////////////////////
+// 错误定义
+//////////////////////////////////////////////////////////////////////////
+#define ERROR_XENGINE_APISERVICE_PLUGIN_MODULE_METER_PARAMENT 0x12001 //参数错误
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp
new file mode 100644
index 0000000..ad2c8dc
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp
@@ -0,0 +1,249 @@
+#include "pch.h"
+#include "Plugin_Meter.h"
+/********************************************************************
+// Created: 2022/11/01 13:40:13
+// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter\Plugin_Meter\Plugin_Meter.cpp
+// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter\Plugin_Meter
+// File Base: Plugin_Meter
+// File Ext: cpp
+// Project: XEngine(网络通信引擎)
+// Author: qyt
+// Purpose: 计量转换器
+// History:
+*********************************************************************/
+CPlugin_Meter::CPlugin_Meter()
+{
+}
+CPlugin_Meter::~CPlugin_Meter()
+{
+}
+//////////////////////////////////////////////////////////////////////////
+// 公有函数
+//////////////////////////////////////////////////////////////////////////
+/********************************************************************
+函数名称:PluginCore_Init
+函数功能:初始化插件模块
+ 参数.一:lParam
+ In/Out:In/Out
+ 类型:无类型指针
+ 可空:N
+ 意思:自定义参数
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CPlugin_Meter::PluginCore_Init(LPVOID lParam)
+{
+ Meter_IsErrorOccur = FALSE;
+
+ return TRUE;
+}
+/********************************************************************
+函数名称:PluginCore_UnInit
+函数功能:卸载插件
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CPlugin_Meter::PluginCore_UnInit()
+{
+ Meter_IsErrorOccur = FALSE;
+
+ return TRUE;
+}
+/********************************************************************
+函数名称:PluginCore_Call
+函数功能:调用插件
+返回值
+ 类型:逻辑型
+ 意思:是否成功
+备注:
+*********************************************************************/
+BOOL CPlugin_Meter::PluginCore_Call(TCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, TCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCTSTR lpszMsgBuffer, int nMsgLen)
+{
+ Meter_IsErrorOccur = FALSE;
+
+ if ((NULL == pInt_HTTPCode) || (NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
+ {
+ Meter_IsErrorOccur = TRUE;
+ Meter_dwErrorCode = ERROR_XENGINE_APISERVICE_PLUGIN_MODULE_METER_PARAMENT;
+ return FALSE;
+ }
+ TCHAR tszKeyName[128];
+ TCHAR tszParamType[128];
+ TCHAR tszParamValue[128];
+ TCHAR tszParamSource[128];
+
+ Json::Value st_JsonRoot;
+ Json::Value st_JsonObject;
+ Json::StreamWriterBuilder st_JsonBuilder;
+
+ memset(tszKeyName, '\0', sizeof(tszKeyName));
+ memset(tszParamType, '\0', sizeof(tszParamType));
+ memset(tszParamSource, '\0', sizeof(tszParamSource));
+ memset(tszParamValue, '\0', sizeof(tszParamValue));
+
+ //http://192.168.1.8:5501/api?function=meter&type=0&source=0&value=10
+ BaseLib_OperatorString_GetKeyValue((*pppHDRList)[1], "=", tszKeyName, tszParamType);
+ BaseLib_OperatorString_GetKeyValue((*pppHDRList)[2], "=", tszKeyName, tszParamSource);
+ BaseLib_OperatorString_GetKeyValue((*pppHDRList)[3], "=", tszKeyName, tszParamValue);
+
+ if (0 == _ttoi(tszParamType))
+ {
+ Plugin_Meter_LengthConvert(_ttoi(tszParamSource), _ttoi64(tszParamValue), &st_JsonObject);
+ }
+ else if (1 == _ttoi(tszParamType))
+ {
+ Plugin_Meter_TemperatureConvert(_ttoi(tszParamSource), _ttoi64(tszParamValue), &st_JsonObject);
+ }
+ else if (2 == _ttoi(tszParamType))
+ {
+ Plugin_Meter_PowerConvert(_ttoi(tszParamSource), _ttoi64(tszParamValue), &st_JsonObject);
+ }
+ else if (3 == _ttoi(tszParamType))
+ {
+ Plugin_Meter_SpeedConvert(_ttoi(tszParamSource), _ttoi64(tszParamValue), &st_JsonObject);
+ }
+
+ st_JsonObject["tszParamType"] = _ttoi(tszParamType);
+ st_JsonObject["tszParamSource"] = _ttoi(tszParamSource);
+ st_JsonObject["tszParamValue"] = _ttof(tszParamValue);
+
+ st_JsonRoot["data"] = st_JsonObject;
+ st_JsonRoot["code"] = 0;
+ st_JsonRoot["msg"] = "success";
+ st_JsonBuilder["emitUTF8"] = true;
+
+ *pInt_HTTPCode = 200;
+ *pInt_MsgLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length();
+ memcpy(ptszMsgBuffer, Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), *pInt_MsgLen);
+ return TRUE;
+}
+//////////////////////////////////////////////////////////////////////////
+// 保护函数
+//////////////////////////////////////////////////////////////////////////
+BOOL CPlugin_Meter::Plugin_Meter_LengthConvert(int nSource, __int64x nValue, Json::Value *pSt_JsonObject)
+{
+ Meter_IsErrorOccur = FALSE;
+
+ Json::Value st_JsonObejct;
+ if (ENUM_APISERVICE_PLUGIN_METER_LENGTH_KILOMETRE == nSource)
+ {
+ st_JsonObejct["metre"] = double(nValue * 1000);
+ st_JsonObejct["decimeter"] = double(nValue * 10000);
+ st_JsonObejct["centimeter"] = double(nValue * 100000);
+ st_JsonObejct["millimeter"] = double(nValue * 1000000);
+ st_JsonObejct["micrometer"] = double(nValue * 1000000000);
+
+ st_JsonObejct["li"] = double(nValue * 2);
+ st_JsonObejct["zhang"] = double(nValue * 300);
+ st_JsonObejct["chi"] = double(nValue * 3000);
+ st_JsonObejct["cun"] = double(nValue * 30000);
+ st_JsonObejct["fen"] = double(nValue * 300000);
+
+ st_JsonObejct["nauticalmile"] = double(nValue * 0.539956803456);
+ st_JsonObejct["mile"] = double(nValue * 0.621371);
+ st_JsonObejct["yard"] = double(nValue * 1093.6133);
+ st_JsonObejct["inch"] = double(nValue * 39370.079);
+ st_JsonObejct["fur"] = double(nValue * 4.9709695);
+ st_JsonObejct["foot"] = double(nValue * 3280.8399);
+ }
+ else if (ENUM_APISERVICE_PLUGIN_METER_LENGTH_METRE == nSource)
+ {
+ st_JsonObejct["kilometre"] = double(nValue * 0.001);
+ st_JsonObejct["decimeter"] = double(nValue * 10);
+ st_JsonObejct["centimeter"] = double(nValue * 100);
+ st_JsonObejct["millimeter"] = double(nValue * 1000);
+ st_JsonObejct["micrometer"] = double(nValue * 1000000);
+
+ st_JsonObejct["li"] = double(nValue * 0.002);
+ st_JsonObejct["zhang"] = double(nValue * 0.3);
+ st_JsonObejct["chi"] = double(nValue * 3);
+ st_JsonObejct["cun"] = double(nValue * 30);
+ st_JsonObejct["fen"] = double(nValue * 300);
+
+ st_JsonObejct["nauticalmile"] = double(nValue * 0.0005399568);
+ st_JsonObejct["mile"] = double(nValue * 0.00062137119);
+ st_JsonObejct["yard"] = double(nValue * 1.0936133);
+ st_JsonObejct["inch"] = double(nValue * 39.370079);
+ st_JsonObejct["fur"] = double(nValue * 0.0049709695);
+ st_JsonObejct["foot"] = double(nValue * 3.2808399);
+ }
+ else if (ENUM_APISERVICE_PLUGIN_METER_LENGTH_DECIMETER == nSource)
+ {
+ st_JsonObejct["kilometre"] = double(nValue * 0.0001);
+ st_JsonObejct["metre"] = double(nValue * 0.1);
+ st_JsonObejct["centimeter"] = double(nValue * 10);
+ st_JsonObejct["millimeter"] = double(nValue * 100);
+ st_JsonObejct["micrometer"] = double(nValue * 100000);
+
+ st_JsonObejct["li"] = double(nValue * 0.0002);
+ st_JsonObejct["zhang"] = double(nValue * 0.03);
+ st_JsonObejct["chi"] = double(nValue * 0.3);
+ st_JsonObejct["cun"] = double(nValue * 3);
+ st_JsonObejct["fen"] = double(nValue * 30);
+
+ st_JsonObejct["nauticalmile"] = double(nValue * 0.00005399568);
+ st_JsonObejct["mile"] = double(nValue * 0.000062137119);
+ st_JsonObejct["yard"] = double(nValue * 0.10936133);
+ st_JsonObejct["inch"] = double(nValue * 3.9370079);
+ st_JsonObejct["fur"] = double(nValue * 0.00049709695);
+ st_JsonObejct["foot"] = double(nValue * 0.32808399);
+ }
+ (*pSt_JsonObject)["Length"] = st_JsonObejct;
+ return TRUE;
+}
+BOOL CPlugin_Meter::Plugin_Meter_TemperatureConvert(int nSource, __int64x nValue, Json::Value* pSt_JsonObject)
+{
+ Meter_IsErrorOccur = FALSE;
+
+ Json::Value st_JsonObejct;
+ if (ENUM_APISERVICE_PLUGIN_METER_TEMPERATURE_C == nSource)
+ {
+ st_JsonObejct["fahrenheit"] = double(nValue * 33.8);
+ st_JsonObejct["kelvin"] = double(nValue * 274.15);
+ st_JsonObejct["rankine"] = double(nValue * 493.46999999999997);
+ st_JsonObejct["degree"] = double(nValue * 0.8);
+ }
+ (*pSt_JsonObject)["Temperature"] = st_JsonObejct;
+ return TRUE;
+}
+BOOL CPlugin_Meter::Plugin_Meter_PowerConvert(int nSource, __int64x nValue, Json::Value* pSt_JsonObject)
+{
+ Meter_IsErrorOccur = FALSE;
+
+ Json::Value st_JsonObejct;
+ if (ENUM_APISERVICE_PLUGIN_METER_POWER_W == nSource)
+ {
+ st_JsonObejct["kw"] = double(nValue * 0.001);
+ st_JsonObejct["hp"] = double(nValue * 0.001341);
+ st_JsonObejct["ps"] = double(nValue * 0.00136);
+ }
+ (*pSt_JsonObject)["Power"] = st_JsonObejct;
+ return TRUE;
+}
+BOOL CPlugin_Meter::Plugin_Meter_SpeedConvert(int nSource, __int64x nValue, Json::Value* pSt_JsonObject)
+{
+ Meter_IsErrorOccur = FALSE;
+
+ Json::Value st_JsonObejct;
+ if (ENUM_APISERVICE_PLUGIN_METER_SPEED_KNOT == nSource)
+ {
+ st_JsonObejct["mile"] = double(nValue * 1.1488500000000001);
+ st_JsonObejct["kilometer"] = double(nValue * 1.85);
+ }
+ else if (ENUM_APISERVICE_PLUGIN_METER_POWER_MILE == nSource)
+ {
+ st_JsonObejct["knot"] = double(nValue * 00.8702702702702703);
+ st_JsonObejct["kilometer"] = double(nValue * 1.61);
+ }
+ else
+ {
+ st_JsonObejct["knot"] = double(nValue * 00.5405405405405405);
+ st_JsonObejct["kilometer"] = double(nValue * 00.621);
+ }
+ (*pSt_JsonObject)["Power"] = st_JsonObejct;
+ return TRUE;
+}
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h
new file mode 100644
index 0000000..f269540
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h
@@ -0,0 +1,29 @@
+#pragma once
+/********************************************************************
+// Created: 2022/11/01 13:39:40
+// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter\Plugin_Meter\Plugin_Meter.h
+// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter\Plugin_Meter
+// File Base: Plugin_Meter
+// File Ext: h
+// Project: XEngine(网络通信引擎)
+// Author: qyt
+// Purpose: 计量转换器
+// History:
+*********************************************************************/
+
+class CPlugin_Meter
+{
+public:
+ CPlugin_Meter();
+ ~CPlugin_Meter();
+public:
+ BOOL PluginCore_Init(LPVOID lParam);
+ BOOL PluginCore_UnInit();
+ BOOL PluginCore_Call(TCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, TCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCTSTR lpszMsgBuffer, int nMsgLen);
+protected:
+ BOOL Plugin_Meter_LengthConvert(int nSource, __int64x nValue, Json::Value *pSt_JsonObject);
+ BOOL Plugin_Meter_TemperatureConvert(int nSource, __int64x nValue, Json::Value* pSt_JsonObject);
+ BOOL Plugin_Meter_PowerConvert(int nSource, __int64x nValue, Json::Value* pSt_JsonObject);
+ BOOL Plugin_Meter_SpeedConvert(int nSource, __int64x nValue, Json::Value* pSt_JsonObject);
+private:
+};
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/dllmain.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/dllmain.cpp
new file mode 100644
index 0000000..daed8c8
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/dllmain.cpp
@@ -0,0 +1,19 @@
+// dllmain.cpp : 定义 DLL 应用程序的入口点。
+#include "pch.h"
+
+BOOL APIENTRY DllMain( HMODULE hModule,
+ DWORD ul_reason_for_call,
+ LPVOID lpReserved
+ )
+{
+ switch (ul_reason_for_call)
+ {
+ case DLL_PROCESS_ATTACH:
+ case DLL_THREAD_ATTACH:
+ case DLL_THREAD_DETACH:
+ case DLL_PROCESS_DETACH:
+ break;
+ }
+ return TRUE;
+}
+
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/framework.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/framework.h
new file mode 100644
index 0000000..80cbbc9
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/framework.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容
+// Windows 头文件
+#include
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp
new file mode 100644
index 0000000..fd0ce7c
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp
@@ -0,0 +1,39 @@
+#include "pch.h"
+#include "Plugin_Meter/Plugin_Meter.h"
+/********************************************************************
+// Created: 2022/11/01 13:56:17
+// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter\pch.cpp
+// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter
+// File Base: pch
+// File Ext: cpp
+// Project: XEngine(网络通信引擎)
+// Author: qyt
+// Purpose: 导出实现
+// History:
+*********************************************************************/
+BOOL Meter_IsErrorOccur = FALSE;
+DWORD Meter_dwErrorCode = 0;
+//////////////////////////////////////////////////////////////////////////
+CPlugin_Meter m_PluginMeter;
+//////////////////////////////////////////////////////////////////////////
+// 导出函数定义
+//////////////////////////////////////////////////////////////////////////
+extern "C" DWORD PluginCore_GetLastError()
+{
+ return Meter_dwErrorCode;
+}
+/*********************************************************************************
+* 导出函数定义 *
+*********************************************************************************/
+extern "C" BOOL PluginCore_Init(LPVOID lParam)
+{
+ return m_PluginMeter.PluginCore_Init(lParam);
+}
+extern "C" BOOL PluginCore_UnInit()
+{
+ return m_PluginMeter.PluginCore_UnInit();
+}
+extern "C" BOOL PluginCore_Call(TCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, TCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCTSTR lpszMsgBuffer, int nMsgLen)
+{
+ return m_PluginMeter.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen);
+}
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h
new file mode 100644
index 0000000..abb8e8b
--- /dev/null
+++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h
@@ -0,0 +1,57 @@
+// pch.h: 这是预编译标头文件。
+// 下方列出的文件仅编译一次,提高了将来生成的生成性能。
+// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
+// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
+// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
+
+#ifndef PCH_H
+#define PCH_H
+
+#ifdef _MSC_BUILD
+// 添加要在此处预编译的标头
+#include "framework.h"
+#include
+#endif // _MSC_BUILD
+#endif //PCH_H
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "PluginMeter_Define.h"
+#include "PluginMeter_Error.h"
+/********************************************************************
+// Created: 2022/11/01 13:52:32
+// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter\pch.h
+// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_PluginModule\ModulePlugin_Meter
+// File Base: pch
+// File Ext: h
+// Project: XEngine(网络通信引擎)
+// Author: qyt
+// Purpose: 公用头文件
+// History:
+*********************************************************************/
+extern BOOL Meter_IsErrorOccur;
+extern DWORD Meter_dwErrorCode;
+
+
+#ifdef _MSC_BUILD
+#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib")
+#ifdef _DEBUG
+#ifdef _WIN64
+#pragma comment(lib,"../../x64/Debug/jsoncpp")
+#else
+#pragma comment(lib,"../../Debug/jsoncpp")
+#endif
+#else
+#ifdef _WIN64
+#pragma comment(lib,"../../x64/Release/jsoncpp")
+#else
+#pragma comment(lib,"../../Release/jsoncpp")
+#endif
+#endif
+#endif
\ No newline at end of file
--
Gitee
From 5af32c603574e9a0808aa9c89d1f5fb82b74f094 Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 15:23:10 +0800
Subject: [PATCH 10/15] added:post process code for app
---
XEngine_Source/Makefile | 5 ++-
XEngine_Source/XEngine.sln | 19 +++++++---
.../ModuleDatabase_ZIPCode.cpp | 1 -
.../XEngine_HttpApp/Makefile | 4 ++-
.../XEngine_HttpApp/XEngine_HTTPTask.cpp | 18 ++++++++++
.../XEngine_HTTPTask/HTTPTask_PostCode.cpp | 35 +++++++++++++++++++
.../XEngine_HTTPTask/HTTPTask_PostCode.h | 3 ++
.../XEngine_HttpApp/XEngine_Hdr.h | 1 +
.../XEngine_HttpApp/XEngine_HttpApp.cpp | 9 +++++
XEngine_Source/XEngine_UserProtocol.h | 13 +++++++
10 files changed, 101 insertions(+), 7 deletions(-)
create mode 100644 XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_PostCode.cpp
create mode 100644 XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_PostCode.h
diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile
index c4c2e3d..3e152f0 100644
--- a/XEngine_Source/Makefile
+++ b/XEngine_Source/Makefile
@@ -16,13 +16,14 @@ PLUGIN_MODULE_ZODIAC = ./XEngine_PluginModule/ModulePlugin_Zodiac
PLUGIN_MODULE_PASSWORD = ./XEngine_PluginModule/ModulePlugin_Password
PLUGIN_MODULE_TIMEZONE = ./XEngine_PluginModule/ModulePlugin_Timezone
PLUGIN_MODULE_BMINDEX = ./XEngine_PluginModule/ModulePlugin_BMIndex
+PLUGIN_MODULE_METER = ./XEngine_PluginModule/ModulePlugin_Meter
APP_CENTER_PATH = ./XEngine_ServiceApp/XEngine_CenterApp
APP_HTTP_PATH = ./XEngine_ServiceApp/XEngine_HttpApp
XENGINE_MODULES = libjsoncpp.so \
libXEngine_ModuleConfigure.so libXEngine_ModuleDatabase.so libXEngine_ModuleProtocol.so libXEngine_ModuleHelp.so libXEngine_ModulePlugin.so \
- libModulePlugin_Zodiac.so libModulePlugin_Password.so libModulePlugin_Timezone.so libModulePlugin_BMIndex.so\
+ libModulePlugin_Zodiac.so libModulePlugin_Password.so libModulePlugin_Timezone.so libModulePlugin_BMIndex.so libModulePlugin_Meter.so \
XEngine_HttpApp.exe
.PHONY:MakeAll
@@ -50,6 +51,8 @@ libModulePlugin_Timezone.so:
make -C $(PLUGIN_MODULE_TIMEZONE) $(FLAGS)
libModulePlugin_BMIndex.so:
make -C $(PLUGIN_MODULE_BMINDEX) $(FLAGS)
+libModulePlugin_Meter.so:
+ make -C $(PLUGIN_MODULE_METER) $(FLAGS)
XEngine_HttpApp.exe:
make -C $(APP_HTTP_PATH) $(FLAGS)
diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln
index 6b98d27..d0bc8e9 100644
--- a/XEngine_Source/XEngine.sln
+++ b/XEngine_Source/XEngine.sln
@@ -28,13 +28,15 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModulePlugin", "XEn
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_PluginModule", "XEngine_PluginModule", "{D0473C03-9464-4C44-818A-AE212680CD05}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModulePlugin_Zodiac", "XEngine_PluginModule\ModulePlugin_Zodiac\ModulePlugin_Zodiac.vcxproj", "{32BB166A-3D3D-45EF-8BED-2E0471274159}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libModulePlugin_Zodiac", "XEngine_PluginModule\ModulePlugin_Zodiac\ModulePlugin_Zodiac.vcxproj", "{32BB166A-3D3D-45EF-8BED-2E0471274159}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModulePlugin_Password", "XEngine_PluginModule\ModulePlugin_Password\ModulePlugin_Password.vcxproj", "{201B6D13-82A7-49E9-9736-D6B3BFE05B30}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libModulePlugin_Password", "XEngine_PluginModule\ModulePlugin_Password\ModulePlugin_Password.vcxproj", "{201B6D13-82A7-49E9-9736-D6B3BFE05B30}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModulePlugin_Timezone", "XEngine_PluginModule\ModulePlugin_Timezone\ModulePlugin_Timezone.vcxproj", "{37B8E91F-EC52-41F0-B21D-441D4270C05F}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libModulePlugin_Timezone", "XEngine_PluginModule\ModulePlugin_Timezone\ModulePlugin_Timezone.vcxproj", "{37B8E91F-EC52-41F0-B21D-441D4270C05F}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ModulePlugin_BMIndex", "XEngine_PluginModule\ModulePlugin_BMIndex\ModulePlugin_BMIndex.vcxproj", "{BBC4B2B4-1143-45DF-8890-47CE26A61D0E}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libModulePlugin_BMIndex", "XEngine_PluginModule\ModulePlugin_BMIndex\ModulePlugin_BMIndex.vcxproj", "{BBC4B2B4-1143-45DF-8890-47CE26A61D0E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libModulePlugin_Meter", "XEngine_PluginModule\ModulePlugin_Meter\ModulePlugin_Meter.vcxproj", "{6F111577-DAF8-4294-B516-0077C22D7613}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -132,6 +134,14 @@ Global
{BBC4B2B4-1143-45DF-8890-47CE26A61D0E}.Release|x64.Build.0 = Release|x64
{BBC4B2B4-1143-45DF-8890-47CE26A61D0E}.Release|x86.ActiveCfg = Release|Win32
{BBC4B2B4-1143-45DF-8890-47CE26A61D0E}.Release|x86.Build.0 = Release|Win32
+ {6F111577-DAF8-4294-B516-0077C22D7613}.Debug|x64.ActiveCfg = Debug|x64
+ {6F111577-DAF8-4294-B516-0077C22D7613}.Debug|x64.Build.0 = Debug|x64
+ {6F111577-DAF8-4294-B516-0077C22D7613}.Debug|x86.ActiveCfg = Debug|Win32
+ {6F111577-DAF8-4294-B516-0077C22D7613}.Debug|x86.Build.0 = Debug|Win32
+ {6F111577-DAF8-4294-B516-0077C22D7613}.Release|x64.ActiveCfg = Release|x64
+ {6F111577-DAF8-4294-B516-0077C22D7613}.Release|x64.Build.0 = Release|x64
+ {6F111577-DAF8-4294-B516-0077C22D7613}.Release|x86.ActiveCfg = Release|Win32
+ {6F111577-DAF8-4294-B516-0077C22D7613}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -143,6 +153,7 @@ Global
{201B6D13-82A7-49E9-9736-D6B3BFE05B30} = {D0473C03-9464-4C44-818A-AE212680CD05}
{37B8E91F-EC52-41F0-B21D-441D4270C05F} = {D0473C03-9464-4C44-818A-AE212680CD05}
{BBC4B2B4-1143-45DF-8890-47CE26A61D0E} = {D0473C03-9464-4C44-818A-AE212680CD05}
+ {6F111577-DAF8-4294-B516-0077C22D7613} = {D0473C03-9464-4C44-818A-AE212680CD05}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9B202F91-A601-429E-BB0F-880DDEE096FE}
diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp
index 8f7b320..676c0cb 100644
--- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp
+++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp
@@ -115,7 +115,6 @@ BOOL CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_QueryZIPCode(XENGINE_ZIPINF
}
else if (2 == pSt_ZIPInfo->nLevel)
{
- int nParentID = 0;
_tcscpy(pSt_ZIPInfo->tszCity, pptszResult[nFliedValue + 2]);
ModuleDatabase_ZIPCode_QueryParentByID(_ttoi(pptszResult[nFliedValue + 1]), pSt_ZIPInfo->tszProvincer);
}
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile
index f04406c..fde611a 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile
@@ -10,7 +10,7 @@ LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool
LIBEX = -ldl -lpthread
LOADSO = -Wl,-rpath=./,--disable-new-dtags
LIBINCLUDE = XEngine_Configure.o XEngine_Network.o XEngine_HTTPTask.o XEngine_PluginTask.o XEngine_HttpApp.o \
- HTTPTask_IPInfo.o HTTPTask_IDCard.o HTTPTask_Phone.o HTTPTask_Bank.o HTTPTask_Language.o HTTPTask_Translation.o HTTPTask_P2PClient.o HTTPTask_OPtions.o HTTPTask_CDKey.o HTTPTask_Locker.o
+ HTTPTask_IPInfo.o HTTPTask_IDCard.o HTTPTask_Phone.o HTTPTask_Bank.o HTTPTask_Language.o HTTPTask_Translation.o HTTPTask_P2PClient.o HTTPTask_OPtions.o HTTPTask_CDKey.o HTTPTask_Locker.o HTTPTask_PostCode.o
ifeq ($(shell uname),Darwin)
LOADSO =
@@ -62,6 +62,8 @@ HTTPTask_CDKey.o:./XEngine_HTTPTask/HTTPTask_CDKey.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./XEngine_HTTPTask/HTTPTask_CDKey.cpp
HTTPTask_Locker.o:./XEngine_HTTPTask/HTTPTask_Locker.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./XEngine_HTTPTask/HTTPTask_Locker.cpp
+HTTPTask_PostCode.o:./XEngine_HTTPTask/HTTPTask_PostCode.cpp
+ $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./XEngine_HTTPTask/HTTPTask_PostCode.cpp
XEngine_HttpApp.o:./XEngine_HttpApp.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./XEngine_HttpApp.cpp
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp
index 3a19dc2..083f28d 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp
@@ -101,6 +101,7 @@ BOOL XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCTSTR
//post
LPCTSTR lpszParamP2PClient = _T("p2p");
LPCTSTR lpszParamCDKey = _T("cdkey");
+ LPCTSTR lpszParamZIPCode = _T("zipcode");
memset(tszKey, '\0', sizeof(tszKey));
memset(tszValue, '\0', sizeof(tszValue));
@@ -178,6 +179,23 @@ BOOL XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCTSTR
XEngine_HTTPTask_CDKey(lpszClientAddr, lpszRVBuffer, nRVLen, nOPType);
}
}
+ else if (0 == _tcsnicmp(lpszParamZIPCode, tszValue, _tcslen(lpszParamZIPCode)))
+ {
+ //邮政信息:http://app.xyry.org:5501/api?function=zipcode¶ms1=0
+ memset(tszKey, '\0', sizeof(tszKey));
+ memset(tszValue, '\0', sizeof(tszValue));
+ BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszKey, tszValue);
+ if (0 != _tcsnicmp(lpszParamName, tszKey, _tcslen(lpszParamName)))
+ {
+ st_HDRParam.nHttpCode = 404;
+ RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam);
+ XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
+ BaseLib_OperatorMemory_Free((XPPPMEM)&pptszList, nListCount);
+ XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
+ return FALSE;
+ }
+ XEngine_HTTPTask_PostCode(lpszClientAddr, lpszRVBuffer, nRVLen, _ttoi(tszValue));
+ }
}
else if (0 == _tcsnicmp(lpszMethodGet, pSt_HTTPParam->tszHttpMethod, _tcslen(lpszMethodGet)))
{
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_PostCode.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_PostCode.cpp
new file mode 100644
index 0000000..a83e850
--- /dev/null
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_PostCode.cpp
@@ -0,0 +1,35 @@
+#include "../XEngine_Hdr.h"
+
+BOOL XEngine_HTTPTask_PostCode(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, int nType)
+{
+ int nSDLen = 4096;
+ int nRVLen = 4096;
+ TCHAR tszSDBuffer[4096];
+ TCHAR tszRVBuffer[4096];
+ XENGINE_ZIPINFO st_ZIPInfo;
+ RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; //发送给客户端的参数
+
+ memset(tszSDBuffer, '\0', sizeof(tszSDBuffer));
+ memset(tszRVBuffer, '\0', sizeof(tszRVBuffer));
+ memset(&st_ZIPInfo, '\0', sizeof(XENGINE_ZIPINFO));
+ memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM));
+
+ st_HDRParam.nHttpCode = 200; //HTTP CODE码
+ st_HDRParam.bIsClose = TRUE; //收到回复后就关闭
+
+ ModuleProtocol_Parse_ZIPCode(lpszMsgBuffer, nMsgLen, &st_ZIPInfo);
+ if (0 == nType)
+ {
+ ModuleDatabase_ZIPCode_QueryZIPCode(&st_ZIPInfo);
+ }
+ else
+ {
+ ModuleDatabase_ZIPCode_QueryName(&st_ZIPInfo);
+ }
+
+ ModuleProtocol_Packet_ZIPCode(tszRVBuffer, &nRVLen, &st_ZIPInfo);
+ RfcComponents_HttpServer_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
+ XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen);
+ XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求查询邮政编码地址信息查询成功,查询邮编;%d,查询地址:%s"), lpszClientAddr, st_ZIPInfo.nZipCode, st_ZIPInfo.tszCounty);
+ return TRUE;
+}
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_PostCode.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_PostCode.h
new file mode 100644
index 0000000..fb06c83
--- /dev/null
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask/HTTPTask_PostCode.h
@@ -0,0 +1,3 @@
+#pragma once
+
+BOOL XEngine_HTTPTask_PostCode(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, int nType);
\ No newline at end of file
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h
index 25464ef..76acead 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h
@@ -68,6 +68,7 @@ using namespace std;
#include "XEngine_HTTPTask/HTTPTask_OPtions.h"
#include "XEngine_HTTPTask/HTTPTask_P2PClient.h"
#include "XEngine_HTTPTask/HTTPTask_CDKey.h"
+#include "XEngine_HTTPTask/HTTPTask_PostCode.h"
/********************************************************************
// Created: 2022/01/20 14:42:06
// File Name: D:\XEngine_ServiceApp\XEngine_Source\XEngine_ServiceApp\XEngine_HttpApp\XEngine_Hdr.h
diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp
index afa7c45..b0007f2 100644
--- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp
+++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp
@@ -39,6 +39,7 @@ void ServiceApp_Stop(int signo)
ModuleDatabase_IDCard_Destory();
ModuleDatabase_Phone_Destory();
ModuleDatabase_Bank_Destory();
+ ModuleDatabase_ZIPCode_Destory();
//销毁其他
ModulePlugin_Core_Destroy();
ModuleHelp_P2PClient_Destory();
@@ -174,6 +175,13 @@ int main(int argc, char** argv)
goto XENGINE_SERVICEAPP_EXIT;
}
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化银行卡数据库成功,地址:%s"), st_ServiceConfig.st_XApi.tszBankData);
+
+ if (!ModuleDatabase_ZIPCode_Init(st_ServiceConfig.st_XApi.tszZIPCodeData))
+ {
+ XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化行政邮编信息数据库失败,错误:%lX"), ModuleDB_GetLastError());
+ goto XENGINE_SERVICEAPP_EXIT;
+ }
+ XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化行政邮编信息数据库成功,地址:%s"), st_ServiceConfig.st_XApi.tszZIPCodeData);
//启动HTTP服务相关代码
if (st_ServiceConfig.nHttpPort > 0)
{
@@ -293,6 +301,7 @@ XENGINE_SERVICEAPP_EXIT:
ModuleDatabase_IDCard_Destory();
ModuleDatabase_Phone_Destory();
ModuleDatabase_Bank_Destory();
+ ModuleDatabase_ZIPCode_Destory();
//销毁其他
ModulePlugin_Core_Destroy();
ModuleHelp_P2PClient_Destory();
diff --git a/XEngine_Source/XEngine_UserProtocol.h b/XEngine_Source/XEngine_UserProtocol.h
index e0084b6..a114337 100644
--- a/XEngine_Source/XEngine_UserProtocol.h
+++ b/XEngine_Source/XEngine_UserProtocol.h
@@ -182,4 +182,17 @@ typedef struct tag_XEngine_P2XPIO_Protocol
int nDestPort; //要连接的端口
BOOL bIsTcp; //连接类型TCP,否则为UDP
}XENGINE_P2XPIO_PROTOCOL, * LPXENGINE_P2XPIO_PROTOCOL;
+//邮编信息
+typedef struct
+{
+ TCHAR tszProvincer[64]; //省/自治区/直辖市
+ TCHAR tszCity[64]; //市/区
+ TCHAR tszCounty[64]; //县
+ TCHAR tszPinYin[64]; //拼音
+ double dlLng; //经度
+ double dlLat; //纬度
+ int nZipCode; //邮编
+ int nAreaCode; //区号
+ int nLevel; //行政级别
+}XENGINE_ZIPINFO;
#pragma pack(pop)
\ No newline at end of file
--
Gitee
From 9908e8fc9b4d852e35c3a53b2e7b1aafa9114350 Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 15:33:06 +0800
Subject: [PATCH 11/15] fixed:build error
---
.../APPClient_BankExample/APPClient_BankExample.cpp | 2 +-
.../APPClient_CDKeyExample.cpp | 4 ++--
.../APPClient_IDExample/APPClient_IDExample.cpp | 2 +-
.../APPClient_IPExample/APPClient_IPExample.cpp | 2 +-
.../APPClient_LanguageExample.cpp | 2 +-
.../APPClient_LockExample/APPClient_LockExample.cpp | 12 ++++++------
.../APPClient_P2PExample/APPClient_P2PExample.cpp | 8 ++++----
.../APPClient_PhoneExample.cpp | 2 +-
.../APPClient_PluginExample.cpp | 8 ++++----
.../APPClient_TranslationExample.cpp | 2 +-
10 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/XEngine_APPClient/APPClient_BankExample/APPClient_BankExample.cpp b/XEngine_APPClient/APPClient_BankExample/APPClient_BankExample.cpp
index 65aa468..c9295c6 100644
--- a/XEngine_APPClient/APPClient_BankExample/APPClient_BankExample.cpp
+++ b/XEngine_APPClient/APPClient_BankExample/APPClient_BankExample.cpp
@@ -31,7 +31,7 @@ int main()
TCHAR* ptszMsgBuffer = NULL;
LPCTSTR lpszUrl = _T("http://127.0.0.1:5501/api?function=bank¶ms1=6214111100184841¶ms2=0");
- if (!APIHelp_HttpRequest_Get(lpszUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
diff --git a/XEngine_APPClient/APPClient_CDKeyExample/APPClient_CDKeyExample.cpp b/XEngine_APPClient/APPClient_CDKeyExample/APPClient_CDKeyExample.cpp
index 7dc01a6..93bce57 100644
--- a/XEngine_APPClient/APPClient_CDKeyExample/APPClient_CDKeyExample.cpp
+++ b/XEngine_APPClient/APPClient_CDKeyExample/APPClient_CDKeyExample.cpp
@@ -63,7 +63,7 @@ int main()
TCHAR* ptszCreateBuffer = NULL;
TCHAR* ptszAuthBuffer = NULL;
- if (!APIHelp_HttpRequest_Post(lpszCreateUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszCreateBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszCreateUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszCreateBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -77,7 +77,7 @@ int main()
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszCreateBuffer);
LPCTSTR lpszAuthUrl = _T("http://127.0.0.1:5501/api?function=cdkey¶ms1=1¶ms2=123123");
- if (!APIHelp_HttpRequest_Post(lpszAuthUrl, tszMsgBuffer, &nCode, &ptszAuthBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszAuthUrl, tszMsgBuffer, &nCode, &ptszAuthBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
diff --git a/XEngine_APPClient/APPClient_IDExample/APPClient_IDExample.cpp b/XEngine_APPClient/APPClient_IDExample/APPClient_IDExample.cpp
index 97b52a0..9781c51 100644
--- a/XEngine_APPClient/APPClient_IDExample/APPClient_IDExample.cpp
+++ b/XEngine_APPClient/APPClient_IDExample/APPClient_IDExample.cpp
@@ -31,7 +31,7 @@ int main()
TCHAR* ptszMsgBuffer = NULL;
LPCTSTR lpszUrl = _T("http://127.0.0.1:5501/api?function=id¶ms1=511025191101018792¶ms2=0");
- if (!APIHelp_HttpRequest_Get(lpszUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
diff --git a/XEngine_APPClient/APPClient_IPExample/APPClient_IPExample.cpp b/XEngine_APPClient/APPClient_IPExample/APPClient_IPExample.cpp
index 805dbf3..f330dfc 100644
--- a/XEngine_APPClient/APPClient_IPExample/APPClient_IPExample.cpp
+++ b/XEngine_APPClient/APPClient_IPExample/APPClient_IPExample.cpp
@@ -31,7 +31,7 @@ int main()
TCHAR* ptszMsgBuffer = NULL;
LPCTSTR lpszUrl = _T("http://127.0.0.1:5501/api?function=ip¶ms1=1.29.164.255¶ms2=0");
- if (!APIHelp_HttpRequest_Get(lpszUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
diff --git a/XEngine_APPClient/APPClient_LanguageExample/APPClient_LanguageExample.cpp b/XEngine_APPClient/APPClient_LanguageExample/APPClient_LanguageExample.cpp
index 60aa10f..7db9865 100644
--- a/XEngine_APPClient/APPClient_LanguageExample/APPClient_LanguageExample.cpp
+++ b/XEngine_APPClient/APPClient_LanguageExample/APPClient_LanguageExample.cpp
@@ -31,7 +31,7 @@ int main()
TCHAR* ptszMsgBuffer = NULL;
LPCTSTR lpszUrl = _T("http://127.0.0.1:5501/api?function=language¶ms1=简体¶ms2=0¶m3=1");
- if (!APIHelp_HttpRequest_Get(lpszUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
diff --git a/XEngine_APPClient/APPClient_LockExample/APPClient_LockExample.cpp b/XEngine_APPClient/APPClient_LockExample/APPClient_LockExample.cpp
index 77418a1..67d8adb 100644
--- a/XEngine_APPClient/APPClient_LockExample/APPClient_LockExample.cpp
+++ b/XEngine_APPClient/APPClient_LockExample/APPClient_LockExample.cpp
@@ -31,7 +31,7 @@ int main()
LPCTSTR lpszOPenUrl = _T("http://127.0.0.1:5501/api?function=lock¶ms1=1000106561¶ms1=1");
//自己创建打开
TCHAR* ptszBuffer = NULL;
- if (!APIHelp_HttpRequest_Get(lpszOPenUrl, &ptszBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszOPenUrl, NULL, NULL, &ptszBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -40,7 +40,7 @@ int main()
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBuffer);
//打开读锁
LPCTSTR lpszReadUrl = _T("http://127.0.0.1:5501/api?function=lock¶ms1=1000106561¶ms2=3");
- if (!APIHelp_HttpRequest_Get(lpszReadUrl, &ptszBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszReadUrl, NULL, NULL, &ptszBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -49,7 +49,7 @@ int main()
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBuffer);
//打开写锁
LPCTSTR lpszWriteUrl = _T("http://127.0.0.1:5501/api?function=lock¶ms1=1000106561¶ms2=5");
- if (!APIHelp_HttpRequest_Get(lpszWriteUrl, &ptszBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszWriteUrl, NULL, NULL, &ptszBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -58,7 +58,7 @@ int main()
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBuffer);
//释放读锁
LPCTSTR lpszUNReadUrl = _T("http://127.0.0.1:5501/api?function=lock¶ms1=1000106561¶ms2=4");
- if (!APIHelp_HttpRequest_Get(lpszUNReadUrl, &ptszBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUNReadUrl, NULL, NULL, &ptszBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -66,7 +66,7 @@ int main()
printf("接受到数据,大小:%d,内容:\n%s\n", nLen, ptszBuffer);
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBuffer);
//打开解锁
- if (!APIHelp_HttpRequest_Get(lpszWriteUrl, &ptszBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszWriteUrl, NULL, NULL, &ptszBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -75,7 +75,7 @@ int main()
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszBuffer);
//关闭
LPCTSTR lpszCloseUrl = _T("http://127.0.0.1:5501/api?function=lock¶ms1=1000106561¶ms2=2");
- if (!APIHelp_HttpRequest_Get(lpszCloseUrl, &ptszBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszCloseUrl, NULL, NULL, &ptszBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
diff --git a/XEngine_APPClient/APPClient_P2PExample/APPClient_P2PExample.cpp b/XEngine_APPClient/APPClient_P2PExample/APPClient_P2PExample.cpp
index a086ddc..64fd70c 100644
--- a/XEngine_APPClient/APPClient_P2PExample/APPClient_P2PExample.cpp
+++ b/XEngine_APPClient/APPClient_P2PExample/APPClient_P2PExample.cpp
@@ -67,7 +67,7 @@ int APPClient_P2XPLogin()
int nMsgLen = 0;
int nHTTPCode = 0;
TCHAR* ptszMsgBuffer = NULL;
- if (!APIHelp_HttpRequest_Post(lpszAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen))
+ if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen))
{
return -1;
}
@@ -88,7 +88,7 @@ int APPClient_P2XPList()
int nMsgLen = 0;
int nHTTPCode = 0;
TCHAR* ptszMsgBuffer = NULL;
- if (!APIHelp_HttpRequest_Post(lpszAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen))
+ if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen))
{
return -1;
}
@@ -109,7 +109,7 @@ int APPClient_P2XPGetUser()
int nMsgLen = 0;
int nHTTPCode = 0;
TCHAR* ptszMsgBuffer = NULL;
- if (!APIHelp_HttpRequest_Post(lpszAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen))
+ if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen))
{
return -1;
}
@@ -130,7 +130,7 @@ int APPClient_P2XPConnect()
int nMsgLen = 0;
int nHTTPCode = 0;
TCHAR* ptszMsgBuffer = NULL;
- if (!APIHelp_HttpRequest_Post(lpszAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen))
+ if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen))
{
return -1;
}
diff --git a/XEngine_APPClient/APPClient_PhoneExample/APPClient_PhoneExample.cpp b/XEngine_APPClient/APPClient_PhoneExample/APPClient_PhoneExample.cpp
index 3331387..7ff3d57 100644
--- a/XEngine_APPClient/APPClient_PhoneExample/APPClient_PhoneExample.cpp
+++ b/XEngine_APPClient/APPClient_PhoneExample/APPClient_PhoneExample.cpp
@@ -31,7 +31,7 @@ int main()
TCHAR* ptszMsgBuffer = NULL;
LPCTSTR lpszUrl = _T("http://127.0.0.1:5501/api?function=phone¶ms1=13699438888¶ms2=0");
- if (!APIHelp_HttpRequest_Get(lpszUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
diff --git a/XEngine_APPClient/APPClient_PluginExample/APPClient_PluginExample.cpp b/XEngine_APPClient/APPClient_PluginExample/APPClient_PluginExample.cpp
index f875237..d8553c6 100644
--- a/XEngine_APPClient/APPClient_PluginExample/APPClient_PluginExample.cpp
+++ b/XEngine_APPClient/APPClient_PluginExample/APPClient_PluginExample.cpp
@@ -30,7 +30,7 @@ int main()
int nLen = 0;
TCHAR* ptszMsgBuffer = NULL;
LPCTSTR lpszPassUrl = _T("http://127.0.0.1:5501/api?function=pass¶ms1=1¶ms2=4");
- if (!APIHelp_HttpRequest_Get(lpszPassUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszPassUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -39,7 +39,7 @@ int main()
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
LPCTSTR lpszZodiacUrl = _T("http://127.0.0.1:5501/api?function=zodiac¶ms1=19880121");
- if (!APIHelp_HttpRequest_Get(lpszZodiacUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszZodiacUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -48,7 +48,7 @@ int main()
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
LPCTSTR lpszTimeUrl = _T("http://127.0.0.1:5501/api?function=timezone¶ms1=1¶ms2=1-20");
- if (!APIHelp_HttpRequest_Get(lpszTimeUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszTimeUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
@@ -57,7 +57,7 @@ int main()
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
LPCTSTR lpszBmiUrl = _T("http://127.0.0.1:5501/api?function=bmindex¶ms1=1.78¶ms2=62");
- if (!APIHelp_HttpRequest_Get(lpszBmiUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszBmiUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
diff --git a/XEngine_APPClient/APPClient_TranslationExample/APPClient_TranslationExample.cpp b/XEngine_APPClient/APPClient_TranslationExample/APPClient_TranslationExample.cpp
index dad86d4..695e448 100644
--- a/XEngine_APPClient/APPClient_TranslationExample/APPClient_TranslationExample.cpp
+++ b/XEngine_APPClient/APPClient_TranslationExample/APPClient_TranslationExample.cpp
@@ -31,7 +31,7 @@ int main()
TCHAR* ptszMsgBuffer = NULL;
LPCTSTR lpszUrl = _T("http://127.0.0.1:5501/api?function=translation¶ms1=中国¶ms2=0¶m3=0");
- if (!APIHelp_HttpRequest_Get(lpszUrl, &ptszMsgBuffer, &nLen))
+ if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen))
{
printf("发送投递失败!\n");
return 0;
--
Gitee
From 9f0152e6f561f063e01eb05b49707fc36473c421 Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 16:19:06 +0800
Subject: [PATCH 12/15] added:zipcode example
---
.../APPClient_ZIPCodeExample.cpp | 60 ++++++++
.../APPClient_ZIPCodeExample.vcxproj | 139 ++++++++++++++++++
.../APPClient_ZIPCodeExample.vcxproj.filters | 22 +++
.../APPClient_ZIPCodeExample.vcxproj.user | 4 +
XEngine_APPClient/XEngine_APPClient.sln | 10 ++
5 files changed, 235 insertions(+)
create mode 100644 XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.cpp
create mode 100644 XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj
create mode 100644 XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj.filters
create mode 100644 XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj.user
diff --git a/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.cpp b/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.cpp
new file mode 100644
index 0000000..b854a3e
--- /dev/null
+++ b/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.cpp
@@ -0,0 +1,60 @@
+#ifdef _MSC_BUILD
+#include
+#include
+#pragma comment(lib,"Ws2_32")
+#pragma comment(lib,"jsoncpp")
+#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib")
+#pragma comment(lib,"XEngine_NetHelp/NetHelp_APIHelp")
+#endif
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+//需要优先配置XEngine
+//WINDOWS支持VS2022 x64 debug 编译调试
+//linux::g++ -std=c++17 -Wall -g APPClient_ZIPCodeExample.cpp -o APPClient_ZIPCodeExample.exe -L /usr/local/lib/XEngine_Release/XEngine_BaseLib -L /usr/local/lib/XEngine_Release/XEngine_NetHelp -lXEngine_BaseLib -lNetHelp_APIHelp
+//macos::g++ -std=c++17 -Wall -g APPClient_ZIPCodeExample.cpp -o APPClient_ZIPCodeExample.exe -lXEngine_BaseLib -lNetHelp_APIHelp
+
+int main()
+{
+#ifdef _MSC_BUILD
+ WSADATA st_WSAData;
+ WSAStartup(MAKEWORD(2, 2), &st_WSAData);
+#endif
+ int nLen = 0;
+ int nCode = 0;
+ TCHAR tszMsgBuffer[1024];
+ LPCTSTR lpszCreateUrl = _T("http://127.0.0.1:5501/api?function=zipcode¶ms1=0");
+
+ memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
+
+ Json::Value st_JsonRoot;
+ st_JsonRoot["nZipCode"] = 100010;
+
+ TCHAR* ptszMsgBuffer = NULL;
+ if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszCreateUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen))
+ {
+ printf("发送投递失败!\n");
+ return 0;
+ }
+#ifdef _MSC_BUILD
+ BaseLib_OperatorCharset_UTFToAnsi(ptszMsgBuffer, tszMsgBuffer, &nLen);
+ printf("接受到数据,大小:%d,内容:%s\n", nLen, tszMsgBuffer);
+#else
+ printf("接受到数据,大小:%d,内容:%s\n", nLen, ptszMsgBuffer);
+#endif
+ BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
+
+#ifdef _MSC_BUILD
+ WSACleanup();
+#endif
+ return 0;
+}
\ No newline at end of file
diff --git a/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj b/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj
new file mode 100644
index 0000000..c3d2b41
--- /dev/null
+++ b/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj
@@ -0,0 +1,139 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ Win32Proj
+ {4d665697-a449-490f-8ce6-ced6752ee128}
+ APPClientZIPCodeExample
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ MultiByte
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(XEngine_Include);../../XEngine_Source/XEngine_ThirdPart/jsoncpp;$(IncludePath)
+ $(XEngine_Lib64);../../XEngine_Source/x64/Debug;$(LibraryPath)
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj.filters b/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj.filters
new file mode 100644
index 0000000..9bf7bd2
--- /dev/null
+++ b/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj.filters
@@ -0,0 +1,22 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ 源文件
+
+
+
\ No newline at end of file
diff --git a/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj.user b/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj.user
new file mode 100644
index 0000000..88a5509
--- /dev/null
+++ b/XEngine_APPClient/APPClient_ZIPCodeExample/APPClient_ZIPCodeExample.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/XEngine_APPClient/XEngine_APPClient.sln b/XEngine_APPClient/XEngine_APPClient.sln
index 7e53a28..cede143 100644
--- a/XEngine_APPClient/XEngine_APPClient.sln
+++ b/XEngine_APPClient/XEngine_APPClient.sln
@@ -23,6 +23,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "APPClient_CDKeyExample", "A
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "APPClient_LockExample", "APPClient_LockExample\APPClient_LockExample.vcxproj", "{6EC0E212-E8DF-4DD2-8DA5-2BCFD18405F9}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "APPClient_ZIPCodeExample", "APPClient_ZIPCodeExample\APPClient_ZIPCodeExample.vcxproj", "{4D665697-A449-490F-8CE6-CED6752EE128}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -111,6 +113,14 @@ Global
{6EC0E212-E8DF-4DD2-8DA5-2BCFD18405F9}.Release|x64.Build.0 = Release|x64
{6EC0E212-E8DF-4DD2-8DA5-2BCFD18405F9}.Release|x86.ActiveCfg = Release|Win32
{6EC0E212-E8DF-4DD2-8DA5-2BCFD18405F9}.Release|x86.Build.0 = Release|Win32
+ {4D665697-A449-490F-8CE6-CED6752EE128}.Debug|x64.ActiveCfg = Debug|x64
+ {4D665697-A449-490F-8CE6-CED6752EE128}.Debug|x64.Build.0 = Debug|x64
+ {4D665697-A449-490F-8CE6-CED6752EE128}.Debug|x86.ActiveCfg = Debug|Win32
+ {4D665697-A449-490F-8CE6-CED6752EE128}.Debug|x86.Build.0 = Debug|Win32
+ {4D665697-A449-490F-8CE6-CED6752EE128}.Release|x64.ActiveCfg = Release|x64
+ {4D665697-A449-490F-8CE6-CED6752EE128}.Release|x64.Build.0 = Release|x64
+ {4D665697-A449-490F-8CE6-CED6752EE128}.Release|x86.ActiveCfg = Release|Win32
+ {4D665697-A449-490F-8CE6-CED6752EE128}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
--
Gitee
From 98d7f2180f4e3d3ae90a76de362cd7b7e4789991 Mon Sep 17 00:00:00 2001
From: qyt <486179@qq.com>
Date: Tue, 1 Nov 2022 16:19:54 +0800
Subject: [PATCH 13/15] update:configure file and zipcode
---
.../XEngine_Config/XEngine_Config.json | 4 +-
.../XEngine_Config/XEngine_OPtionConfig.json | 174 +++++++++---------
.../XEngine_Config/XEngine_PluginConfig.json | 5 +
XEngine_Release/XEngine_DBFile/zipcode.db | Bin 0 -> 450560 bytes
4 files changed, 100 insertions(+), 83 deletions(-)
create mode 100644 XEngine_Release/XEngine_DBFile/zipcode.db
diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json
index 1052d2f..7e7ef28 100644
--- a/XEngine_Release/XEngine_Config/XEngine_Config.json
+++ b/XEngine_Release/XEngine_Config/XEngine_Config.json
@@ -23,6 +23,7 @@
"tszIDData":"./XEngine_DBFile/regionsid.db",
"tszPhoneData":"./XEngine_DBFile/phone.dat",
"tszBankData":"./XEngine_DBFile/bankinfo.db",
+ "tszZIPCodeData":"./XEngine_DBFile/zipcode.db",
"tszBankUrl":"https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo=%s&cardBinCheck=true",
"tszTranslationUrl":"http://fanyi.youdao.com/translate?&doctype=json&type=%s&i=%s"
},
@@ -31,7 +32,8 @@
"tszPluginFile":"./XEngine_Config/XEngine_PluginConfig.json"
},
"XVer":[
- "2.4.0.1001 Build20220913",
+ "2.5.0.1001 Build20221102",
+ "2.4.0.1001 Build20220902",
"2.3.0.1001 Build20220723",
"2.2.0.1001 Build20220701",
"2.1.0.1001 Build20220429",
diff --git a/XEngine_Release/XEngine_Config/XEngine_OPtionConfig.json b/XEngine_Release/XEngine_Config/XEngine_OPtionConfig.json
index d94ea3e..ae1273e 100644
--- a/XEngine_Release/XEngine_Config/XEngine_OPtionConfig.json
+++ b/XEngine_Release/XEngine_Config/XEngine_OPtionConfig.json
@@ -1,84 +1,94 @@
{
- "OPTionBase":[
- {
- "OPTionEnable":true,
- "OPTionMethod":"ip",
- "OPTionNote":"IP地址信息查询",
- "OPTionExample":"http://%s/api?function=ip¶ms1=1.29.164.255¶ms2=0"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"id",
- "OPTionNote":"身份证信息查询",
- "OPTionExample":"http://%s/api?function=id¶ms1=511025191101018792¶ms2=0"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"phone",
- "OPTionNote":"电话号码查询",
- "OPTionExample":"http://%s/api?function=phone¶ms1=13699428888¶ms2=0"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"bank",
- "OPTionNote":"银行卡验证",
- "OPTionExample":"http://%s/api?function=bank¶ms1=6214000000¶ms2=0"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"language",
- "OPTionNote":"语言转换",
- "OPTionExample":"http://%s/api?function=language¶ms1=繁体到简体¶ms2=0¶ms3=1"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"translation",
- "OPTionNote":"翻译",
- "OPTionExample":"http://%s/api?function=translation¶ms1=中国¶ms2=0¶ms3=0"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"p2p",
- "OPTionNote":"p2p网络",
- "OPTionExample":"参考文档"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"lock",
- "OPTionNote":"分布式锁",
- "OPTionExample":"http://%s/api?function=lock¶ms1=token¶ms2=0"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"cdkey",
- "OPTionNote":"cdkey创建器",
- "OPTionExample":"http://%s/api?function=cdkey¶ms1=0"
- }
- ],
- "OPTionPlugin":[
- {
- "OPTionEnable":true,
- "OPTionMethod":"zodiac",
- "OPTionNote":"生肖星座",
- "OPTionExample":"http://%s/api?function=zodiac¶ms1=19880121"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"pass",
- "OPTionNote":"密码",
- "OPTionExample":"http://%s/api?function=pass¶ms1=1¶ms2=4"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"timezone",
- "OPTionNote":"时区转换",
- "OPTionExample":"http://%s/api?function=timezone¶ms1=0"
- },
- {
- "OPTionEnable":true,
- "OPTionMethod":"bmindex",
- "OPTionNote":"体脂标准",
- "OPTionExample":"http://%s/api?function=bmindex¶ms1=高(米))¶m2=体重(千克)"
- }
- ]
+ "OPTionBase": [{
+ "OPTionEnable": true,
+ "OPTionMethod": "ip",
+ "OPTionNote": "IP地址信息查询",
+ "OPTionExample": "http://%s/api?function=ip¶ms1=1.29.164.255¶ms2=0"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "id",
+ "OPTionNote": "身份证信息查询",
+ "OPTionExample": "http://%s/api?function=id¶ms1=511025191101018792¶ms2=0"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "phone",
+ "OPTionNote": "电话号码查询",
+ "OPTionExample": "http://%s/api?function=phone¶ms1=13699428888¶ms2=0"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "bank",
+ "OPTionNote": "银行卡验证",
+ "OPTionExample": "http://%s/api?function=bank¶ms1=6214000000¶ms2=0"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "language",
+ "OPTionNote": "语言转换",
+ "OPTionExample": "http://%s/api?function=language¶ms1=繁体到简体¶ms2=0¶ms3=1"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "translation",
+ "OPTionNote": "翻译",
+ "OPTionExample": "http://%s/api?function=translation¶ms1=中国¶ms2=0¶ms3=0"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "lock",
+ "OPTionNote": "分布式锁",
+ "OPTionExample": "http://%s/api?function=lock¶ms1=0¶ms2=12319824824"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "p2p",
+ "OPTionNote": "p2p网络",
+ "OPTionExample": "参考文档"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "cdkey",
+ "OPTionNote": "cdkey授权生成",
+ "OPTionExample": "参考文档"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "zipcode",
+ "OPTionNote": "行政邮编信息",
+ "OPTionExample": "参考文档"
+ }
+ ],
+ "OPTionPlugin": [{
+ "OPTionEnable": true,
+ "OPTionMethod": "zodiac",
+ "OPTionNote": "生肖星座",
+ "OPTionExample": "http://%s/api?function=zodiac¶ms1=19880121"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "pass",
+ "OPTionNote": "密码",
+ "OPTionExample": "http://%s/api?function=pass¶ms1=1¶ms2=4"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "timezone",
+ "OPTionNote": "时区转换",
+ "OPTionExample": "http://%s/api?function=timezone¶ms1=0"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "bmindex",
+ "OPTionNote": "体脂标准",
+ "OPTionExample": "http://%s/api?function=bmindex¶ms1=高(米))¶m2=体重(千克)"
+ },
+ {
+ "OPTionEnable": true,
+ "OPTionMethod": "meter",
+ "OPTionNote": "计量转换",
+ "OPTionExample": "http://%s/api?function=meter&type=0&source=1&value=100"
+ }
+ ]
}
\ No newline at end of file
diff --git a/XEngine_Release/XEngine_Config/XEngine_PluginConfig.json b/XEngine_Release/XEngine_Config/XEngine_PluginConfig.json
index 8854921..eb7d579 100644
--- a/XEngine_Release/XEngine_Config/XEngine_PluginConfig.json
+++ b/XEngine_Release/XEngine_Config/XEngine_PluginConfig.json
@@ -19,6 +19,11 @@
"PluginEnable":true,
"PluginMethod":"bmindex",
"PluginFile":"./XEngine_Plugin/libModulePlugin_BMIndex"
+ },
+ {
+ "PluginEnable":true,
+ "PluginMethod":"meter",
+ "PluginFile":"./XEngine_Plugin/libModulePlugin_Meter"
}
]
}
\ No newline at end of file
diff --git a/XEngine_Release/XEngine_DBFile/zipcode.db b/XEngine_Release/XEngine_DBFile/zipcode.db
new file mode 100644
index 0000000000000000000000000000000000000000..beb98757ed84cd01518059dbb040abab19a80948
GIT binary patch
literal 450560
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