Skip to content

Commit 2dde704

Browse files
committed
supported query file list on http api
same file multliple time written to the database is fix now
1 parent f9d3fdf commit 2dde704

File tree

9 files changed

+136
-43
lines changed

9 files changed

+136
-43
lines changed

XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,47 @@ XHTHREAD CALLBACK XEngine_Center_HTTPThread(LPVOID lParam)
3636
}
3737
return 0;
3838
}
39+
//POST /api/query/file
40+
BOOL XEngine_Task_HttpCenter_APIList(LPCTSTR lpszUrlName, TCHAR* ptszAPIVersion, TCHAR* ptszAPIMethod, TCHAR* ptszAPIName)
41+
{
42+
LPCTSTR lpszTokChar = _T("/");
43+
TCHAR tszHTTPUrl[MAX_PATH];
44+
memset(tszHTTPUrl, '\0', MAX_PATH);
45+
46+
_tcscpy(tszHTTPUrl, lpszUrlName);
47+
TCHAR* ptszTokStr = _tcstok(tszHTTPUrl, lpszTokChar);
48+
if (NULL == ptszTokStr)
49+
{
50+
return FALSE;
51+
}
52+
_tcscpy(ptszAPIVersion, ptszTokStr);
53+
ptszTokStr = _tcstok(NULL, lpszTokChar);
54+
if (NULL == ptszTokStr)
55+
{
56+
return FALSE;
57+
}
58+
_tcscpy(ptszAPIMethod, ptszTokStr);
59+
ptszTokStr = _tcstok(NULL, lpszTokChar);
60+
if (NULL == ptszTokStr)
61+
{
62+
return FALSE;
63+
}
64+
_tcscpy(ptszAPIName, ptszTokStr);
65+
return TRUE;
66+
}
3967
BOOL XEngine_Task_HttpCenter(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam)
4068
{
4169
int nSDLen = 2048;
4270
TCHAR tszSDBuffer[2048];
71+
TCHAR tszAPIVersion[64];
72+
TCHAR tszAPIMethod[64];
73+
TCHAR tszAPIName[64];
4374
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam;
4475

4576
memset(tszSDBuffer, '\0', sizeof(tszSDBuffer));
77+
memset(tszAPIVersion, '\0', sizeof(tszAPIVersion));
78+
memset(tszAPIMethod, '\0', sizeof(tszAPIMethod));
79+
memset(tszAPIName, '\0', sizeof(tszAPIName));
4680
memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM));
4781

4882
LPCTSTR lpszMethodName = _T("POST");
@@ -52,10 +86,54 @@ BOOL XEngine_Task_HttpCenter(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
5286
st_HDRParam.nHttpCode = 405;
5387

5488
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
55-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
89+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
5690
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,发送的方法不支持"), lpszClientAddr);
5791
return FALSE;
5892
}
59-
93+
if (!XEngine_Task_HttpCenter_APIList(pSt_HTTPParam->tszHttpUri, tszAPIVersion, tszAPIMethod, tszAPIName))
94+
{
95+
st_HDRParam.bIsClose = TRUE;
96+
st_HDRParam.nHttpCode = 404;
97+
98+
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
99+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
100+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求的API不支持"), lpszClientAddr);
101+
return FALSE;
102+
}
103+
104+
LPCTSTR lpszQuery = _T("query");
105+
LPCTSTR lpszQueryFile = _T("file");
106+
if (0 == _tcsncmp(lpszQuery, tszAPIMethod, _tcslen(lpszQuery)))
107+
{
108+
if (0 == _tcsncmp(lpszQueryFile, tszAPIName, _tcslen(lpszQueryFile)))
109+
{
110+
int nMsgLen = 10240;
111+
TCHAR tszFileName[MAX_PATH];
112+
TCHAR tszFileHash[MAX_PATH];
113+
TCHAR tszTimeStart[128];
114+
TCHAR tszTimeEnd[128];
115+
TCHAR tszMsgBuffer[10240];
116+
117+
memset(tszFileName, '\0', MAX_PATH);
118+
memset(tszFileHash, '\0', MAX_PATH);
119+
memset(tszTimeStart, '\0', sizeof(tszTimeStart));
120+
memset(tszTimeEnd, '\0', sizeof(tszTimeEnd));
121+
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
122+
123+
int nListCount = 0;
124+
XSTORAGECORE_DBFILE** ppSt_ListFile;
125+
XStorageProtocol_Core_REQQueryFile(lpszMsgBuffer, tszTimeStart, tszTimeEnd, tszFileHash);
126+
XStorageSQL_File_FileQuery(&ppSt_ListFile, &nListCount, tszTimeStart, tszTimeEnd, tszFileName, tszFileHash);
127+
128+
st_HDRParam.bIsClose = TRUE;
129+
st_HDRParam.nHttpCode = 200;
130+
131+
XStorageProtocol_Core_REPQueryFile(tszMsgBuffer, &nMsgLen, &ppSt_ListFile, nListCount, tszTimeStart, tszTimeEnd);
132+
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszMsgBuffer, nMsgLen);
133+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
134+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,请求查询文件列表成功,列表个数:%d"), lpszClientAddr, nListCount);
135+
BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListFile, nListCount);
136+
}
137+
}
60138
return TRUE;
61139
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
22

33
XHTHREAD CALLBACK XEngine_Center_HTTPThread(LPVOID lParam);
4+
BOOL XEngine_Task_HttpCenter_APIList(LPCTSTR lpszUrlName, TCHAR* ptszAPIVersion, TCHAR* ptszAPIMethod, TCHAR* ptszAPIName);
45
BOOL XEngine_Task_HttpCenter(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam);

XEngine_Source/XEngine_StorageApp/StorageApp_Network.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void CALLBACK XEngine_Callback_UPLoaderLeave(LPCTSTR lpszClientAddr, SOCKET hSoc
4747
//////////////////////////////////////////////////////////////////////////
4848
BOOL CALLBACK XEngine_Callback_CenterLogin(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
4949
{
50-
RfcComponents_HttpServer_CreateClientEx(xhUPHttp, lpszClientAddr, 0);
50+
RfcComponents_HttpServer_CreateClientEx(xhCenterHttp, lpszClientAddr, 0);
5151
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,进入了服务器"), lpszClientAddr);
5252
return TRUE;
5353
}
@@ -123,14 +123,18 @@ BOOL XEngine_Net_SendMsg(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsg
123123
SocketOpt_HeartBeat_ActiveAddrEx(xhHBDownload, lpszClientAddr);
124124
}
125125
}
126-
else
126+
else if (STORAGE_NETTYPE_HTTPUPLOADER == nType)
127127
{
128128
bRet = NetCore_TCPXCore_SendEx(xhNetUPLoader, lpszClientAddr, lpszMsgBuffer, nMsgLen);
129129
if (bRet)
130130
{
131131
SocketOpt_HeartBeat_ActiveAddrEx(xhHBUPLoader, lpszClientAddr);
132132
}
133133
}
134+
else if (STORAGE_NETTYPE_HTTPCENTER == nType)
135+
{
136+
bRet = NetCore_TCPXCore_SendEx(xhNetCenter, lpszClientAddr, lpszMsgBuffer, nMsgLen);
137+
}
134138

135139
if (!bRet)
136140
{

XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ int main(int argc, char** argv)
194194
goto XENGINE_EXITAPP;
195195
}
196196
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动业务控制存储网络服务成功,句柄:%llu,端口:%d,IO线程个数:%d"), xhNetCenter, st_ServiceCfg.nCenterPort, st_ServiceCfg.st_XMax.nIOThread);
197-
NetCore_TCPXCore_RegisterCallBackEx(xhNetCenter, XEngine_Callback_UPLoaderLogin, XEngine_Callback_UPLoaderRecv, XEngine_Callback_UPLoaderLeave);
197+
NetCore_TCPXCore_RegisterCallBackEx(xhNetCenter, XEngine_Callback_CenterLogin, XEngine_Callback_CenterRecv, XEngine_Callback_CenterLeave);
198198
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,注册业务控制存储存储网络服务事件成功!"));
199199

200200
if (!Session_DLStroage_Init(st_ServiceCfg.st_XMax.nStorageDLThread))

XEngine_Source/XEngine_StorageComponents/XStorage_Protocol/XStorageProtocol_Core/XStorageProtocol_Core.cpp

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,17 @@ CXStorageProtocol_Core::~CXStorageProtocol_Core()
4545
类型:字符指针
4646
可空:N
4747
意思:查询的文件名
48-
参数.五:ptszFileMD5
48+
参数.五:ptszFileHash
4949
In/Out:Out
5050
类型:字符指针
5151
可空:N
52-
意思:查询的文件MD5
52+
意思:查询的文件HASH
5353
返回值
5454
类型:逻辑型
5555
意思:是否成功
5656
备注:
5757
*********************************************************************/
58-
BOOL CXStorageProtocol_Core::XStorageProtocol_Core_REQQueryFile(LPCTSTR lpszMsgBuffer, TCHAR *ptszTimeStart, TCHAR *ptszTimeEnd, TCHAR *ptszFileName /* = NULL */, TCHAR *ptszFileMD5 /* = NULL */)
58+
BOOL CXStorageProtocol_Core::XStorageProtocol_Core_REQQueryFile(LPCTSTR lpszMsgBuffer, TCHAR *ptszTimeStart, TCHAR *ptszTimeEnd, TCHAR *ptszFileName /* = NULL */, TCHAR * ptszFileHash /* = NULL */)
5959
{
6060
XStorage_IsErrorOccur = FALSE;
6161

@@ -90,11 +90,11 @@ BOOL CXStorageProtocol_Core::XStorageProtocol_Core_REQQueryFile(LPCTSTR lpszMsgB
9090
_tcscpy(ptszFileName, st_JsonRoot["lpszFileName"].asCString());
9191
}
9292
}
93-
if (NULL != ptszFileMD5)
93+
if (NULL != ptszFileHash)
9494
{
95-
if (!st_JsonRoot["lpszFileMD5"].isNull())
95+
if (!st_JsonRoot["lpszFileHash"].isNull())
9696
{
97-
_tcscpy(ptszFileMD5, st_JsonRoot["lpszFileMD5"].asCString());
97+
_tcscpy(ptszFileHash, st_JsonRoot["lpszFileHash"].asCString());
9898
}
9999
}
100100
return TRUE;
@@ -149,9 +149,6 @@ BOOL CXStorageProtocol_Core::XStorageProtocol_Core_REPQueryFile(TCHAR* ptszMsgBu
149149
}
150150
Json::Value st_JsonRoot;
151151
Json::Value st_JsonArray;
152-
XENGINE_PROTOCOLHDR st_ProtocolHdr;
153-
memset(&st_ProtocolHdr, '\0', sizeof(XENGINE_PROTOCOLHDR));
154-
155152
//JSON赋值
156153
for (int i = 0; i < nListCount; i++)
157154
{
@@ -161,26 +158,18 @@ BOOL CXStorageProtocol_Core::XStorageProtocol_Core_REPQueryFile(TCHAR* ptszMsgBu
161158
st_JsonObject["tszFileUser"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFileUser;
162159
st_JsonObject["tszFileHash"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFileHash;
163160
st_JsonObject["tszFileTime"] = (*pppSt_DBFile)[i]->st_ProtocolFile.tszFileTime;
164-
st_JsonObject["nFileSize"] = nListCount;
161+
st_JsonObject["nFileSize"] = (*pppSt_DBFile)[i]->st_ProtocolFile.nFileSize;
165162
st_JsonArray.append(st_JsonObject);
166163
}
167164
st_JsonRoot["Count"] = nListCount;
168165
st_JsonRoot["List"] = st_JsonArray;
169166
st_JsonRoot["lpszTimeStart"] = lpszTimeStart;
170167
st_JsonRoot["lpszTimeEnd"] = lpszTimeEnd;
171168
st_JsonRoot["Code"] = 0;
172-
st_JsonRoot["Msg"] = _T("查询文件列表成功");
173-
//填充协议头
174-
st_ProtocolHdr.wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER;
175-
st_ProtocolHdr.unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_STORAGE;
176-
st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_STORAGE_REPQUERYFILE;
177-
st_ProtocolHdr.byVersion = 1;
178-
st_ProtocolHdr.unPacketSize = (UINT)st_JsonRoot.toStyledString().length();
179-
st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL;
169+
st_JsonRoot["Msg"] = _T("ok");
180170
//打包输出信息
181-
*pInt_MsgLen = sizeof(XENGINE_PROTOCOLHDR) + sizeof(XENGINE_PROTOCOLFILE);
182-
memcpy(ptszMsgBuffer, &st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR));
183-
memcpy(ptszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), st_JsonRoot.toStyledString().c_str(), st_ProtocolHdr.unPacketSize);
171+
*pInt_MsgLen = st_JsonRoot.toStyledString().length();
172+
memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen);
184173
return TRUE;
185174
}
186175
/********************************************************************

XEngine_Source/XEngine_StorageComponents/XStorage_Protocol/XStorageProtocol_Core/XStorageProtocol_Core.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class CXStorageProtocol_Core
1717
CXStorageProtocol_Core();
1818
~CXStorageProtocol_Core();
1919
public:
20-
BOOL XStorageProtocol_Core_REQQueryFile(LPCTSTR lpszMsgBuffer, TCHAR *ptszTimeStart, TCHAR *ptszTimeEnd, TCHAR *ptszFileName = NULL, TCHAR *ptszFileMD5 = NULL);
20+
BOOL XStorageProtocol_Core_REQQueryFile(LPCTSTR lpszMsgBuffer, TCHAR *ptszTimeStart, TCHAR *ptszTimeEnd, TCHAR *ptszFileName = NULL, TCHAR * ptszFileHash = NULL);
2121
BOOL XStorageProtocol_Core_REPQueryFile(TCHAR *ptszMsgBuffer, int *pInt_MsgLen, XSTORAGECORE_DBFILE*** pppSt_DBFile, int nListCount, LPCTSTR lpszTimeStart = NULL, LPCTSTR lpszTimeEnd = NULL);
2222
BOOL XStorageProtocol_Core_REPFile(TCHAR *ptszMsgBuffer, int *pInt_MsgLen, XNETHANDLE xhToken = 0, BOOL bUPFile = TRUE, int nCode = 0, LPCTSTR lpszCodeMsg = NULL, XENGINE_PROTOCOLFILE *pSt_ProtcolFile = NULL);
2323
public:

XEngine_Source/XEngine_StorageComponents/XStorage_Protocol/XStorageProtocol_Define.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ extern "C" BOOL XStorageProtocol_Client_REQRegister(CHAR *ptszMsgBuffer, int *pI
406406
意思:是否成功
407407
备注:
408408
*********************************************************************/
409-
extern "C" BOOL XStorageProtocol_Core_REQQueryFile(LPCSTR lpszMsgBuffer, CHAR *ptszTimeStart, CHAR *ptszTimeEnd, CHAR *ptszFileName = NULL, CHAR *ptszFileMD5 = NULL);
409+
extern "C" BOOL XStorageProtocol_Core_REQQueryFile(LPCSTR lpszMsgBuffer, CHAR *ptszTimeStart, CHAR *ptszTimeEnd, CHAR *ptszFileName = NULL, CHAR * ptszFileHash = NULL);
410410
/********************************************************************
411411
函数名称:XStorageProtocol_Core_REPQueryFile
412412
函数功能:查询回复打包协议

XEngine_Source/XEngine_StorageComponents/XStorage_Protocol/pch.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ extern "C" BOOL XStorageProtocol_Client_REQRegister(TCHAR * ptszMsgBuffer, int*
8484
/************************************************************************/
8585
/* 服务核心协议操作导出函数 */
8686
/************************************************************************/
87-
extern "C" BOOL XStorageProtocol_Core_REQQueryFile(LPCTSTR lpszMsgBuffer, TCHAR * ptszTimeStart, TCHAR * ptszTimeEnd, TCHAR * ptszFileName, TCHAR * ptszFileMD5)
87+
extern "C" BOOL XStorageProtocol_Core_REQQueryFile(LPCTSTR lpszMsgBuffer, TCHAR * ptszTimeStart, TCHAR * ptszTimeEnd, TCHAR * ptszFileName, TCHAR * ptszFileHash)
8888
{
89-
return m_ProtocolCore.XStorageProtocol_Core_REQQueryFile(lpszMsgBuffer, ptszTimeStart, ptszTimeEnd, ptszFileName, ptszFileMD5);
89+
return m_ProtocolCore.XStorageProtocol_Core_REQQueryFile(lpszMsgBuffer, ptszTimeStart, ptszTimeEnd, ptszFileName, ptszFileHash);
9090
}
9191
extern "C" BOOL XStorageProtocol_Core_REPQueryFile(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XSTORAGECORE_DBFILE * **pppSt_DBFile, int nListCount, LPCTSTR lpszTimeStart, LPCTSTR lpszTimeEnd)
9292
{

XEngine_Source/XEngine_StorageComponents/XStorage_SQLPacket/XStorageSQL_File/XStorageSQL_File.cpp

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ BOOL CXStorageSQL_File::XStorageSQL_File_FileInsert(XSTORAGECORE_DBFILE *pSt_DBF
127127
}
128128
int nListCount = 0;
129129
XSTORAGECORE_DBFILE **ppSt_ListFile;
130-
if (XStorageSQL_File_FileQuery(&ppSt_ListFile, &nListCount, NULL, NULL, pSt_DBFile->st_ProtocolFile.tszFileHash, pSt_DBFile->st_ProtocolFile.tszFileUser))
130+
if (XStorageSQL_File_FileQuery(&ppSt_ListFile, &nListCount, NULL, NULL, NULL, pSt_DBFile->st_ProtocolFile.tszFileHash))
131131
{
132132
BaseLib_OperatorMemory_Free((void***)&ppSt_ListFile, nListCount);
133133
return TRUE;
@@ -276,7 +276,14 @@ BOOL CXStorageSQL_File::XStorageSQL_File_FileQuery(XSTORAGECORE_DBFILE*** pppSt_
276276
//检查是否时间范围检索
277277
if ((NULL != lpszTimeStart) && (NULL != lpszTimeEnd))
278278
{
279-
_stprintf_s(tszSQLStatement, _T("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'XEngine_Storage' AND TABLE_NAME BETWEEN '%s' AND '%s'"), lpszTimeStart, lpszTimeEnd);
279+
if (_tcslen(lpszTimeStart) > 0 && _tcslen(lpszTimeEnd) > 0)
280+
{
281+
_stprintf_s(tszSQLStatement, _T("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'XEngine_Storage' AND TABLE_NAME BETWEEN '%s' AND '%s'"), lpszTimeStart, lpszTimeEnd);
282+
}
283+
else
284+
{
285+
_stprintf_s(tszSQLStatement, _T("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'XEngine_Storage'"));
286+
}
280287
}
281288
else
282289
{
@@ -303,13 +310,27 @@ BOOL CXStorageSQL_File::XStorageSQL_File_FileQuery(XSTORAGECORE_DBFILE*** pppSt_
303310

304311
memset(tszSQLStatement, '\0', sizeof(tszSQLStatement));
305312
//判断查询方式
306-
if (NULL == lpszFile)
313+
if (NULL != lpszFile)
307314
{
308-
_stprintf_s(tszSQLStatement, _T("SELECT * FROM `%s` WHERE FileHash = '%s'"), pptszResult[0], lpszHash);
315+
if (_tcslen(lpszFile) > 0)
316+
{
317+
_stprintf_s(tszSQLStatement, _T("SELECT * FROM `%s` WHERE FileName = '%s'"), pptszResult[0], lpszFile);
318+
}
319+
else
320+
{
321+
_stprintf_s(tszSQLStatement, _T("SELECT * FROM `%s`"), pptszResult[0]);
322+
}
309323
}
310-
else
324+
if (NULL != lpszHash)
311325
{
312-
_stprintf_s(tszSQLStatement, _T("SELECT * FROM `%s` WHERE FileName = '%s'"), pptszResult[0], lpszFile);
326+
if (_tcslen(lpszHash) > 0)
327+
{
328+
_stprintf_s(tszSQLStatement, _T("SELECT * FROM `%s` WHERE FileHash = '%s'"), pptszResult[0], lpszHash);
329+
}
330+
else
331+
{
332+
_stprintf_s(tszSQLStatement, _T("SELECT * FROM `%s`"), pptszResult[0]);
333+
}
313334
}
314335
//查询文件
315336
if (DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhResult, tszSQLStatement, &dwLineResult, &dwFieldResult))
@@ -326,23 +347,23 @@ BOOL CXStorageSQL_File::XStorageSQL_File_FileQuery(XSTORAGECORE_DBFILE*** pppSt_
326347

327348
if (NULL != pptszFileResult[1])
328349
{
329-
_tcscpy(st_DBFile.st_ProtocolFile.tszFilePath, pptszFileResult[2]);
350+
_tcscpy(st_DBFile.st_ProtocolFile.tszFilePath, pptszFileResult[1]);
330351
}
331352
if (NULL != pptszFileResult[2])
332353
{
333354
_tcscpy(st_DBFile.st_ProtocolFile.tszFileName, pptszFileResult[2]);
334355
}
335-
if (NULL != pptszFileResult[3])
336-
{
337-
_tcscpy(st_DBFile.st_ProtocolFile.tszFileUser, pptszFileResult[3]);
338-
}
356+
if (NULL != pptszFileResult[3])
357+
{
358+
_tcscpy(st_DBFile.st_ProtocolFile.tszFileHash, pptszFileResult[3]);
359+
}
339360
if (NULL != pptszFileResult[4])
340361
{
341-
st_DBFile.st_ProtocolFile.nFileSize = _ttoi64(pptszFileResult[4]);
362+
_tcscpy(st_DBFile.st_ProtocolFile.tszFileUser, pptszFileResult[4]);
342363
}
343364
if (NULL != pptszFileResult[5])
344365
{
345-
_tcscpy(st_DBFile.st_ProtocolFile.tszFileHash, pptszFileResult[5]);
366+
st_DBFile.st_ProtocolFile.nFileSize = _ttoi64(pptszFileResult[5]);
346367
}
347368
if (NULL != pptszFileResult[6])
348369
{

0 commit comments

Comments
 (0)