#include "StdAfx.h" #include "ServiceUnits.h" #include "DataBaseEngineSink.h" ////////////////////////////////////////////////////////////////////////////////// //构造函数 CDataBaseEngineSink::CDataBaseEngineSink() { //组件变量 m_pInitParameter=NULL; m_pIDataBaseEngineEvent=NULL; return; } //析构函数 CDataBaseEngineSink::~CDataBaseEngineSink() { } //接口查询 VOID * CDataBaseEngineSink::QueryInterface(REFGUID Guid, DWORD dwQueryVer) { QUERYINTERFACE(IDataBaseEngineSink,Guid,dwQueryVer); QUERYINTERFACE_IUNKNOWNEX(IDataBaseEngineSink,Guid,dwQueryVer); return NULL; } //启动事件 bool CDataBaseEngineSink::OnDataBaseEngineStart(IUnknownEx * pIUnknownEx) { //创建对象 if ((m_AccountsDBModule.GetInterface()==NULL)&&(m_AccountsDBModule.CreateInstance()==false)) { ASSERT(FALSE); return false; } //创建对象 if ((m_TreasureDBModule.GetInterface()==NULL)&&(m_TreasureDBModule.CreateInstance()==false)) { ASSERT(FALSE); return false; } //创建对象 if ((m_PlatformDBModule.GetInterface()==NULL)&&(m_PlatformDBModule.CreateInstance()==false)) { ASSERT(FALSE); return false; } try { //连接信息 tagDataBaseParameter * pAccountsDBParameter=&m_pInitParameter->m_AccountsDBParameter; tagDataBaseParameter * pTreasureDBParameter=&m_pInitParameter->m_TreasureDBParameter; tagDataBaseParameter * pPlatformDBParameter=&m_pInitParameter->m_PlatformDBParameter; //设置连接 m_AccountsDBModule->SetConnectionInfo(pAccountsDBParameter->szDataBaseAddr,pAccountsDBParameter->wDataBasePort, pAccountsDBParameter->szDataBaseName,pAccountsDBParameter->szDataBaseUser,pAccountsDBParameter->szDataBasePass); m_TreasureDBModule->SetConnectionInfo(pTreasureDBParameter->szDataBaseAddr,pTreasureDBParameter->wDataBasePort, pTreasureDBParameter->szDataBaseName,pTreasureDBParameter->szDataBaseUser,pTreasureDBParameter->szDataBasePass); m_PlatformDBModule->SetConnectionInfo(pPlatformDBParameter->szDataBaseAddr,pPlatformDBParameter->wDataBasePort, pPlatformDBParameter->szDataBaseName,pPlatformDBParameter->szDataBaseUser,pPlatformDBParameter->szDataBasePass); //发起连接 m_AccountsDBModule->OpenConnection(); m_AccountsDBAide.SetDataBase(m_AccountsDBModule.GetInterface()); //发起连接 m_TreasureDBModule->OpenConnection(); m_TreasureDBAide.SetDataBase(m_TreasureDBModule.GetInterface()); //发起连接 m_PlatformDBModule->OpenConnection(); m_PlatformDBAide.SetDataBase(m_PlatformDBModule.GetInterface()); return true; } catch (IDataBaseException * pIException) { //错误信息 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); return false; } return true; } //停止事件 bool CDataBaseEngineSink::OnDataBaseEngineConclude(IUnknownEx * pIUnknownEx) { //设置对象 m_AccountsDBAide.SetDataBase(NULL); m_TreasureDBAide.SetDataBase(NULL); m_PlatformDBAide.SetDataBase(NULL); //关闭连接 if (m_AccountsDBModule.GetInterface()!=NULL) { m_AccountsDBModule->CloseConnection(); m_AccountsDBModule.CloseInstance(); } //关闭连接 if (m_TreasureDBModule.GetInterface()!=NULL) { m_TreasureDBModule->CloseConnection(); m_TreasureDBModule.CloseInstance(); } //关闭连接 if (m_PlatformDBModule.GetInterface()!=NULL) { m_PlatformDBModule->CloseConnection(); m_PlatformDBModule.CloseInstance(); } //组件变量 m_pInitParameter=NULL; m_pIDataBaseEngineEvent=NULL; return true; } //时间事件 bool CDataBaseEngineSink::OnDataBaseEngineTimer(DWORD dwTimerID, WPARAM dwBindParameter) { return false; } //控制事件 bool CDataBaseEngineSink::OnDataBaseEngineControl(WORD wControlID, VOID * pData, WORD wDataSize) { return false; } //请求事件 bool CDataBaseEngineSink::OnDataBaseEngineRequest(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize) { switch (wRequestID) { case DBR_GP_LOGON_ACCOUNTS: //帐号登录 { return OnRequestLogonAccounts(dwContextID,pData,wDataSize); } case DBR_GP_REGISTER_ACCOUNTS: //注册帐号 { return OnRequestRegisterAccounts(dwContextID,pData,wDataSize); } case DBR_GP_MODIFY_MACHINE: //修改机器 { return OnRequestModifyMachine(dwContextID,pData,wDataSize); } case DBR_GP_MODIFY_LOGON_PASS: //修改密码 { return OnRequestModifyLogonPass(dwContextID,pData,wDataSize); } case DBR_GP_MODIFY_INDIVIDUAL: //修改资料 { return OnRequestModifyIndividual(dwContextID,pData,wDataSize); } case DBR_GP_QUERY_INDIVIDUAL: //查询资料 { return OnRequestQueryIndividual(dwContextID,pData,wDataSize); } case DBR_GP_QUERY_ACCOUNTINFO: //查询资料 { return OnRequestQueryAccountInfo(dwContextID,pData,wDataSize); } case DBR_GP_USER_INGAME_SERVERID: //游戏状态 { return OnRequestUserInGameServerID(dwContextID, pData, wDataSize); } case DBR_GP_USER_WXSHARE_SUCCESS: //微信分享成功 { return OnRequestUserWXShareSuccess(dwContextID, pData, wDataSize); } case DBR_GP_LOAD_GAME_LIST: //加载列表 { return OnRequestLoadGameList(dwContextID,pData,wDataSize); } case DBR_GP_ONLINE_COUNT_INFO: //在线信息 { return OnRequestOnLineCountInfo(dwContextID,pData,wDataSize); } case DBR_GP_GAME_RECORD_LIST: { return OnRequestGameRecordList(dwContextID,pData,wDataSize); } case DBR_GP_GAME_TOTAL_RECORD: { return OnRequestGameTotalRecord(dwContextID,pData,wDataSize); } case DBR_GP_GAME_CHILD_RECORD: { return OnRequestGameChildRecord(dwContextID, pData, wDataSize); } case DBR_GP_QUERY_IN_MATCH: { return OnRequestQueryInMatch(dwContextID, pData, wDataSize); } case DBR_GP_QUERY_IN_UNION: { return OnRequestQueryInUnion(dwContextID, pData, wDataSize); } case DBR_GP_GET_UNION_LIST: { return OnRequestGetUnionList(dwContextID, pData, wDataSize); } case DBR_GP_GET_UNION_ROOM_LIST: { return OnRequestGetUnionRoomList(dwContextID, pData, wDataSize); } case DBR_GP_GET_AUTO_ROOM_LIST: { return OnRequestGetAutoRoomList(dwContextID, pData, wDataSize); } } return false; } //帐号登录 bool CDataBaseEngineSink::OnRequestLogonAccounts(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_LogonAccounts)); if (wDataSize!=sizeof(DBR_GP_LogonAccounts)) return false; //请求处理 DBR_GP_LogonAccounts * pLogonAccounts=(DBR_GP_LogonAccounts *)pData; //执行判断 tagBindParameter * pBindParameter=(tagBindParameter *)pLogonAccounts->pBindParameter; if (pBindParameter->dwSocketID!=dwContextID) return true; //转化地址 TCHAR szClientAddr[16]=TEXT(""); BYTE * pClientAddr=(BYTE *)&pLogonAccounts->dwClientAddr; _sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]); //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@strAccounts"),pLogonAccounts->szAccounts); m_AccountsDBAide.AddParameter(TEXT("@strPassword"),pLogonAccounts->szPassword); m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr); m_AccountsDBAide.AddParameter(TEXT("@strMachineID"),pLogonAccounts->szMachineID); m_AccountsDBAide.AddParameter(TEXT("@strOpenId"), pLogonAccounts->szOpenId); m_AccountsDBAide.AddParameter(TEXT("@strUnionid"), pLogonAccounts->szUnionid); m_AccountsDBAide.AddParameter(TEXT("@nNeeValidateMBCard"),pLogonAccounts->cbNeeValidateMBCard); //输出参数 TCHAR szDescribeString[128]=TEXT(""); m_AccountsDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput); //执行查询 LONG lResultCode=m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_EfficacyAccounts"),true); //结果处理 CDBVarValue DBVarValue; m_AccountsDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue); OnLogonDisposeResult(dwContextID,lResultCode,CW2CT(DBVarValue.bstrVal),false); return true; } catch (IDataBaseException * pIException) { //错误信息 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); //错误处理 OnLogonDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试或选择另一服务器登录!"),false); return false; } return true; } //注册处理 bool CDataBaseEngineSink::OnRequestRegisterAccounts(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_RegisterAccounts)); if (wDataSize!=sizeof(DBR_GP_RegisterAccounts)) return false; //请求处理 DBR_GP_RegisterAccounts * pRegisterAccounts=(DBR_GP_RegisterAccounts *)pData; //执行判断 tagBindParameter * pBindParameter=(tagBindParameter *)pRegisterAccounts->pBindParameter; if(!pBindParameter) return false; if (pBindParameter->dwSocketID!=dwContextID) return true; //转化地址 TCHAR szClientAddr[16]=TEXT(""); BYTE * pClientAddr=(BYTE *)&pRegisterAccounts->dwClientAddr; _sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]); //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@strOpenId"), pRegisterAccounts->szOpenId); m_AccountsDBAide.AddParameter(TEXT("@strUnionid"), pRegisterAccounts->szUnionid); m_AccountsDBAide.AddParameter(TEXT("@strAccounts"),pRegisterAccounts->szAccounts); m_AccountsDBAide.AddParameter(TEXT("@strNickName"),pRegisterAccounts->szNickName); m_AccountsDBAide.AddParameter(TEXT("@strSpreader"),pRegisterAccounts->szSpreader); m_AccountsDBAide.AddParameter(TEXT("@strLogonPass"),pRegisterAccounts->szLogonPass); m_AccountsDBAide.AddParameter(TEXT("@strInsurePass"),pRegisterAccounts->szInsurePass); m_AccountsDBAide.AddParameter(TEXT("@wFaceID"),pRegisterAccounts->wFaceID); m_AccountsDBAide.AddParameter(TEXT("@cbGender"),pRegisterAccounts->cbGender); m_AccountsDBAide.AddParameter(TEXT("@strPassPortID"),pRegisterAccounts->szPassPortID); m_AccountsDBAide.AddParameter(TEXT("@strCompellation"),pRegisterAccounts->szCompellation); m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr); m_AccountsDBAide.AddParameter(TEXT("@strMachineID"),pRegisterAccounts->szMachineID); //输出参数 TCHAR szDescribeString[128]=TEXT(""); m_AccountsDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput); //执行查询 LONG lResultCode=m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_RegisterAccounts"),true); //结果处理 CDBVarValue DBVarValue; m_AccountsDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue); OnLogonDisposeResult(dwContextID,lResultCode,CW2CT(DBVarValue.bstrVal),false); return true; } catch (IDataBaseException * pIException) { //错误信息 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); //错误处理 OnLogonDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试或选择另一服务器登录!"),false); return false; } return true; } //修改机器 bool CDataBaseEngineSink::OnRequestModifyMachine(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_ModifyMachine)); if (wDataSize!=sizeof(DBR_GP_ModifyMachine)) return false; //请求处理 DBR_GP_ModifyMachine * pModifyMachine=(DBR_GP_ModifyMachine *)pData; //转化地址 TCHAR szClientAddr[16]=TEXT(""); BYTE * pClientAddr=(BYTE *)&pModifyMachine->dwClientAddr; _sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]); //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),pModifyMachine->dwUserID); m_AccountsDBAide.AddParameter(TEXT("@strPassword"),pModifyMachine->szPassword); m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr); m_AccountsDBAide.AddParameter(TEXT("@strMachineID"),pModifyMachine->szMachineID); //输出变量 WCHAR szDescribe[128]=L""; m_AccountsDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribe,sizeof(szDescribe),adParamOutput); //绑定操作 if (pModifyMachine->cbBind==TRUE) { m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_MoorMachine"),false); } else { m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_UnMoorMachine"),false); } //结果处理 if (m_AccountsDBAide.GetReturnValue()==DB_SUCCESS) { //变量定义 DBO_GP_OperateSuccess OperateSuccess; ZeroMemory(&OperateSuccess,sizeof(OperateSuccess)); //获取信息 CDBVarValue DBVarValue; m_AccountsDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue); //构造变量 OperateSuccess.lResultCode=m_AccountsDBModule->GetReturnValue(); lstrcpyn(OperateSuccess.szDescribeString,CW2CT(DBVarValue.bstrVal),CountArray(OperateSuccess.szDescribeString)); //发送结果 WORD wStringSize=CountStringBuffer(OperateSuccess.szDescribeString); WORD wSendSize=sizeof(OperateSuccess)-sizeof(OperateSuccess.szDescribeString)+wStringSize; m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_OPERATE_SUCCESS,dwContextID,&OperateSuccess,wSendSize); } else { //变量定义 DBO_GP_OperateFailure OperateFailure; ZeroMemory(&OperateFailure,sizeof(OperateFailure)); //获取信息 CDBVarValue DBVarValue; m_AccountsDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue); //构造变量 OperateFailure.lResultCode=m_AccountsDBModule->GetReturnValue(); lstrcpyn(OperateFailure.szDescribeString,CW2CT(DBVarValue.bstrVal),CountArray(OperateFailure.szDescribeString)); //发送结果 WORD wStringSize=CountStringBuffer(OperateFailure.szDescribeString); WORD wSendSize=sizeof(OperateFailure)-sizeof(OperateFailure.szDescribeString)+wStringSize; m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_OPERATE_FAILURE,dwContextID,&OperateFailure,wSendSize); } return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); //结果处理 OnOperateDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试!"),false); return false; } return true; } //修改密码 bool CDataBaseEngineSink::OnRequestModifyLogonPass(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_ModifyLogonPass)); if (wDataSize!=sizeof(DBR_GP_ModifyLogonPass)) return false; //请求处理 DBR_GP_ModifyLogonPass * pModifyLogonPass=(DBR_GP_ModifyLogonPass *)pData; //转化地址 TCHAR szClientAddr[16]=TEXT(""); BYTE * pClientAddr=(BYTE *)&pModifyLogonPass->dwClientAddr; _sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]); //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),pModifyLogonPass->dwUserID); m_AccountsDBAide.AddParameter(TEXT("@strScrPassword"),pModifyLogonPass->szScrPassword); m_AccountsDBAide.AddParameter(TEXT("@strDesPassword"),pModifyLogonPass->szDesPassword); m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr); //输出变量 WCHAR szDescribe[128]=L""; m_AccountsDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribe,sizeof(szDescribe),adParamOutput); //执行查询 LONG lResultCode=m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_ModifyLogonPassword"),false); //结果处理 CDBVarValue DBVarValue; m_AccountsDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue); OnOperateDisposeResult(dwContextID,lResultCode,CW2CT(DBVarValue.bstrVal),false); return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); //结果处理 OnOperateDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试!"),false); return false; } return true; } //修改资料 bool CDataBaseEngineSink::OnRequestModifyIndividual(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_ModifyIndividual)); if (wDataSize!=sizeof(DBR_GP_ModifyIndividual)) return false; //请求处理 DBR_GP_ModifyIndividual * pModifyIndividual=(DBR_GP_ModifyIndividual *)pData; //转化地址 TCHAR szClientAddr[16]=TEXT(""); BYTE * pClientAddr=(BYTE *)&pModifyIndividual->dwClientAddr; _sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]); //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),pModifyIndividual->dwUserID); m_AccountsDBAide.AddParameter(TEXT("@strPassword"),pModifyIndividual->szPassword); m_AccountsDBAide.AddParameter(TEXT("@cbGender"),pModifyIndividual->cbGender); m_AccountsDBAide.AddParameter(TEXT("@strNickName"),pModifyIndividual->szNickName); m_AccountsDBAide.AddParameter(TEXT("@strUnderWrite"),pModifyIndividual->szUnderWrite); m_AccountsDBAide.AddParameter(TEXT("@strCompellation"),pModifyIndividual->szCompellation); m_AccountsDBAide.AddParameter(TEXT("@strQQ"),pModifyIndividual->szQQ); m_AccountsDBAide.AddParameter(TEXT("@strEMail"),pModifyIndividual->szEMail); m_AccountsDBAide.AddParameter(TEXT("@strSeatPhone"),pModifyIndividual->szSeatPhone); m_AccountsDBAide.AddParameter(TEXT("@strMobilePhone"),pModifyIndividual->szMobilePhone); m_AccountsDBAide.AddParameter(TEXT("@strDwellingPlace"),pModifyIndividual->szDwellingPlace); m_AccountsDBAide.AddParameter(TEXT("@strUserNote"),pModifyIndividual->szUserNote); m_AccountsDBAide.AddParameter(TEXT("@strHeadHttp"),pModifyIndividual->szHeadHttp); m_AccountsDBAide.AddParameter(TEXT("@strUserChannel"),pModifyIndividual->szUserChannel); m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr); //输出变量 WCHAR szDescribe[128]=L""; m_AccountsDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribe,sizeof(szDescribe),adParamOutput); //执行查询 LONG lResultCode=m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_ModifyUserIndividual"),false); //结果处理 CDBVarValue DBVarValue; m_AccountsDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue); OnOperateDisposeResult(dwContextID,lResultCode,CW2CT(DBVarValue.bstrVal),false); return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); //结果处理 OnOperateDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试!"),false); return false; } return true; } //修改资料 bool CDataBaseEngineSink::OnRequestUserInGameServerID(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_QueryUserInGameServerID)); if (wDataSize!=sizeof(DBR_GP_QueryUserInGameServerID)) return false; //请求处理 DBR_GP_QueryUserInGameServerID * pModifyIndividual=(DBR_GP_QueryUserInGameServerID *)pData; //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),pModifyIndividual->dwUserID); //执行查询 LONG lResultCode=m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_QueryUserInGameServerID"),true); if (lResultCode==DB_SUCCESS) { //变量定义 DBO_GP_UserInGameServerID kGPNetInfo; ZeroMemory(&kGPNetInfo,sizeof(kGPNetInfo)); //构造变量 kGPNetInfo.LockKindID=m_AccountsDBAide.GetValue_DWORD(TEXT("LockKindID")); kGPNetInfo.LockServerID=m_AccountsDBAide.GetValue_DWORD(TEXT("LockServerID")); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_USER_INGAME_SERVER_ID,dwContextID,&kGPNetInfo,sizeof(kGPNetInfo)); } return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); return false; } return true; } //微信分享成功 bool CDataBaseEngineSink::OnRequestUserWXShareSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize == sizeof(DBR_GP_WXShareSuccess)); if (wDataSize != sizeof(DBR_GP_WXShareSuccess)) return false; //请求处理 DBR_GP_WXShareSuccess * pWXShare = (DBR_GP_WXShareSuccess *)pData; //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@dwUserID"), pWXShare->dwUserID); m_AccountsDBAide.AddParameter(TEXT("@strPassword"), pWXShare->szPassword); //输出参数 TCHAR szDescribeString[128] = TEXT(""); m_AccountsDBAide.AddParameterOutput(TEXT("@strErrorDescribe"), szDescribeString, sizeof(szDescribeString), adParamOutput); //执行查询 LONG lResultCode = m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_UserWXShareSuccess"), true); if (lResultCode == DB_SUCCESS) { //变量定义 DBO_GP_WXShareReward mReward; ZeroMemory(&mReward, sizeof(mReward)); //构造变量 mReward.dwUserID = pWXShare->dwUserID; mReward.cbFKCount = m_AccountsDBAide.GetValue_BYTE(TEXT("FKCount")); if (mReward.cbFKCount>0) { m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_USER_WXSHARE_REWARD, dwContextID, &mReward, sizeof(mReward)); } } else { CDBVarValue DBVarValue; m_AccountsDBModule->GetParameter(TEXT("@strErrorDescribe"), DBVarValue); //变量定义 DBO_GP_OperateFailure OperateFailure; ZeroMemory(&OperateFailure, sizeof(OperateFailure)); //构造变量 OperateFailure.lResultCode = lResultCode; lstrcpyn(OperateFailure.szDescribeString, CW2CT(DBVarValue.bstrVal), CountArray(OperateFailure.szDescribeString)); //发送结果 WORD wDataSize = CountStringBuffer(OperateFailure.szDescribeString); WORD wHeadSize = sizeof(OperateFailure) - sizeof(OperateFailure.szDescribeString); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_OPERATE_FAILURE, dwContextID, &OperateFailure, wHeadSize + wDataSize); } } catch (IDataBaseException * pIException) { //错误信息 CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception); return false; } return true; } //查询个人信息 bool CDataBaseEngineSink::OnRequestQueryAccountInfo(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_QueryAccountInfo)); if (wDataSize!=sizeof(DBR_GP_QueryAccountInfo)) return false; //请求处理 DBR_GP_QueryAccountInfo * pQueryAccountInfo=(DBR_GP_QueryAccountInfo *)pData; //转化地址 TCHAR szClientAddr[16]=TEXT(""); BYTE * pClientAddr=(BYTE *)&pQueryAccountInfo->dwClientAddr; _sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]); //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),pQueryAccountInfo->dwUserID); m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr); //输出参数 TCHAR szDescribeString[128]=TEXT(""); m_AccountsDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput); //结果处理 if (m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_QueryUserAccountInfo"),true)==DB_SUCCESS) { //变量定义 DBO_GP_UserAccountInfo kUserAccountInfo; ZeroMemory(&kUserAccountInfo,sizeof(kUserAccountInfo)); //属性资料 kUserAccountInfo.wFaceID=m_AccountsDBAide.GetValue_WORD(TEXT("FaceID")); kUserAccountInfo.dwUserID=m_AccountsDBAide.GetValue_DWORD(TEXT("UserID")); kUserAccountInfo.dwGameID=m_AccountsDBAide.GetValue_DWORD(TEXT("GameID")); kUserAccountInfo.dwCustomID=m_AccountsDBAide.GetValue_DWORD(TEXT("CustomID")); kUserAccountInfo.dwUserMedal=m_AccountsDBAide.GetValue_DWORD(TEXT("UserMedal")); kUserAccountInfo.dwExperience=m_AccountsDBAide.GetValue_DWORD(TEXT("Experience")); kUserAccountInfo.dwLoveLiness=m_AccountsDBAide.GetValue_DWORD(TEXT("LoveLiness")); kUserAccountInfo.dwSpreaderID=m_AccountsDBAide.GetValue_DWORD(TEXT("SpreaderID")); m_AccountsDBAide.GetValue_String(TEXT("Accounts"),kUserAccountInfo.szAccounts,CountArray(kUserAccountInfo.szAccounts)); m_AccountsDBAide.GetValue_String(TEXT("NickName"),kUserAccountInfo.szNickName,CountArray(kUserAccountInfo.szNickName)); m_AccountsDBAide.GetValue_String(TEXT("LogonIP"),kUserAccountInfo.szLogonIp,CountArray(kUserAccountInfo.szLogonIp)); //用户成绩 kUserAccountInfo.lUserScore = (LONG)m_AccountsDBAide.GetValue_DOUBLE(TEXT("Score")); kUserAccountInfo.lUserInsure = (LONG)m_AccountsDBAide.GetValue_DOUBLE(TEXT("Insure")); kUserAccountInfo.lGrade = m_AccountsDBAide.GetValue_LONGLONG(TEXT("Grade")); //用户资料 kUserAccountInfo.cbGender=m_AccountsDBAide.GetValue_BYTE(TEXT("Gender")); kUserAccountInfo.cbMoorMachine=m_AccountsDBAide.GetValue_BYTE(TEXT("MoorMachine")); m_AccountsDBAide.GetValue_String(TEXT("UnderWrite"),kUserAccountInfo.szUnderWrite,CountArray(kUserAccountInfo.szUnderWrite)); //会员资料 kUserAccountInfo.cbMemberOrder=m_AccountsDBAide.GetValue_BYTE(TEXT("MemberOrder")); m_AccountsDBAide.GetValue_SystemTime(TEXT("MemberOverDate"),kUserAccountInfo.MemberOverDate); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_USER_ACCOUNTINFO,dwContextID,&kUserAccountInfo,sizeof(kUserAccountInfo)); } else { //错误处理 OnOperateDisposeResult(dwContextID,m_AccountsDBAide.GetReturnValue(),szDescribeString,false); } return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); //结果处理 OnOperateDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试!"),false); return false; } return true; } //查询资料 bool CDataBaseEngineSink::OnRequestQueryIndividual(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_QueryIndividual)); if (wDataSize!=sizeof(DBR_GP_QueryIndividual)) return false; //请求处理 DBR_GP_QueryIndividual * pQueryIndividual=(DBR_GP_QueryIndividual *)pData; //转化地址 TCHAR szClientAddr[16]=TEXT(""); BYTE * pClientAddr=(BYTE *)&pQueryIndividual->dwClientAddr; _sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]); //构造参数 m_AccountsDBAide.ResetParameter(); m_AccountsDBAide.AddParameter(TEXT("@dwUserID"),pQueryIndividual->dwUserID); m_AccountsDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr); //结果处理 if (m_AccountsDBAide.ExecuteProcess(TEXT("GSP_GP_QueryUserIndividual"),true)==DB_SUCCESS) { //变量定义 DBO_GP_UserIndividual UserIndividual; ZeroMemory(&UserIndividual,sizeof(UserIndividual)); //用户信息 UserIndividual.dwUserID=m_AccountsDBAide.GetValue_DWORD(TEXT("UserID")); m_AccountsDBAide.GetValue_String(TEXT("UserNote"),UserIndividual.szUserNote,CountArray(UserIndividual.szUserNote)); m_AccountsDBAide.GetValue_String(TEXT("Compellation"),UserIndividual.szCompellation,CountArray(UserIndividual.szCompellation)); //电话号码 m_AccountsDBAide.GetValue_String(TEXT("SeatPhone"),UserIndividual.szSeatPhone,CountArray(UserIndividual.szSeatPhone)); m_AccountsDBAide.GetValue_String(TEXT("MobilePhone"),UserIndividual.szMobilePhone,CountArray(UserIndividual.szMobilePhone)); //联系资料 m_AccountsDBAide.GetValue_String(TEXT("QQ"),UserIndividual.szQQ,CountArray(UserIndividual.szQQ)); m_AccountsDBAide.GetValue_String(TEXT("EMail"),UserIndividual.szEMail,CountArray(UserIndividual.szEMail)); m_AccountsDBAide.GetValue_String(TEXT("DwellingPlace"),UserIndividual.szDwellingPlace,CountArray(UserIndividual.szDwellingPlace)); m_AccountsDBAide.GetValue_String(TEXT("HeadHttp"),UserIndividual.szHeadHttp,CountArray(UserIndividual.szHeadHttp)); m_AccountsDBAide.GetValue_String(TEXT("UserChannel"),UserIndividual.szUserChannel,CountArray(UserIndividual.szUserChannel)); lstrcpyn(UserIndividual.szLogonIP,szClientAddr,CountArray(UserIndividual.szLogonIP)); //发送结果 m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_USER_INDIVIDUAL,dwContextID,&UserIndividual,sizeof(UserIndividual)); } else { } return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); //结果处理 OnOperateDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试!"),false); return false; } return true; } //加载列表 bool CDataBaseEngineSink::OnRequestLoadGameList(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //变量定义 WORD wPacketSize=0; BYTE cbBuffer[MAX_ASYNCHRONISM_DATA]; //加载类型 m_PlatformDBAide.ResetParameter(); m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_LoadGameTypeItem"),true); //发送种类 wPacketSize=0; DBO_GP_GameType * pGameType=NULL; while (m_PlatformDBModule->IsRecordsetEnd()==false) { //发送信息 if ((wPacketSize+sizeof(DBO_GP_GameType))>sizeof(cbBuffer)) { m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_TYPE_ITEM,dwContextID,cbBuffer,wPacketSize); wPacketSize=0; } //读取信息 pGameType=(DBO_GP_GameType *)(cbBuffer+wPacketSize); pGameType->wSortID=m_PlatformDBAide.GetValue_WORD(TEXT("SortID")); pGameType->wJoinID=m_PlatformDBAide.GetValue_WORD(TEXT("JoinID")); pGameType->wTypeID=m_PlatformDBAide.GetValue_WORD(TEXT("TypeID")); m_PlatformDBAide.GetValue_String(TEXT("TypeName"),pGameType->szTypeName,CountArray(pGameType->szTypeName)); //设置位移 wPacketSize+=sizeof(DBO_GP_GameType); //移动记录 m_PlatformDBModule->MoveToNext(); } if (wPacketSize>0) m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_TYPE_ITEM,dwContextID,cbBuffer,wPacketSize); //读取类型 m_PlatformDBAide.ResetParameter(); m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_LoadGameKindItem"),true); //发送类型 wPacketSize=0; DBO_GP_GameKind * pGameKind=NULL; while (m_PlatformDBModule->IsRecordsetEnd()==false) { //发送信息 if ((wPacketSize+sizeof(DBO_GP_GameKind))>sizeof(cbBuffer)) { m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_KIND_ITEM,dwContextID,cbBuffer,wPacketSize); wPacketSize=0; } //读取信息 pGameKind=(DBO_GP_GameKind *)(cbBuffer+wPacketSize); pGameKind->wSortID=m_PlatformDBAide.GetValue_WORD(TEXT("SortID")); pGameKind->wTypeID=m_PlatformDBAide.GetValue_WORD(TEXT("TypeID")); pGameKind->wJoinID=m_PlatformDBAide.GetValue_WORD(TEXT("JoinID")); pGameKind->wKindID=m_PlatformDBAide.GetValue_WORD(TEXT("KindID")); pGameKind->wGameID=m_PlatformDBAide.GetValue_WORD(TEXT("GameID")); m_PlatformDBAide.GetValue_String(TEXT("KindName"),pGameKind->szKindName,CountArray(pGameKind->szKindName)); m_PlatformDBAide.GetValue_String(TEXT("ProcessName"),pGameKind->szProcessName,CountArray(pGameKind->szProcessName)); //设置位移 wPacketSize+=sizeof(DBO_GP_GameKind); //移动记录 m_PlatformDBModule->MoveToNext(); } if (wPacketSize>0) m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_KIND_ITEM,dwContextID,cbBuffer,wPacketSize); //读取节点 m_PlatformDBAide.ResetParameter(); m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_LoadGameNodeItem"),true); //发送节点 wPacketSize=0; DBO_GP_GameNode * pGameNode=NULL; while (m_PlatformDBModule->IsRecordsetEnd()==false) { //发送信息 if ((wPacketSize+sizeof(DBO_GP_GameNode))>sizeof(cbBuffer)) { m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_NODE_ITEM,dwContextID,cbBuffer,wPacketSize); wPacketSize=0; } //读取信息 pGameNode=(DBO_GP_GameNode *)(cbBuffer+wPacketSize); pGameNode->wSortID=m_PlatformDBAide.GetValue_WORD(TEXT("SortID")); pGameNode->wKindID=m_PlatformDBAide.GetValue_WORD(TEXT("KindID")); pGameNode->wJoinID=m_PlatformDBAide.GetValue_WORD(TEXT("JoinID")); pGameNode->wNodeID=m_PlatformDBAide.GetValue_WORD(TEXT("NodeID")); m_PlatformDBAide.GetValue_String(TEXT("NodeName"),pGameNode->szNodeName,CountArray(pGameNode->szNodeName)); //设置位移 wPacketSize+=sizeof(DBO_GP_GameNode); //移动记录 m_PlatformDBModule->MoveToNext(); } if (wPacketSize>0) m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_NODE_ITEM,dwContextID,cbBuffer,wPacketSize); //读取定制 m_PlatformDBAide.ResetParameter(); m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_LoadGamePageItem"),true); //发送定制 wPacketSize=0; DBO_GP_GamePage * pGamePage=NULL; while (m_PlatformDBModule->IsRecordsetEnd()==false) { //发送信息 if ((wPacketSize+sizeof(DBO_GP_GamePage))>sizeof(cbBuffer)) { m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_PAGE_ITEM,dwContextID,cbBuffer,wPacketSize); wPacketSize=0; } //读取信息 pGamePage=(DBO_GP_GamePage *)(cbBuffer+wPacketSize); pGamePage->wKindID=m_PlatformDBAide.GetValue_WORD(TEXT("KindID")); pGamePage->wNodeID=m_PlatformDBAide.GetValue_WORD(TEXT("NodeID")); pGamePage->wSortID=m_PlatformDBAide.GetValue_WORD(TEXT("SortID")); pGamePage->wPageID=m_PlatformDBAide.GetValue_WORD(TEXT("PageID")); pGamePage->wOperateType=m_PlatformDBAide.GetValue_WORD(TEXT("OperateType")); m_PlatformDBAide.GetValue_String(TEXT("DisplayName"),pGamePage->szDisplayName,CountArray(pGamePage->szDisplayName)); //设置位移 wPacketSize+=sizeof(DBO_GP_GamePage); //移动记录 m_PlatformDBModule->MoveToNext(); } if (wPacketSize>0) m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_PAGE_ITEM,dwContextID,cbBuffer,wPacketSize); //变量定义 DBO_GP_GameListResult GameListResult; ZeroMemory(&GameListResult,sizeof(GameListResult)); //设置变量 GameListResult.cbSuccess=TRUE; //发送消息 m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_LIST_RESULT,dwContextID,&GameListResult,sizeof(GameListResult)); return true; } catch (IDataBaseException * pIException) { //输出错误 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); //变量定义 DBO_GP_GameListResult GameListResult; ZeroMemory(&GameListResult,sizeof(GameListResult)); //设置变量 GameListResult.cbSuccess=FALSE; //发送消息 m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_LIST_RESULT,dwContextID,&GameListResult,sizeof(GameListResult)); return false; } return true; } //在线信息 bool CDataBaseEngineSink::OnRequestOnLineCountInfo(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //变量定义 DBR_GP_OnLineCountInfo * pOnLineCountInfo=(DBR_GP_OnLineCountInfo *)pData; WORD wHeadSize=(sizeof(DBR_GP_OnLineCountInfo)-sizeof(pOnLineCountInfo->OnLineCountKind)); //效验数据 ASSERT((wDataSize>=wHeadSize)&&(wDataSize==(wHeadSize+pOnLineCountInfo->wKindCount*sizeof(tagOnLineInfoKind)))); if ((wDataSizewKindCount*sizeof(tagOnLineInfoKind)))) return false; //机器标识 TCHAR szMachineID[LEN_MACHINE_ID]; CWHService::GetMachineID(szMachineID); //构造信息 TCHAR szOnLineCountKind[2048]=TEXT(""); for (WORD i=0;iwKindCount;i++) { INT nLength=lstrlen(szOnLineCountKind); _sntprintf_s(&szOnLineCountKind[nLength],CountArray(szOnLineCountKind)-nLength, 20, TEXT("%d:%ld;"),pOnLineCountInfo->OnLineCountKind[i].wKindID, pOnLineCountInfo->OnLineCountKind[i].dwOnLineCount); } //构造参数 m_PlatformDBAide.ResetParameter(); m_PlatformDBAide.AddParameter(TEXT("@strMachineID"),szMachineID); m_PlatformDBAide.AddParameter(TEXT("@strMachineServer"),m_pInitParameter->m_szServerName); m_PlatformDBAide.AddParameter(TEXT("@dwOnLineCountSum"),pOnLineCountInfo->dwOnLineCountSum); m_PlatformDBAide.AddParameter(TEXT("@strOnLineCountKind"),szOnLineCountKind); //执行命令 m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_OnLineCountInfo"),false); return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); return false; } return true; } //游戏记录 bool CDataBaseEngineSink::OnRequestGameRecordList(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //请求处理 DBR_GP_GameRecordList * pNetInfo = (DBR_GP_GameRecordList *)pData; //构造参数 m_TreasureDBAide.ResetParameter(); m_TreasureDBAide.AddParameter(TEXT("@dwUserID"),pNetInfo->dwUserID); m_TreasureDBAide.AddParameter(TEXT("@wKindID"), pNetInfo->wKindID); //执行命令 LONG lResultCode = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_GameRecord_List_RecordID"),true); //执行成功 if(lResultCode==DB_SUCCESS) { //构造结构 tagPrivateRandTotalRecordList kGameRecordList; kGameRecordList.dwUserID = pNetInfo->dwUserID; std::vector kRecordID; //变量定义 while(m_TreasureDBModule->IsRecordsetEnd()==false) { kRecordID.push_back(m_TreasureDBAide.GetValue_DWORD(TEXT("RecordID"))); m_TreasureDBModule->MoveToNext(); } for (int i = 0;i<(int)kRecordID.size();i++) { m_TreasureDBAide.ResetParameter(); m_TreasureDBAide.AddParameter(TEXT("@dwRecordID"),kRecordID[i]); LONG lTempResultCode = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_PrivateGameRecord"),true); if (lTempResultCode == DB_SUCCESS) { if ((m_TreasureDBModule->IsRecordsetEnd() == false)) { DataStream kTempData; m_TreasureDBAide.GetParameter(TEXT("UserDate"), kTempData); tagPrivateRandTotalRecord kTotalRecord; kTotalRecord.StreamValue(kTempData, false); kTotalRecord.iRecordID = kRecordID[i]; kGameRecordList.kList.push_back(kTotalRecord); } } } DataStream kDataStream; kGameRecordList.StreamValue(kDataStream,true); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_RECORD_LIST,dwContextID,&kDataStream[0],kDataStream.size()); } return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); return false; } } //游戏回放 bool CDataBaseEngineSink::OnRequestGameTotalRecord(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //请求处理 DBR_GP_GetGameTotalRecord * pNetInfo = (DBR_GP_GetGameTotalRecord *)pData; tagPrivateRandTotalRecord kTotalRecord; m_TreasureDBAide.ResetParameter(); m_TreasureDBAide.AddParameter(TEXT("@dwRecordID"),pNetInfo->dwRecordID); LONG lTempCode1 = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_PrivateGameRecord"),true); if (lTempCode1 == DB_SUCCESS) { DataStream kTempData; m_TreasureDBAide.GetParameter(TEXT("UserDate"),kTempData); kTotalRecord.StreamValue(kTempData,false); } m_TreasureDBAide.ResetParameter(); m_TreasureDBAide.AddParameter(TEXT("@dwRecordID"),pNetInfo->dwRecordID); //执行命令 LONG lResultCode2 = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_PrivateGameRecord_Child"),true); if(lResultCode2==DB_SUCCESS) { //变量定义 while(m_TreasureDBModule->IsRecordsetEnd()==false) { //DWORD RecordChildID = m_TreasureDBAide.GetValue_DWORD(TEXT("RecordChildID")); //DataStream kDataStream; //m_TreasureDBAide.GetParameter(TEXT("UserDate"), kDataStream); //tagPrivateRandRecordChild kRecordChild; //kRecordChild.StreamValue(kDataStream, false); tagPrivateRandRecordChild kRecordChild; kRecordChild.iRecordChildID = m_TreasureDBAide.GetValue_DWORD(TEXT("RecordChildID")); TCHAR szUserScore[64] = {}; m_TreasureDBAide.GetValue_String(TEXT("UserScore"), szUserScore, CountArray(szUserScore)); m_TreasureDBAide.GetValue_SystemTime(TEXT("InsertTime"), kRecordChild.kPlayTime); kRecordChild.kUserDefine = szUserScore; kTotalRecord.kRecordChild.push_back(kRecordChild); m_TreasureDBModule->MoveToNext(); } DataStream kDataStream; kTotalRecord.StreamValue(kDataStream,true); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_RECORD_TOTAL,dwContextID,&kDataStream[0],kDataStream.size()); } return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception); return false; } } //分享码查询 bool CDataBaseEngineSink::OnRequestGameChildRecord(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //请求处理 DBR_GP_GetGameTotalRecord * pNetInfo = (DBR_GP_GetGameTotalRecord *)pData; m_TreasureDBAide.ResetParameter(); m_TreasureDBAide.AddParameter(TEXT("@dwRecordChildID"), pNetInfo->dwRecordID); //执行命令 LONG lResultCode2 = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_PrivateGameRecordByChildID"), true); if (lResultCode2 == DB_SUCCESS) { if (m_TreasureDBModule->IsRecordsetEnd() == false) { DWORD RecordChildID = m_TreasureDBAide.GetValue_DWORD(TEXT("RecordChildID")); DataStream kDataStream; m_TreasureDBAide.GetParameter(TEXT("UserDate"), kDataStream); tagPrivateRandRecordChild kRecordChild; kRecordChild.StreamValue(kDataStream, false); kRecordChild.iRecordChildID = RecordChildID; DataStream kSendData; kRecordChild.StreamValue(kSendData, true); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_GAME_RECORD_CHILD, dwContextID, &kSendData[0], kSendData.size()); } } return true; } catch (IDataBaseException * pIException) { //输出错误 CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception); return false; } } //登录成功 VOID CDataBaseEngineSink::OnLogonDisposeResult(DWORD dwContextID, DWORD dwErrorCode, LPCTSTR pszErrorString, bool bMobileClient) { if (bMobileClient==false) { if (dwErrorCode==DB_SUCCESS) { //变量定义 DBO_GP_LogonSuccess LogonSuccess; ZeroMemory(&LogonSuccess,sizeof(LogonSuccess)); //属性资料 LogonSuccess.wFaceID=0; LogonSuccess.dwUserID=m_AccountsDBAide.GetValue_DWORD(TEXT("UserID")); LogonSuccess.dwGameID=m_AccountsDBAide.GetValue_DWORD(TEXT("GameID")); LogonSuccess.dwCustomID=m_AccountsDBAide.GetValue_DWORD(TEXT("CustomID")); LogonSuccess.dwUserMedal=m_AccountsDBAide.GetValue_DWORD(TEXT("UserMedal")); LogonSuccess.dwExperience=m_AccountsDBAide.GetValue_DWORD(TEXT("Experience")); LogonSuccess.dwLoveLiness=m_AccountsDBAide.GetValue_DWORD(TEXT("LoveLiness")); LogonSuccess.dwSpreaderID=m_AccountsDBAide.GetValue_DWORD(TEXT("SpreaderID")); LogonSuccess.cbInsureEnabled=m_AccountsDBAide.GetValue_BYTE(TEXT("InsureEnabled")); LogonSuccess.cbWXShareTimes = m_AccountsDBAide.GetValue_BYTE(TEXT("WXShareTimes")); m_AccountsDBAide.GetValue_String(TEXT("Accounts"),LogonSuccess.szAccounts,CountArray(LogonSuccess.szAccounts)); m_AccountsDBAide.GetValue_String(TEXT("NickName"),LogonSuccess.szNickName,CountArray(LogonSuccess.szNickName)); //用户成绩 LogonSuccess.lUserScore = (LONG)m_AccountsDBAide.GetValue_DOUBLE(TEXT("Score")); LogonSuccess.lUserInsure = (LONG)m_AccountsDBAide.GetValue_DOUBLE(TEXT("Insure")); LogonSuccess.lGrade = m_AccountsDBAide.GetValue_LONGLONG(TEXT("Grade")); BYTE cbLottery = m_AccountsDBAide.GetValue_BYTE(TEXT("isLottery")); LogonSuccess.isLottery = (cbLottery>0) ? true : false; //用户资料 LogonSuccess.cbGender=m_AccountsDBAide.GetValue_BYTE(TEXT("Gender")); LogonSuccess.cbMoorMachine=m_AccountsDBAide.GetValue_BYTE(TEXT("MoorMachine")); m_AccountsDBAide.GetValue_String(TEXT("UnderWrite"),LogonSuccess.szUnderWrite,CountArray(LogonSuccess.szUnderWrite)); //会员资料 LogonSuccess.cbMemberOrder=m_AccountsDBAide.GetValue_BYTE(TEXT("MemberOrder")); m_AccountsDBAide.GetValue_SystemTime(TEXT("MemberOverDate"),LogonSuccess.MemberOverDate); //获取信息 lstrcpyn(LogonSuccess.szDescribeString,pszErrorString,CountArray(LogonSuccess.szDescribeString)); //try //{ // //构造参数 // m_PlatformDBAide.ResetParameter(); // m_PlatformDBAide.AddParameter(TEXT("@dwUserID"),LogonSuccess.dwUserID); // //输出参数 // TCHAR szDescribeString[128]=TEXT(""); // m_PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput); // //执行查询 // LONG lResultCode=m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadMatchSignupList"),true); // if(lResultCode==DB_SUCCESS) // { // //变量定义 // tagSignupMatchInfo * pSignupMatchInfo=NULL; // while (m_PlatformDBModule->IsRecordsetEnd()==false) // { // //溢出判断 // if(LogonSuccess.wSignupCount>=CountArray(LogonSuccess.SignupMatchInfo)) break; // //获取对象 // pSignupMatchInfo=&LogonSuccess.SignupMatchInfo[LogonSuccess.wSignupCount++]; // //读取记录 // pSignupMatchInfo->wServerID=m_PlatformDBAide.GetValue_WORD(TEXT("ServerID")); // pSignupMatchInfo->dwMatchID=m_PlatformDBAide.GetValue_DWORD(TEXT("MatchID")); // pSignupMatchInfo->dwMatchNO=m_PlatformDBAide.GetValue_DWORD(TEXT("MatchNo")); // //移动记录 // m_PlatformDBModule->MoveToNext(); // } // } //} //catch(...) //{ // ASSERT(FALSE); //}; //发送结果 WORD wDataSize=CountStringBuffer(LogonSuccess.szDescribeString); WORD wHeadSize=sizeof(LogonSuccess)-sizeof(LogonSuccess.szDescribeString); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_LOGON_SUCCESS,dwContextID,&LogonSuccess,wHeadSize+wDataSize); } else if(dwErrorCode == DB_NEEDMB) { //登录成功 DBR_GP_ValidateMBCard ValidateMBCard; ZeroMemory(&ValidateMBCard,sizeof(ValidateMBCard)); //读取变量 ValidateMBCard.uMBCardID=m_AccountsDBAide.GetValue_UINT(TEXT("PasswordID")); //投递结果 m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBR_GP_VALIDATE_MBCARD,dwContextID,&ValidateMBCard,sizeof(ValidateMBCard)); } else { //变量定义 DBO_GP_LogonFailure LogonFailure; ZeroMemory(&LogonFailure,sizeof(LogonFailure)); //构造数据 LogonFailure.lResultCode=dwErrorCode; lstrcpyn(LogonFailure.szDescribeString,pszErrorString,CountArray(LogonFailure.szDescribeString)); //发送结果 WORD wDataSize=CountStringBuffer(LogonFailure.szDescribeString); WORD wHeadSize=sizeof(LogonFailure)-sizeof(LogonFailure.szDescribeString); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_LOGON_FAILURE,dwContextID,&LogonFailure,wHeadSize+wDataSize); } } else { if (dwErrorCode==DB_SUCCESS) { //变量定义 DBO_MB_LogonSuccess LogonSuccess; ZeroMemory(&LogonSuccess,sizeof(LogonSuccess)); //属性资料 LogonSuccess.wFaceID=m_AccountsDBAide.GetValue_WORD(TEXT("FaceID")); LogonSuccess.cbGender=m_AccountsDBAide.GetValue_BYTE(TEXT("Gender")); LogonSuccess.dwUserID=m_AccountsDBAide.GetValue_DWORD(TEXT("UserID")); LogonSuccess.dwGameID=m_AccountsDBAide.GetValue_DWORD(TEXT("GameID")); LogonSuccess.dwExperience=m_AccountsDBAide.GetValue_DWORD(TEXT("Experience")); LogonSuccess.dwLoveLiness=m_AccountsDBAide.GetValue_DWORD(TEXT("LoveLiness")); m_AccountsDBAide.GetValue_String(TEXT("NickName"),LogonSuccess.szNickName,CountArray(LogonSuccess.szNickName)); //获取信息 lstrcpyn(LogonSuccess.szDescribeString,pszErrorString,CountArray(LogonSuccess.szDescribeString)); //发送结果 WORD wDataSize=CountStringBuffer(LogonSuccess.szDescribeString); WORD wHeadSize=sizeof(LogonSuccess)-sizeof(LogonSuccess.szDescribeString); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_MB_LOGON_SUCCESS,dwContextID,&LogonSuccess,wHeadSize+wDataSize); } else { //变量定义 DBO_MB_LogonFailure LogonFailure; ZeroMemory(&LogonFailure,sizeof(LogonFailure)); //构造数据 LogonFailure.lResultCode=dwErrorCode; lstrcpyn(LogonFailure.szDescribeString,pszErrorString,CountArray(LogonFailure.szDescribeString)); //发送结果 WORD wDataSize=CountStringBuffer(LogonFailure.szDescribeString); WORD wHeadSize=sizeof(LogonFailure)-sizeof(LogonFailure.szDescribeString); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_MB_LOGON_FAILURE,dwContextID,&LogonFailure,wHeadSize+wDataSize); } } return; } //操作结果 VOID CDataBaseEngineSink::OnOperateDisposeResult(DWORD dwContextID, DWORD dwErrorCode, LPCTSTR pszErrorString, bool bMobileClient) { if (dwErrorCode==DB_SUCCESS) { //变量定义 DBO_GP_OperateSuccess OperateSuccess; ZeroMemory(&OperateSuccess,sizeof(OperateSuccess)); //构造变量 OperateSuccess.lResultCode=dwErrorCode; lstrcpyn(OperateSuccess.szDescribeString,pszErrorString,CountArray(OperateSuccess.szDescribeString)); //发送结果 WORD wDataSize=CountStringBuffer(OperateSuccess.szDescribeString); WORD wHeadSize=sizeof(OperateSuccess)-sizeof(OperateSuccess.szDescribeString); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_OPERATE_SUCCESS,dwContextID,&OperateSuccess,wHeadSize+wDataSize); } else { //变量定义 DBO_GP_OperateFailure OperateFailure; ZeroMemory(&OperateFailure,sizeof(OperateFailure)); //构造变量 OperateFailure.lResultCode=dwErrorCode; lstrcpyn(OperateFailure.szDescribeString,pszErrorString,CountArray(OperateFailure.szDescribeString)); //发送结果 WORD wDataSize=CountStringBuffer(OperateFailure.szDescribeString); WORD wHeadSize=sizeof(OperateFailure)-sizeof(OperateFailure.szDescribeString); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_OPERATE_FAILURE,dwContextID,&OperateFailure,wHeadSize+wDataSize); } return; } bool CDataBaseEngineSink::OnRequestQueryInMatch(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //请求处理 DBR_GP_QueryInMatch * pNetInfo = (DBR_GP_QueryInMatch *)pData; //构造参数 m_PlatformDBAide.ResetParameter(); m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pNetInfo->dwUserID); //执行命令 LONG lResultCode = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_QueryInMatch"), true); //执行成功 if (lResultCode == DB_SUCCESS) { //构造结构; tagQueryInMatch kInMatch; memset(&kInMatch, 0, sizeof(kInMatch)); kInMatch.dwUserID = pNetInfo->dwUserID; kInMatch.cbListNum = 0; int nMaxList = sizeof(kInMatch.dwServerIDLists) / sizeof(kInMatch.dwServerIDLists[0]); //变量定义 while (m_PlatformDBModule->IsRecordsetEnd() == false) { if (kInMatch.cbListNum >= nMaxList) { //要越界啦; break; } kInMatch.dwServerIDLists[kInMatch.cbListNum] = m_PlatformDBAide.GetValue_DWORD(TEXT("ServerID")); kInMatch.cbServerIDStatus[kInMatch.cbListNum] = (BYTE)m_PlatformDBAide.GetValue_DWORD(TEXT("SignupFlag")); kInMatch.cbListNum++; m_PlatformDBModule->MoveToNext(); } m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_QueryInMatch, dwContextID, &kInMatch, sizeof(kInMatch)); } return true; } catch (IDataBaseException * pIException) { //输出错误; CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception); return false; } } bool CDataBaseEngineSink::OnRequestQueryInUnion(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //请求处理 DBR_GP_UserInUnion * pNetInfo = (DBR_GP_UserInUnion *)pData; //构造参数 m_TreasureDBAide.ResetParameter(); TCHAR szDescribeString[128]; //错误消息 ZeroMemory(szDescribeString, CountArray(szDescribeString)); m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pNetInfo->dwUserID); m_TreasureDBAide.AddParameter(TEXT("@dwUnionCode"), pNetInfo->dwUnionCode); //输出变量 m_TreasureDBAide.AddParameterOutput(TEXT("@strErrorDescribe"), szDescribeString, sizeof(szDescribeString), adParamOutput); //执行命令 LONG lResultCode = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_QueryInUnion"), true); //执行成功 if (lResultCode != DB_SUCCESS) { CDBVarValue DBVarValue; m_TreasureDBAide.GetParameter(TEXT("@strErrorDescribe"), DBVarValue); lstrcpyn(szDescribeString, CW2CT(DBVarValue.bstrVal), CountArray(szDescribeString)); } DBO_GP_InUnion inUnion; ZeroMemory(&inUnion, sizeof(DBO_GP_InUnion)); inUnion.cbResultCode = lResultCode; inUnion.dwUnionCode = pNetInfo->dwUnionCode; lstrcpyn(inUnion.szDescribeString, szDescribeString, CountArray(szDescribeString)); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_QueryInUnion, dwContextID, &inUnion, sizeof(DBO_GP_InUnion)); return true; } catch (IDataBaseException * pIException) { //输出错误; CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception); return false; } } bool CDataBaseEngineSink::OnRequestGetUnionList(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //请求处理 DBR_GP_GetUnionList * pNetInfo = (DBR_GP_GetUnionList *)pData; //构造参数 m_TreasureDBAide.ResetParameter(); TCHAR szDescribeString[128]; //错误消息 ZeroMemory(szDescribeString, CountArray(szDescribeString)); m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pNetInfo->dwUserID); //执行命令 LONG lResultCode = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_GetUnionList"), true); //执行成功 if (lResultCode == DB_SUCCESS) { //变量定义 tagUnionAndGameList kUnionAndGameList; while (m_TreasureDBModule->IsRecordsetEnd() == false) { tagUnionItem unionItem; ZeroMemory(&unionItem, sizeof(tagUnionItem)); unionItem.dwUserID = m_TreasureDBAide.GetValue_DWORD(TEXT("UserID")); unionItem.dwUnionCode = m_TreasureDBAide.GetValue_DWORD(TEXT("UnionCode")); unionItem.cbUnionGoldOpen = m_TreasureDBAide.GetValue_BYTE(TEXT("UnionGoldOpen")); unionItem.cbUnionOpen = m_TreasureDBAide.GetValue_BYTE(TEXT("UnionOpen")); unionItem.lPeople = (SCORE)m_TreasureDBAide.GetValue_DWORD(TEXT("People")); unionItem.lUnionCard = (SCORE)m_TreasureDBAide.GetValue_DWORD(TEXT("UnionCard")); m_TreasureDBAide.GetValue_String(TEXT("UnionName"), unionItem.szUnionName, CountArray(unionItem.szUnionName)); kUnionAndGameList.kUnionList.push_back(unionItem); m_TreasureDBModule->MoveToNext(); } // 获得玩家所在工会列表; DataStream kListDataStream; kUnionAndGameList.StreamValue(kListDataStream, true); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_UnionList, dwContextID, &kListDataStream[0], kListDataStream.size()); } return true; } catch (IDataBaseException * pIException) { //输出错误; CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception); return false; } } //获取工会房间列表; bool CDataBaseEngineSink::OnRequestGetUnionRoomList(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //请求处理 DBR_GP_GetUnionRoomList * pNetInfo = (DBR_GP_GetUnionRoomList *)pData; //构造参数 m_TreasureDBAide.ResetParameter(); m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pNetInfo->dwUserID); m_TreasureDBAide.AddParameter(TEXT("@dwUnionCode"), pNetInfo->dwUnionCode); //执行命令 LONG lResultCode = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_GetUnionRoomList_PlayCout_Score"), true); //执行成功 if (lResultCode == DB_SUCCESS) { //变量定义 tagRoomItemList kUnionRoomList; while (m_TreasureDBModule->IsRecordsetEnd() == false) { tagRoomItem unionRoomItem; ZeroMemory(&unionRoomItem, sizeof(tagRoomItem)); unionRoomItem.wKindID = m_TreasureDBAide.GetValue_WORD(TEXT("KindID")); unionRoomItem.dwUnionCode = m_TreasureDBAide.GetValue_DWORD(TEXT("UnionCode")); unionRoomItem.cbUnionGoldOpen = m_TreasureDBAide.GetValue_BYTE(TEXT("UnionGoldOpen")); unionRoomItem.dwRoomID = m_TreasureDBAide.GetValue_DWORD(TEXT("RoomID")); unionRoomItem.dwGameRule = m_TreasureDBAide.GetValue_DWORD(TEXT("GameRule")); unionRoomItem.cbPlayCout = m_TreasureDBAide.GetValue_BYTE(TEXT("PlayCout")); unionRoomItem.cbPlayCoutIdex = m_TreasureDBAide.GetValue_BYTE(TEXT("PlayCoutIdex")); unionRoomItem.cbGameOK = m_TreasureDBAide.GetValue_BYTE(TEXT("GameOK")); unionRoomItem.cbBaseScore = m_TreasureDBAide.GetValue_BYTE(TEXT("BaseScore")); unionRoomItem.dwUserIDs[0] = m_TreasureDBAide.GetValue_DWORD(TEXT("UserIDa")); unionRoomItem.dwUserIDs[1] = m_TreasureDBAide.GetValue_DWORD(TEXT("UserIDb")); unionRoomItem.dwUserIDs[2] = m_TreasureDBAide.GetValue_DWORD(TEXT("UserIDc")); unionRoomItem.dwUserIDs[3] = m_TreasureDBAide.GetValue_DWORD(TEXT("UserIDd")); unionRoomItem.dwUserIDs[4] = m_TreasureDBAide.GetValue_DWORD(TEXT("UserIDe")); m_TreasureDBAide.GetValue_SystemTime(TEXT("InsertTime"), unionRoomItem.InsertTime); m_TreasureDBAide.GetValue_String(TEXT("UnionName"), unionRoomItem.szUnionName, CountArray(unionRoomItem.szUnionName)); kUnionRoomList.kList.push_back(unionRoomItem); m_TreasureDBModule->MoveToNext(); } // 获取正在游戏的房间数量; m_TreasureDBAide.ResetParameter(); m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pNetInfo->dwUserID); m_TreasureDBAide.AddParameter(TEXT("@dwUnionCode"), pNetInfo->dwUnionCode); LONG lPlayResultCode = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GP_GetPlayingCount"), true); if (DB_SUCCESS == lPlayResultCode) { kUnionRoomList.cbPlayRoomCount = m_TreasureDBAide.GetValue_BYTE(TEXT("play")); } // 获得玩家所在工会列表; DataStream kListDataStream; kUnionRoomList.StreamValue(kListDataStream, true); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_UnionRoomList, dwContextID, &kListDataStream[0], kListDataStream.size()); } return true; } catch (IDataBaseException * pIException) { //输出错误; CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception); } return false; } //获取自动开房列表; bool CDataBaseEngineSink::OnRequestGetAutoRoomList(DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //请求处理 DBR_GP_GetAutoRoomList * pNetInfo = (DBR_GP_GetAutoRoomList *)pData; //构造参数 m_PlatformDBAide.ResetParameter(); TCHAR szDescribeString[128]; //错误消息 ZeroMemory(szDescribeString, CountArray(szDescribeString)); m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pNetInfo->dwUserID); m_PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"), szDescribeString, sizeof(szDescribeString), adParamOutput); //执行命令 LONG lResultCode = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_GetAutoRoomList"), true); //执行成功 if (lResultCode == DB_SUCCESS) { //变量定义 tagAutoRoomItemList kAutoRoomList; while (m_PlatformDBModule->IsRecordsetEnd() == false) { tagAutoRoomItem autoRoomItem; ZeroMemory(&autoRoomItem, sizeof(tagAutoRoomItem)); autoRoomItem.dwIndex = m_PlatformDBAide.GetValue_DWORD(TEXT("id")); autoRoomItem.wKindID = m_PlatformDBAide.GetValue_WORD(TEXT("KindID")); autoRoomItem.wServerID = m_PlatformDBAide.GetValue_WORD(TEXT("ServerID")); autoRoomItem.dwUnionCode = m_PlatformDBAide.GetValue_DWORD(TEXT("UnionCode")); autoRoomItem.cbUnionGoldOpen = m_PlatformDBAide.GetValue_BYTE(TEXT("UnionGoldOpen")); autoRoomItem.dwGameRule = m_PlatformDBAide.GetValue_DWORD(TEXT("GameRuleIdex")); autoRoomItem.cbPlayCoutIdex = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCoutIdex")); autoRoomItem.cbPlayCout = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCout")); autoRoomItem.cbBaseScore = m_PlatformDBAide.GetValue_BYTE(TEXT("BaseScore")); m_PlatformDBAide.GetValue_String(TEXT("UnionName"), autoRoomItem.szUnionName, CountArray(autoRoomItem.szUnionName)); SYSTEMTIME stCreateTime; m_PlatformDBAide.GetValue_SystemTime(TEXT("CreateTime"), stCreateTime); sprintf_s(autoRoomItem.szCreateTime, "%04d-%02d-%02d %02d:%02d", stCreateTime.wYear, stCreateTime.wMonth, stCreateTime.wDay, stCreateTime.wHour, stCreateTime.wMinute); kAutoRoomList.kList.push_back(autoRoomItem); m_PlatformDBModule->MoveToNext(); } // 获得玩家所在工会列表; DataStream kListDataStream; kAutoRoomList.StreamValue(kListDataStream, true); m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_AutoRoomList, dwContextID, &kListDataStream[0], kListDataStream.size()); } return true; } catch (IDataBaseException * pIException) { //输出错误; CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception); } return false; } //////////////////////////////////////////////////////////////////////////////////