@@ -543,17 +543,22 @@ BOOL CPlugin_Timezone::PluginCore_Call(TCHAR*** pppHDRList, int nListCount, int*
543543 memset (tszParamTime, ' \0 ' , sizeof (tszParamTime));
544544
545545 BaseLib_OperatorString_GetKeyValue ((*pppHDRList)[1 ], " =" , tszKeyName, tszParamType);
546- if (1 == _ttoi (tszParamType))
546+ if (0 == _ttoi (tszParamType))
547+ {
548+ // 如果是统计
549+ Plugin_Timezone_Count (ptszMsgBuffer, pInt_MsgLen);
550+ }
551+ else if (1 == _ttoi (tszParamType))
547552 {
548553 // 如果是列举
549- Plugin_Timezone_List (ptszMsgBuffer, pInt_MsgLen);
554+ BaseLib_OperatorString_GetKeyValue ((*pppHDRList)[2 ], " =" , tszKeyName, tszParamCvt);
555+ Plugin_Timezone_List (tszParamCvt, ptszMsgBuffer, pInt_MsgLen);
550556 }
551557 else if (2 == _ttoi (tszParamType))
552558 {
553559 // 如果是转换
554560 BaseLib_OperatorString_GetKeyValue ((*pppHDRList)[2 ], " =" , tszKeyName, tszParamCvt);
555561 BaseLib_OperatorString_GetKeyValue ((*pppHDRList)[3 ], " =" , tszKeyName, tszParamTime);
556-
557562 if (!Plugin_Timezone_Convert (tszParamCvt, tszParamTime, ptszMsgBuffer, pInt_MsgLen))
558563 {
559564 *pInt_HTTPCode = 404 ;
@@ -567,24 +572,51 @@ BOOL CPlugin_Timezone::PluginCore_Call(TCHAR*** pppHDRList, int nListCount, int*
567572// ////////////////////////////////////////////////////////////////////////
568573// 保护函数
569574// ////////////////////////////////////////////////////////////////////////
570- BOOL CPlugin_Timezone::Plugin_Timezone_List (TCHAR* ptszMsgBufer, int * pInt_Len)
575+ BOOL CPlugin_Timezone::Plugin_Timezone_Count (TCHAR* ptszMsgBufer, int * pInt_Len)
576+ {
577+ Timezone_IsErrorOccur = FALSE ;
578+
579+ Json::Value st_JsonRoot;
580+ Json::Value st_JsonObject;
581+ Json::StreamWriterBuilder st_JsonBuilder;
582+
583+ st_JsonObject[" Count" ] = stl_MapTimezone.size ();
584+ st_JsonRoot[" data" ] = st_JsonObject;
585+ st_JsonRoot[" code" ] = 0 ;
586+ st_JsonRoot[" msg" ] = " success" ;
587+ st_JsonBuilder[" emitUTF8" ] = true ;
588+
589+ *pInt_Len = Json::writeString (st_JsonBuilder, st_JsonRoot).length ();
590+ memcpy (ptszMsgBufer, Json::writeString (st_JsonBuilder, st_JsonRoot).c_str (), *pInt_Len);
591+ return TRUE ;
592+ }
593+ BOOL CPlugin_Timezone::Plugin_Timezone_List (LPCTSTR lpszConvert, TCHAR* ptszMsgBufer, int * pInt_Len)
571594{
572595 Timezone_IsErrorOccur = FALSE ;
573596
597+ int nPosStart = 0 ;
598+ int nPosEnd = 0 ;
574599 Json::Value st_JsonRoot;
575600 Json::Value st_JsonObject;
576601 Json::StreamWriterBuilder st_JsonBuilder;
577602
603+ _stscanf (lpszConvert, _T (" %d-%d" ), &nPosStart, &nPosEnd);
604+
578605 unordered_map<string, MODULEPLUGIN_TIMEZONE>::const_iterator stl_MapIterator = stl_MapTimezone.cbegin ();
579- for (; stl_MapIterator != stl_MapTimezone.cend (); stl_MapIterator++)
606+ for (int i = 0 ; stl_MapIterator != stl_MapTimezone.cend (); stl_MapIterator++, i ++)
580607 {
581- Json::Value st_JsonArray;
582- st_JsonArray[" tszTimeZone" ] = stl_MapIterator->first .c_str ();
583- st_JsonArray[" tszTimeCountry" ] = stl_MapIterator->second .tszTimeCountry ;
584- st_JsonObject.append (st_JsonArray);
608+ if ((nPosEnd >= i) && (nPosStart <= i))
609+ {
610+ Json::Value st_JsonArray;
611+ st_JsonArray[" tszTimeZone" ] = stl_MapIterator->first .c_str ();
612+ st_JsonArray[" tszTimeCountry" ] = stl_MapIterator->second .tszTimeCountry ;
613+ st_JsonObject.append (st_JsonArray);
614+ }
585615 }
586616 st_JsonRoot[" Array" ] = st_JsonObject;
587- st_JsonRoot[" Count" ] = st_JsonObject.size ();
617+ st_JsonRoot[" Count" ] = nPosEnd - nPosStart;
618+ st_JsonRoot[" nPosStat" ] = nPosStart;
619+ st_JsonRoot[" nPosEnd" ] = nPosEnd;
588620 st_JsonRoot[" code" ] = 0 ;
589621 st_JsonRoot[" msg" ] = " success" ;
590622 st_JsonBuilder[" emitUTF8" ] = true ;
@@ -601,17 +633,26 @@ BOOL CPlugin_Timezone::Plugin_Timezone_Convert(LPCTSTR lpszConvert, LPCTSTR lpsz
601633 Json::Value st_JsonObject;
602634 Json::StreamWriterBuilder st_JsonBuilder;
603635
604- unordered_map<string, MODULEPLUGIN_TIMEZONE>::iterator stl_MapIterator = stl_MapTimezone.find (lpszConvert);
636+ unordered_map<string, MODULEPLUGIN_TIMEZONE>::const_iterator stl_MapIterator = stl_MapTimezone.find (lpszConvert);
605637 if (stl_MapIterator == stl_MapTimezone.end ())
606638 {
607639 return FALSE ;
608640 }
641+ TCHAR tszTimeStr[64 ];
609642 XENGINE_LIBTIMER st_TimeStart;
643+ XENGINE_LIBTIMER st_TimeEnd;
644+
645+ memset (tszTimeStr, ' \0 ' , sizeof (tszTimeStr));
610646 memset (&st_TimeStart, ' \0 ' , sizeof (XENGINE_LIBTIMER));
647+ memset (&st_TimeEnd, ' \0 ' , sizeof (XENGINE_LIBTIMER));
648+
649+ st_TimeEnd = stl_MapIterator->second .st_TimeZone ;
611650
612- BaseLib_OperatorTime_StrToTime (lpszConvert, &st_TimeStart);
613- BaseLib_OperatorTimeSpan_CalForStu (&st_TimeStart, &stl_MapIterator->second .st_TimeZone );
651+ _stscanf (lpszTimeStr, _T (" %04d-%02d-%02d_%02d:%02d:%02d" ), &st_TimeStart.wYear , &st_TimeStart.wMonth , &st_TimeStart.wDay , &st_TimeStart.wHour , &st_TimeStart.wMinute , &st_TimeStart.wSecond );
652+ BaseLib_OperatorTimeSpan_CalForStu (&st_TimeStart, &st_TimeEnd);
653+ _stprintf (tszTimeStr, _T (" %04d-%02d-%02d %02d:%02d:%02d" ), st_TimeEnd.wYear , st_TimeEnd.wMonth , st_TimeEnd.wDay , st_TimeEnd.wHour , st_TimeEnd.wMinute , st_TimeEnd.wSecond );
614654
655+ st_JsonObject[" tszTimeStr" ] = tszTimeStr;
615656 st_JsonObject[" tszTimeZone" ] = stl_MapIterator->first .c_str ();
616657 st_JsonObject[" tszTimeCountry" ] = stl_MapIterator->second .tszTimeCountry ;
617658 st_JsonRoot[" data" ] = st_JsonObject;
0 commit comments