1736 lines
58 KiB
C++
1736 lines
58 KiB
C++
#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 ((wDataSize<wHeadSize)||(wDataSize!=(wHeadSize+pOnLineCountInfo->wKindCount*sizeof(tagOnLineInfoKind)))) return false;
|
|
|
|
//机器标识
|
|
TCHAR szMachineID[LEN_MACHINE_ID];
|
|
CWHService::GetMachineID(szMachineID);
|
|
|
|
//构造信息
|
|
TCHAR szOnLineCountKind[2048]=TEXT("");
|
|
for (WORD i=0;i<pOnLineCountInfo->wKindCount;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<int> 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;
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////////
|