3750 lines
130 KiB
C++
3750 lines
130 KiB
C++
#include "StdAfx.h"
|
|
#include "ServiceUnits.h"
|
|
#include "DataBaseEngineSink.h"
|
|
|
|
//构造函数
|
|
CDataBaseEngineSink::CDataBaseEngineSink()
|
|
{
|
|
//配置变量
|
|
m_pGameParameter=NULL;
|
|
m_pInitParameter=NULL;
|
|
m_pDataBaseParameter=NULL;
|
|
m_pGameServiceAttrib=NULL;
|
|
m_pGameServiceOption=NULL;
|
|
|
|
//组件变量
|
|
m_pIDataBaseEngine=NULL;
|
|
m_pIGameServiceManager=NULL;
|
|
m_pIDataBaseEngineEvent=NULL;
|
|
m_pIGameDataBaseEngineSink=NULL;
|
|
m_pIDBCorrespondManager=NULL;
|
|
|
|
//辅助变量
|
|
ZeroMemory(&m_LogonFailure,sizeof(m_LogonFailure));
|
|
ZeroMemory(&m_LogonSuccess,sizeof(m_LogonSuccess));
|
|
|
|
return;
|
|
}
|
|
|
|
//析构函数
|
|
CDataBaseEngineSink::~CDataBaseEngineSink()
|
|
{
|
|
//释放对象
|
|
SafeRelease(m_pIGameDataBaseEngineSink);
|
|
|
|
return;
|
|
}
|
|
|
|
//接口查询
|
|
VOID * CDataBaseEngineSink::QueryInterface(REFGUID Guid, DWORD dwQueryVer)
|
|
{
|
|
QUERYINTERFACE(IDataBaseEngineSink,Guid,dwQueryVer);
|
|
QUERYINTERFACE(IGameDataBaseEngine,Guid,dwQueryVer);
|
|
QUERYINTERFACE_IUNKNOWNEX(IDataBaseEngineSink,Guid,dwQueryVer);
|
|
return NULL;
|
|
}
|
|
|
|
//获取对象
|
|
VOID * CDataBaseEngineSink::GetDataBase(REFGUID Guid, DWORD dwQueryVer)
|
|
{
|
|
//效验状态
|
|
ASSERT(m_GameDBModule.GetInterface()!=NULL);
|
|
if (m_GameDBModule.GetInterface()==NULL) return NULL;
|
|
|
|
//查询对象
|
|
IDataBase * pIDataBase=m_GameDBModule.GetInterface();
|
|
VOID * pIQueryObject=pIDataBase->QueryInterface(Guid,dwQueryVer);
|
|
|
|
return pIQueryObject;
|
|
}
|
|
|
|
//获取对象
|
|
VOID * CDataBaseEngineSink::GetDataBaseEngine(REFGUID Guid, DWORD dwQueryVer)
|
|
{
|
|
//效验状态
|
|
ASSERT(m_pIDataBaseEngine!=NULL);
|
|
if (m_pIDataBaseEngine==NULL) return NULL;
|
|
|
|
//查询对象
|
|
VOID * pIQueryObject=m_pIDataBaseEngine->QueryInterface(Guid,dwQueryVer);
|
|
|
|
return pIQueryObject;
|
|
}
|
|
|
|
//投递结果
|
|
bool CDataBaseEngineSink::PostGameDataBaseResult(WORD wRequestID, VOID * pData, WORD wDataSize)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
//启动事件
|
|
bool CDataBaseEngineSink::OnDataBaseEngineStart(IUnknownEx * pIUnknownEx)
|
|
{
|
|
//查询对象
|
|
ASSERT(QUERY_OBJECT_PTR_INTERFACE(pIUnknownEx,IDataBaseEngine)!=NULL);
|
|
m_pIDataBaseEngine=QUERY_OBJECT_PTR_INTERFACE(pIUnknownEx,IDataBaseEngine);
|
|
|
|
//创建对象
|
|
if ((m_GameDBModule.GetInterface()==NULL)&&(m_GameDBModule.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 * pTreasureDBParameter=&m_pInitParameter->m_TreasureDBParameter;
|
|
tagDataBaseParameter * pPlatformDBParameter=&m_pInitParameter->m_PlatformDBParameter;
|
|
|
|
//设置连接
|
|
m_GameDBModule->SetConnectionInfo(m_pDataBaseParameter->szDataBaseAddr,m_pDataBaseParameter->wDataBasePort,
|
|
m_pDataBaseParameter->szDataBaseName,m_pDataBaseParameter->szDataBaseUser,m_pDataBaseParameter->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_GameDBModule->OpenConnection();
|
|
m_GameDBAide.SetDataBase(m_GameDBModule.GetInterface());
|
|
|
|
//发起连接
|
|
m_TreasureDBModule->OpenConnection();
|
|
m_TreasureDBAide.SetDataBase(m_TreasureDBModule.GetInterface());
|
|
|
|
//发起连接
|
|
m_PlatformDBModule->OpenConnection();
|
|
m_PlatformDBAide.SetDataBase(m_PlatformDBModule.GetInterface());
|
|
|
|
//数据钩子
|
|
ASSERT(m_pIGameServiceManager!=NULL);
|
|
m_pIGameDataBaseEngineSink=(IGameDataBaseEngineSink *)m_pIGameServiceManager->CreateGameDataBaseEngineSink(IID_IGameDataBaseEngineSink,VER_IGameDataBaseEngineSink);
|
|
|
|
//配置对象
|
|
if ((m_pIGameDataBaseEngineSink!=NULL)&&(m_pIGameDataBaseEngineSink->InitializeSink(QUERY_ME_INTERFACE(IUnknownEx))==false))
|
|
{
|
|
//错误断言
|
|
ASSERT(FALSE);
|
|
|
|
//输出信息
|
|
CTraceService::TraceString(TEXT("游戏数据库扩展钩子引擎对象配置失败"),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//停止事件
|
|
bool CDataBaseEngineSink::OnDataBaseEngineConclude(IUnknownEx * pIUnknownEx)
|
|
{
|
|
//配置变量
|
|
m_pInitParameter=NULL;
|
|
m_pGameServiceAttrib=NULL;
|
|
m_pGameServiceOption=NULL;
|
|
|
|
//组件变量
|
|
m_pIGameServiceManager=NULL;
|
|
m_pIDataBaseEngineEvent=NULL;
|
|
|
|
//设置对象
|
|
m_GameDBAide.SetDataBase(NULL);
|
|
|
|
//释放对象
|
|
SafeRelease(m_pIGameDataBaseEngineSink);
|
|
|
|
//关闭连接
|
|
if (m_GameDBModule.GetInterface()!=NULL)
|
|
{
|
|
m_GameDBModule->CloseConnection();
|
|
m_GameDBModule.CloseInstance();
|
|
}
|
|
|
|
//关闭连接
|
|
if (m_TreasureDBModule.GetInterface()!=NULL)
|
|
{
|
|
m_TreasureDBModule->CloseConnection();
|
|
m_TreasureDBModule.CloseInstance();
|
|
}
|
|
|
|
//关闭连接
|
|
if (m_PlatformDBModule.GetInterface()!=NULL)
|
|
{
|
|
m_PlatformDBModule->CloseConnection();
|
|
m_PlatformDBModule.CloseInstance();
|
|
}
|
|
|
|
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)
|
|
{
|
|
//变量定义
|
|
bool bSucceed = false;
|
|
DWORD dwUserID = 0L;
|
|
|
|
//请求处理
|
|
switch (wRequestID)
|
|
{
|
|
case DBR_GR_LOGON_USERID: //I D 登录
|
|
{
|
|
bSucceed = OnRequestLogonUserID(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOGON_MOBILE: //手机登录
|
|
{
|
|
bSucceed = OnRequestLogonMobile(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOGON_ACCOUNTS: //帐号登录
|
|
{
|
|
bSucceed = OnRequestLogonAccounts(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_WRITE_GAME_SCORE: //游戏写分
|
|
{
|
|
bSucceed = OnRequestWriteGameScore(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_BEGINNER_GAME_TIME: //游戏新手活动记录
|
|
{
|
|
bSucceed = OnRequestBeginnerGameTime(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LEAVE_GAME_SERVER: //离开房间
|
|
{
|
|
bSucceed = OnRequestLeaveGameServer(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_GAME_SCORE_RECORD: //游戏记录
|
|
{
|
|
bSucceed = OnRequestGameScoreRecord(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_PRIVATE_GAME_RECORD: //游戏记录
|
|
{
|
|
bSucceed = OnRequestPrivateGameRecord(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_SINGLE_PRIVATE_RECORD:
|
|
{
|
|
bSucceed = OnRequestSinglePrivateGameRecord(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_UNLOCK_ANDROID_USER://解锁机器人
|
|
{
|
|
bSucceed = OnRequestUnlockAndroidUser(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_CARD_LIBRARY: //加载牌库
|
|
{
|
|
bSucceed = OnRequestLoadCardLibrary(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_RESET_DATEBASE_INF:
|
|
{
|
|
bSucceed = OnRequestResetDateBaseInfo(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_PRIVATE_GAME_END:
|
|
{
|
|
bSucceed = OnRequestPrivateGameEnd(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_CARD_LIB_CFG:
|
|
{
|
|
bSucceed = OnRequestLoadCardLibCfg(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_UNLOCK_ALL_USER:
|
|
{
|
|
bSucceed = OnRequestUnlockAllUser(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_PARAMETER: //加载参数
|
|
{
|
|
bSucceed = OnRequestLoadParameter(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_GAME_COLUMN: //加载列表
|
|
{
|
|
bSucceed = OnRequestLoadGameColumn(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_ANDROID_PARAMETER: //加载配置
|
|
{
|
|
bSucceed = OnRequestLoadAndroidParameter(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_ANDROID_USER: //加载机器
|
|
{
|
|
bSucceed = OnRequestLoadAndroidUser(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_GAME_PROPERTY: //加载道具
|
|
{
|
|
bSucceed = OnRequestLoadGameProperty(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_USER_SAVE_SCORE: //存入游戏币
|
|
{
|
|
bSucceed = OnRequestUserSaveScore(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_USER_TAKE_SCORE: //提取游戏币
|
|
{
|
|
bSucceed = OnRequestUserTakeScore(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_USER_TRANSFER_SCORE: //转账游戏币
|
|
{
|
|
bSucceed = OnRequestUserTransferScore(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_QUERY_INSURE_INFO: //查询银行
|
|
{
|
|
bSucceed = OnRequestQueryInsureInfo(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_QUERY_TRANSFER_USER_INFO: //查询用户
|
|
{
|
|
bSucceed = OnRequestQueryTransferUserInfo(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_PROPERTY_REQUEST: //道具请求
|
|
{
|
|
bSucceed = OnRequestPropertyRequest(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MANAGE_USER_RIGHT: //用户权限
|
|
{
|
|
bSucceed = OnRequestManageUserRight(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_SYSTEM_MESSAGE: //系统消息
|
|
{
|
|
bSucceed = OnRequestLoadSystemMessage(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_LOAD_SENSITIVE_WORDS://加载敏感词
|
|
{
|
|
bSucceed = OnRequestLoadSensitiveWords(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MATCH_SIGNUP: //比赛费用
|
|
{
|
|
bSucceed = OnRequestMatchSignup(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MATCH_UNSIGNUP: //退出比赛
|
|
{
|
|
bSucceed = OnRequestMatchUnSignup(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MATCH_START: //比赛开始
|
|
{
|
|
bSucceed = OnRequestMatchStart(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MATCH_ELIMINATE: //比赛淘汰
|
|
{
|
|
bSucceed = OnRequestMatchEliminate(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MATCH_RECORD_GRADES: //记录成绩
|
|
{
|
|
bSucceed = OnRequestMatchRecordGrades(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MATCH_OVER: //比赛结束
|
|
{
|
|
bSucceed = OnRequestMatchOver(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MATCH_REWARD: //比赛奖励
|
|
{
|
|
bSucceed = OnRequestMatchReward(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_MATCH_LOADRANKDATA:
|
|
{
|
|
bSucceed = OnRequestMatchLoadRankData(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_PRIVATE_INFO: //比赛奖励
|
|
{
|
|
bSucceed = OnRequestPrivateInfo(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_CREATE_PRIVAT: //检查是否可以创建房间
|
|
{
|
|
bSucceed = OnRequestCreatePrivate(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_CREATE_PRIVAT_COST: //扣除房费
|
|
{
|
|
bSucceed = OnRequestCreatePrivateCost(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_CREATE_UNION_ROOM: //工会开房;
|
|
{
|
|
bSucceed = OnRequestCreateUnionRoom(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_UNION_ROOM_USER:
|
|
{
|
|
bSucceed = OnRequestUnionRoomUser(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_DISMISS_UNION_ROOM:
|
|
{
|
|
bSucceed = onRequestDismissUnionRoom(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_JOIN_UNION_ROOM:
|
|
{
|
|
bSucceed = onRequestJoinUnionRoom(dwContextID, pData, wDataSize, dwUserID);
|
|
}break;
|
|
case DBR_GR_UNION_ROOM_END:
|
|
{
|
|
bSucceed = OnRequestUnionRoomEnd(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_WRITE_UNION_SCORE:
|
|
{
|
|
bSucceed = OnRequestWriteUnionScore(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_UNION_ROOM_INFO:
|
|
{
|
|
bSucceed = OnRequestUnionRoomInfo(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_AUTO_UNION_ROOM:
|
|
{
|
|
bSucceed = OnRequestAutoCreateUnionRoom(dwContextID, pData, wDataSize, dwUserID);
|
|
}
|
|
break;
|
|
case DBR_GR_ADD_AUTO_ROOM_INFO:
|
|
{
|
|
bSucceed = OnRequestAddAutoRoomInfo(dwContextID, pData, wDataSize, dwUserID);
|
|
break;
|
|
}
|
|
case DBR_GR_DEL_AUTO_ROOM_INFO:
|
|
{
|
|
bSucceed = OnRequestDelAutoRoomInfo(dwContextID, pData, wDataSize, dwUserID);
|
|
break;
|
|
}
|
|
case DBR_GR_WRITE_UNION_CHAIRID:
|
|
{
|
|
bSucceed = OnRequestWriteUnionChairID(dwContextID, pData, wDataSize, dwUserID);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//协调通知
|
|
if (m_pIDBCorrespondManager) m_pIDBCorrespondManager->OnPostRequestComplete(dwUserID, bSucceed);
|
|
|
|
return bSucceed;
|
|
}
|
|
|
|
//I D 登录
|
|
bool CDataBaseEngineSink::OnRequestLogonUserID(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//执行查询
|
|
DBR_GR_LogonUserID * pLogonUserID=(DBR_GR_LogonUserID *)pData;
|
|
dwUserID = pLogonUserID->dwUserID;
|
|
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_LogonUserID));
|
|
if (wDataSize!=sizeof(DBR_GR_LogonUserID)) return false;
|
|
|
|
try
|
|
{
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pLogonUserID->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"),pLogonUserID->dwUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@strPassword"),pLogonUserID->szPassword);
|
|
m_GameDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_GameDBAide.AddParameter(TEXT("@strMachineID"),pLogonUserID->szMachineID);
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
|
|
////比赛参数;
|
|
//if((m_pGameServiceOption->wServerType&GAME_GENRE_MATCH)!=0)
|
|
{
|
|
m_GameDBAide.AddParameter(TEXT("@dwMatchID"),pLogonUserID->dwMatchID);
|
|
m_GameDBAide.AddParameter(TEXT("@dwMatchNO"),pLogonUserID->dwMatchNO);
|
|
}
|
|
|
|
m_GameDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),m_LogonFailure.szDescribeString,sizeof(m_LogonFailure.szDescribeString),adParamOutput);
|
|
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_EfficacyUserID"),true);
|
|
|
|
//用户信息
|
|
lstrcpyn(m_LogonSuccess.szPassword,pLogonUserID->szPassword,CountArray(m_LogonSuccess.szPassword));
|
|
lstrcpyn(m_LogonSuccess.szMachineID,pLogonUserID->szMachineID,CountArray(m_LogonSuccess.szMachineID));
|
|
|
|
//结果处理
|
|
CDBVarValue DBVarValue;
|
|
m_GameDBModule->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;
|
|
}
|
|
|
|
//I D 登录
|
|
bool CDataBaseEngineSink::OnRequestLogonMobile(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//执行查询
|
|
DBR_GR_LogonMobile * pLogonMobile=(DBR_GR_LogonMobile *)pData;
|
|
dwUserID = pLogonMobile->dwUserID;
|
|
|
|
try
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_LogonMobile));
|
|
if (wDataSize!=sizeof(DBR_GR_LogonMobile)) return false;
|
|
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pLogonMobile->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"),pLogonMobile->dwUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@strPassword"),pLogonMobile->szPassword);
|
|
m_GameDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_GameDBAide.AddParameter(TEXT("@strMachineID"),pLogonMobile->szMachineID);
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
m_GameDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),m_LogonFailure.szDescribeString,sizeof(m_LogonFailure.szDescribeString),adParamOutput);
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_EfficacyMobile"),true);
|
|
|
|
//用户信息
|
|
lstrcpyn(m_LogonSuccess.szPassword,pLogonMobile->szPassword,CountArray(m_LogonSuccess.szPassword));
|
|
lstrcpyn(m_LogonSuccess.szMachineID,pLogonMobile->szMachineID,CountArray(m_LogonSuccess.szMachineID));
|
|
m_LogonSuccess.cbDeviceType=pLogonMobile->cbDeviceType;
|
|
m_LogonSuccess.wBehaviorFlags=pLogonMobile->wBehaviorFlags;
|
|
m_LogonSuccess.wPageTableCount=pLogonMobile->wPageTableCount;
|
|
|
|
//结果处理
|
|
CDBVarValue DBVarValue;
|
|
m_GameDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
OnLogonDisposeResult(dwContextID,lResultCode,CW2CT(DBVarValue.bstrVal),true,pLogonMobile->cbDeviceType,pLogonMobile->wBehaviorFlags,pLogonMobile->wPageTableCount);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//错误处理
|
|
OnLogonDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试或选择另一服务器登录!"),true);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//帐号登录
|
|
bool CDataBaseEngineSink::OnRequestLogonAccounts(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_LogonAccounts));
|
|
if (wDataSize!=sizeof(DBR_GR_LogonAccounts)) return false;
|
|
|
|
//请求处理
|
|
DBR_GR_LogonAccounts * pLogonAccounts=(DBR_GR_LogonAccounts *)pData;
|
|
|
|
//转化地址
|
|
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_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@strAccounts"),pLogonAccounts->szAccounts);
|
|
m_GameDBAide.AddParameter(TEXT("@strPassword"),pLogonAccounts->szPassword);
|
|
m_GameDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_GameDBAide.AddParameter(TEXT("@strMachineID"),pLogonAccounts->szMachineID);
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
m_GameDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),m_LogonFailure.szDescribeString,sizeof(m_LogonFailure.szDescribeString),adParamOutput);
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_EfficacyAccounts"),true);
|
|
|
|
//用户信息
|
|
lstrcpyn(m_LogonSuccess.szPassword,pLogonAccounts->szPassword,CountArray(m_LogonSuccess.szPassword));
|
|
lstrcpyn(m_LogonSuccess.szMachineID,pLogonAccounts->szMachineID,CountArray(m_LogonSuccess.szMachineID));
|
|
|
|
//结果处理
|
|
CDBVarValue DBVarValue;
|
|
m_GameDBModule->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::OnRequestWriteGameScore(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//请求处理
|
|
DBR_GR_WriteGameScore * pWriteGameScore=(DBR_GR_WriteGameScore *)pData;
|
|
dwUserID=pWriteGameScore->dwUserID;
|
|
|
|
try
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_WriteGameScore));
|
|
if (wDataSize!=sizeof(DBR_GR_WriteGameScore)) return false;
|
|
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pWriteGameScore->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
|
|
//用户信息
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pWriteGameScore->dwUserID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwDBQuestID"), pWriteGameScore->dwDBQuestID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwInoutIndex"), pWriteGameScore->dwInoutIndex);
|
|
|
|
//变更成绩
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationScore"), pWriteGameScore->VariationInfo.lScore);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationGrade"), pWriteGameScore->VariationInfo.lGrade);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationInsure"), pWriteGameScore->VariationInfo.lInsure);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationRevenue"), pWriteGameScore->VariationInfo.lRevenue);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationWinCount"), pWriteGameScore->VariationInfo.dwWinCount);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationLostCount"), pWriteGameScore->VariationInfo.dwLostCount);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationDrawCount"), pWriteGameScore->VariationInfo.dwDrawCount);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationFleeCount"), pWriteGameScore->VariationInfo.dwFleeCount);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationUserMedal"), pWriteGameScore->VariationInfo.dwUserMedal);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationExperience"), pWriteGameScore->VariationInfo.dwExperience);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lVariationLoveLiness"), pWriteGameScore->VariationInfo.lLoveLiness);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbScoreMultiple"), pWriteGameScore->VariationInfo.cbNextScoreMultiple);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwPlayTimeCount"), pWriteGameScore->VariationInfo.dwPlayTimeCount);
|
|
|
|
//任务参数
|
|
//m_GameDBAide.AddParameter(TEXT("@cbTaskForward"),pWriteGameScore->bTaskForward);
|
|
|
|
//比赛参数
|
|
if((m_pGameServiceOption->wServerType&GAME_GENRE_MATCH)!=0)
|
|
{
|
|
//比赛信息
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchID"), pWriteGameScore->dwMatchID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchNo"), pWriteGameScore->dwMatchNO);
|
|
}
|
|
|
|
//属性信息
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"), m_pGameServiceOption->wKindID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), m_pGameServiceOption->wServerID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@strClientIP"), szClientAddr);
|
|
|
|
//执行查询
|
|
LONG lResultCode = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_WriteGameScore"), false);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
bool CDataBaseEngineSink::OnRequestBeginnerGameTime(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
DBR_GR_Beginner_InGame * pNetInfo=(DBR_GR_Beginner_InGame *)pData;
|
|
dwUserID=pNetInfo->dwUserID;
|
|
|
|
//try
|
|
//{
|
|
// //用户信息
|
|
// m_GameDBAide.ResetParameter();
|
|
// m_GameDBAide.AddParameter(TEXT("@dwUserID"),dwUserID);
|
|
// //执行查询
|
|
// LONG lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_BeginnerPlayGame"),false);
|
|
|
|
// return true;
|
|
//}
|
|
//catch (IDataBaseException * pIException)
|
|
//{
|
|
// //输出错误
|
|
// CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
// return false;
|
|
//}
|
|
|
|
return true;
|
|
}
|
|
|
|
//离开房间
|
|
bool CDataBaseEngineSink::OnRequestLeaveGameServer(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//请求处理
|
|
DBR_GR_LeaveGameServer * pLeaveGameServer=(DBR_GR_LeaveGameServer *)pData;
|
|
dwUserID=pLeaveGameServer->dwUserID;
|
|
|
|
try
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_LeaveGameServer));
|
|
if (wDataSize!=sizeof(DBR_GR_LeaveGameServer)) return false;
|
|
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pLeaveGameServer->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
|
|
//用户信息
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"),pLeaveGameServer->dwUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@dwOnLineTimeCount"),pLeaveGameServer->dwOnLineTimeCount);
|
|
|
|
//系统信息
|
|
m_GameDBAide.AddParameter(TEXT("@dwInoutIndex"),pLeaveGameServer->dwInoutIndex);
|
|
m_GameDBAide.AddParameter(TEXT("@dwLeaveReason"),pLeaveGameServer->dwLeaveReason);
|
|
|
|
//记录成绩
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordScore"),pLeaveGameServer->RecordInfo.lScore);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordGrade"),pLeaveGameServer->RecordInfo.lGrade);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordInsure"),pLeaveGameServer->RecordInfo.lInsure);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordRevenue"),pLeaveGameServer->RecordInfo.lRevenue);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordWinCount"),pLeaveGameServer->RecordInfo.dwWinCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordLostCount"),pLeaveGameServer->RecordInfo.dwLostCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordDrawCount"),pLeaveGameServer->RecordInfo.dwDrawCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordFleeCount"),pLeaveGameServer->RecordInfo.dwFleeCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordUserMedal"),pLeaveGameServer->RecordInfo.dwUserMedal);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordExperience"),pLeaveGameServer->RecordInfo.dwExperience);
|
|
m_GameDBAide.AddParameter(TEXT("@lRecordLoveLiness"),pLeaveGameServer->RecordInfo.lLoveLiness);
|
|
m_GameDBAide.AddParameter(TEXT("@dwRecordPlayTimeCount"),pLeaveGameServer->RecordInfo.dwPlayTimeCount);
|
|
|
|
//变更成绩
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationScore"),pLeaveGameServer->VariationInfo.lScore);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationGrade"),pLeaveGameServer->VariationInfo.lGrade);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationInsure"),pLeaveGameServer->VariationInfo.lInsure);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationRevenue"),pLeaveGameServer->VariationInfo.lRevenue);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationWinCount"),pLeaveGameServer->VariationInfo.dwWinCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationLostCount"),pLeaveGameServer->VariationInfo.dwLostCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationDrawCount"),pLeaveGameServer->VariationInfo.dwDrawCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationFleeCount"),pLeaveGameServer->VariationInfo.dwFleeCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationUserMedal"),pLeaveGameServer->VariationInfo.dwUserMedal);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationExperience"),pLeaveGameServer->VariationInfo.dwExperience);
|
|
m_GameDBAide.AddParameter(TEXT("@lVariationLoveLiness"),pLeaveGameServer->VariationInfo.lLoveLiness);
|
|
//m_GameDBAide.AddParameter(TEXT("@cbScoreMultiple"), pLeaveGameServer->VariationInfo.cbNextScoreMultiple);
|
|
m_GameDBAide.AddParameter(TEXT("@dwVariationPlayTimeCount"),pLeaveGameServer->VariationInfo.dwPlayTimeCount);
|
|
|
|
//其他参数
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
m_GameDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_GameDBAide.AddParameter(TEXT("@strMachineID"),pLeaveGameServer->szMachineID);
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_LeaveGameServer"),false);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//游戏记录
|
|
bool CDataBaseEngineSink::OnRequestGameScoreRecord(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
DataStream kDataStream(pData,wDataSize);
|
|
|
|
DBR_GR_GameScoreRecord kNetInfo;
|
|
kNetInfo.StreamValue(kDataStream,false);
|
|
//变量定义
|
|
DBR_GR_GameScoreRecord * pGameScoreRecord=&kNetInfo;
|
|
dwUserID=INVALID_DWORD;
|
|
|
|
//房间信息
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
|
|
//桌子信息
|
|
m_GameDBAide.AddParameter(TEXT("@wTableID"),pGameScoreRecord->wTableID);
|
|
m_GameDBAide.AddParameter(TEXT("@wUserCount"),pGameScoreRecord->wUserCount);
|
|
m_GameDBAide.AddParameter(TEXT("@wAndroidCount"),pGameScoreRecord->wAndroidCount);
|
|
|
|
//税收损耗
|
|
m_GameDBAide.AddParameter(TEXT("@lWasteCount"),pGameScoreRecord->lWasteCount);
|
|
m_GameDBAide.AddParameter(TEXT("@lRevenueCount"),pGameScoreRecord->lRevenueCount);
|
|
|
|
//统计信息
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserMemal"),pGameScoreRecord->dwUserMemal);
|
|
m_GameDBAide.AddParameter(TEXT("@dwPlayTimeCount"),pGameScoreRecord->dwPlayTimeCount);
|
|
|
|
//时间信息
|
|
m_GameDBAide.AddParameter(TEXT("@SystemTimeStart"),pGameScoreRecord->SystemTimeStart);
|
|
m_GameDBAide.AddParameter(TEXT("@SystemTimeConclude"),pGameScoreRecord->SystemTimeConclude);
|
|
|
|
if (pGameScoreRecord->dataGameDefine.size() == 0)
|
|
{
|
|
pGameScoreRecord->dataGameDefine.pushValue((BYTE)0);
|
|
}
|
|
|
|
m_GameDBAide.AddParameter(TEXT("@dataUserDefine"),(BYTE*)&pGameScoreRecord->dataGameDefine[0],
|
|
(ULONG)pGameScoreRecord->dataGameDefine.size());
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_RecordDrawInfo"),true);
|
|
|
|
//写入记录
|
|
if (lResultCode==DB_SUCCESS)
|
|
{
|
|
//获取标识
|
|
DWORD dwDrawID=m_GameDBAide.GetValue_DWORD(TEXT("DrawID"));
|
|
|
|
//写入记录
|
|
for (WORD i=0;i<(WORD)pGameScoreRecord->GameScoreRecord.size();i++)
|
|
{
|
|
//重置参数
|
|
m_GameDBAide.ResetParameter();
|
|
|
|
//房间信息
|
|
m_GameDBAide.AddParameter(TEXT("@dwDrawID"),dwDrawID);
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"),pGameScoreRecord->GameScoreRecord[i].dwUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@wChairID"),pGameScoreRecord->GameScoreRecord[i].wChairID);
|
|
|
|
//用户信息
|
|
m_GameDBAide.AddParameter(TEXT("@dwDBQuestID"),pGameScoreRecord->GameScoreRecord[i].dwDBQuestID);
|
|
m_GameDBAide.AddParameter(TEXT("@dwInoutIndex"),pGameScoreRecord->GameScoreRecord[i].dwInoutIndex);
|
|
|
|
//成绩信息
|
|
m_GameDBAide.AddParameter(TEXT("@lScore"),pGameScoreRecord->GameScoreRecord[i].lScore);
|
|
m_GameDBAide.AddParameter(TEXT("@lGrade"),pGameScoreRecord->GameScoreRecord[i].lGrade);
|
|
m_GameDBAide.AddParameter(TEXT("@lRevenue"),pGameScoreRecord->GameScoreRecord[i].lRevenue);
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserMedal"),pGameScoreRecord->GameScoreRecord[i].dwUserMemal);
|
|
m_GameDBAide.AddParameter(TEXT("@dwPlayTimeCount"),pGameScoreRecord->GameScoreRecord[i].dwPlayTimeCount);
|
|
|
|
//执行查询
|
|
m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_RecordDrawScore"),false);
|
|
}
|
|
}
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CDataBaseEngineSink::OnRequestPrivateGameRecord(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
DataStream kDataStream(pData,wDataSize);
|
|
|
|
if (kDataStream.size() == 0)
|
|
{
|
|
return true;
|
|
}
|
|
std::vector<tagPrivateRandRecordChild> kRecordChild;
|
|
tagPrivateRandTotalRecord kTotalRecord;
|
|
kTotalRecord.StreamValue(kDataStream,false);
|
|
|
|
for (int i = 0;i<(int)kTotalRecord.kRecordChild.size();i++)
|
|
{
|
|
kRecordChild.push_back(kTotalRecord.kRecordChild[i]);
|
|
}
|
|
kTotalRecord.kRecordChild.clear();
|
|
|
|
DataStream kTempData;
|
|
kTotalRecord.StreamValue(kTempData,true);
|
|
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@recordID"), kTotalRecord.iRecordID);
|
|
m_GameDBAide.AddParameter(TEXT("@roomNum"), kTotalRecord.iRoomNum);
|
|
m_GameDBAide.AddParameter(TEXT("@kindID"), m_pGameServiceAttrib->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@dataUserDefine"),(BYTE*)&kTempData[0],(ULONG)kTempData.size());
|
|
|
|
//执行查询;
|
|
LONG lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_PrivateGameRecord"),true);
|
|
|
|
//写入记录;
|
|
if (lResultCode==DB_SUCCESS)
|
|
{
|
|
//写入记录;
|
|
for (WORD i=0;i<(WORD)kTotalRecord.kUserID.size();i++)
|
|
{
|
|
//重置参数;
|
|
m_GameDBAide.ResetParameter();
|
|
|
|
//房间信息
|
|
m_GameDBAide.AddParameter(TEXT("@dwRecordID"), kTotalRecord.iRecordID);
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"),(DWORD)kTotalRecord.kUserID[i]);
|
|
m_GameDBAide.AddParameter(TEXT("@wkindID"), m_pGameServiceAttrib->wKindID);
|
|
|
|
//执行查询;
|
|
m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_PrivateGameRecordUserRecordID"),true);
|
|
}
|
|
}
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//加载参数
|
|
bool CDataBaseEngineSink::OnRequestLoadParameter(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//变量定义
|
|
DBO_GR_GameParameter GameParameter;
|
|
ZeroMemory(&GameParameter,sizeof(GameParameter));
|
|
|
|
//执行查询
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_LoadParameter"),true);
|
|
|
|
//读取信息
|
|
if (lResultCode==DB_SUCCESS)
|
|
{
|
|
//汇率信息
|
|
GameParameter.wMedalRate=m_GameDBAide.GetValue_WORD(TEXT("MedalRate"));
|
|
GameParameter.wRevenueRate=m_GameDBAide.GetValue_WORD(TEXT("RevenueRate"));
|
|
|
|
//版本信息
|
|
GameParameter.dwClientVersion=m_GameDBAide.GetValue_DWORD(TEXT("ClientVersion"));
|
|
GameParameter.dwServerVersion=m_GameDBAide.GetValue_DWORD(TEXT("ServerVersion"));
|
|
|
|
//发送信息
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_PARAMETER,dwContextID,&GameParameter,sizeof(GameParameter));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//加载列表
|
|
bool CDataBaseEngineSink::OnRequestLoadGameColumn(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//变量定义
|
|
DBO_GR_GameColumnInfo GameColumnInfo;
|
|
ZeroMemory(&GameColumnInfo,sizeof(GameColumnInfo));
|
|
|
|
//执行查询
|
|
m_GameDBAide.ResetParameter();
|
|
GameColumnInfo.lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_GameColumnItem"),true);
|
|
|
|
//读取信息
|
|
for (WORD i=0;i<CountArray(GameColumnInfo.ColumnItemInfo);i++)
|
|
{
|
|
//结束判断
|
|
if (m_GameDBModule->IsRecordsetEnd()==true) break;
|
|
|
|
//溢出效验
|
|
ASSERT(GameColumnInfo.cbColumnCount<CountArray(GameColumnInfo.ColumnItemInfo));
|
|
if (GameColumnInfo.cbColumnCount>=CountArray(GameColumnInfo.ColumnItemInfo)) break;
|
|
|
|
//读取数据
|
|
GameColumnInfo.cbColumnCount++;
|
|
GameColumnInfo.ColumnItemInfo[i].cbColumnWidth=m_GameDBAide.GetValue_BYTE(TEXT("ColumnWidth"));
|
|
GameColumnInfo.ColumnItemInfo[i].cbDataDescribe=m_GameDBAide.GetValue_BYTE(TEXT("DataDescribe"));
|
|
m_GameDBAide.GetValue_String(TEXT("ColumnName"),GameColumnInfo.ColumnItemInfo[i].szColumnName,CountArray(GameColumnInfo.ColumnItemInfo[i].szColumnName));
|
|
|
|
//移动记录
|
|
m_GameDBModule->MoveToNext();
|
|
}
|
|
|
|
//发送信息
|
|
WORD wHeadSize=sizeof(GameColumnInfo)-sizeof(GameColumnInfo.ColumnItemInfo);
|
|
WORD wPacketSize=wHeadSize+GameColumnInfo.cbColumnCount*sizeof(GameColumnInfo.ColumnItemInfo[0]);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_COLUMN_INFO,dwContextID,&GameColumnInfo,wPacketSize);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//变量定义
|
|
DBO_GR_GameColumnInfo GameColumnInfo;
|
|
ZeroMemory(&GameColumnInfo,sizeof(GameColumnInfo));
|
|
|
|
//构造变量
|
|
GameColumnInfo.cbColumnCount=0L;
|
|
GameColumnInfo.lResultCode=pIException->GetExceptionResult();
|
|
|
|
//发送信息
|
|
WORD wPacketSize=sizeof(GameColumnInfo)-sizeof(GameColumnInfo.ColumnItemInfo);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_COLUMN_INFO,dwContextID,&GameColumnInfo,wPacketSize);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//加载机器
|
|
bool CDataBaseEngineSink::OnRequestLoadAndroidParameter(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//变量定义
|
|
DBO_GR_GameAndroidParameter GameAndroidParameter;
|
|
ZeroMemory(&GameAndroidParameter, sizeof(GameAndroidParameter));
|
|
|
|
//用户帐户
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@wKindID"), m_pGameServiceAttrib->wKindID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wServerID"), m_pGameServiceOption->wServerID);
|
|
|
|
//执行查询
|
|
GameAndroidParameter.lResultCode = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_LoadAndroidConfigure"), true);
|
|
|
|
//读取信息
|
|
for (WORD i = 0; i < CountArray(GameAndroidParameter.AndroidParameter); i++)
|
|
{
|
|
//结束判断
|
|
if (m_TreasureDBModule->IsRecordsetEnd() == true) break;
|
|
|
|
//溢出效验
|
|
ASSERT(GameAndroidParameter.wParameterCount < CountArray(GameAndroidParameter.AndroidParameter));
|
|
if (GameAndroidParameter.wParameterCount >= CountArray(GameAndroidParameter.AndroidParameter)) break;
|
|
|
|
//读取数据
|
|
GameAndroidParameter.wParameterCount++;
|
|
GameAndroidParameter.AndroidParameter[i].dwBatchID = m_TreasureDBAide.GetValue_DWORD(TEXT("BatchID"));
|
|
GameAndroidParameter.AndroidParameter[i].dwServiceMode = m_TreasureDBAide.GetValue_DWORD(TEXT("ServiceMode"));
|
|
GameAndroidParameter.AndroidParameter[i].dwAndroidCount = m_TreasureDBAide.GetValue_DWORD(TEXT("AndroidCount"));
|
|
GameAndroidParameter.AndroidParameter[i].dwEnterTime = m_TreasureDBAide.GetValue_DWORD(TEXT("EnterTime"));
|
|
GameAndroidParameter.AndroidParameter[i].dwLeaveTime = m_TreasureDBAide.GetValue_DWORD(TEXT("LeaveTime"));
|
|
GameAndroidParameter.AndroidParameter[i].lTakeMinScore = m_TreasureDBAide.GetValue_LONGLONG(TEXT("TakeMinScore"));
|
|
GameAndroidParameter.AndroidParameter[i].lTakeMaxScore = m_TreasureDBAide.GetValue_LONGLONG(TEXT("TakeMaxScore"));
|
|
GameAndroidParameter.AndroidParameter[i].dwEnterMinInterval = m_TreasureDBAide.GetValue_DWORD(TEXT("EnterMinInterval"));
|
|
GameAndroidParameter.AndroidParameter[i].dwEnterMaxInterval = m_TreasureDBAide.GetValue_DWORD(TEXT("EnterMaxInterval"));
|
|
GameAndroidParameter.AndroidParameter[i].dwLeaveMinInterval = m_TreasureDBAide.GetValue_DWORD(TEXT("LeaveMinInterval"));
|
|
GameAndroidParameter.AndroidParameter[i].dwLeaveMaxInterval = m_TreasureDBAide.GetValue_DWORD(TEXT("LeaveMaxInterval"));
|
|
GameAndroidParameter.AndroidParameter[i].dwSwitchMinInnings = m_TreasureDBAide.GetValue_DWORD(TEXT("SwitchMinInnings"));
|
|
GameAndroidParameter.AndroidParameter[i].dwSwitchMaxInnings = m_TreasureDBAide.GetValue_DWORD(TEXT("SwitchMaxInnings"));
|
|
|
|
//移动记录
|
|
m_TreasureDBModule->MoveToNext();
|
|
}
|
|
|
|
//发送信息
|
|
WORD wHeadSize = sizeof(GameAndroidParameter) - sizeof(GameAndroidParameter.AndroidParameter);
|
|
WORD wDataSize = GameAndroidParameter.wParameterCount*sizeof(GameAndroidParameter.AndroidParameter[0]);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_ANDROID_PARAMETER, dwContextID, &GameAndroidParameter, wHeadSize + wDataSize);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
//变量定义
|
|
DBO_GR_GameAndroidParameter GameAndroidParameter;
|
|
ZeroMemory(&GameAndroidParameter, sizeof(GameAndroidParameter));
|
|
|
|
//构造变量
|
|
GameAndroidParameter.wParameterCount = 0L;
|
|
GameAndroidParameter.lResultCode = DB_ERROR;
|
|
|
|
//发送信息
|
|
WORD wHeadSize = sizeof(GameAndroidParameter) - sizeof(GameAndroidParameter.AndroidParameter);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_ANDROID_PARAMETER, dwContextID, &GameAndroidParameter, wHeadSize);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
//加载机器
|
|
bool CDataBaseEngineSink::OnRequestLoadAndroidUser(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//参数校验
|
|
ASSERT(sizeof(DBR_GR_LoadAndroidUser) == wDataSize);
|
|
if (sizeof(DBR_GR_LoadAndroidUser) != wDataSize) return false;
|
|
|
|
try
|
|
{
|
|
//提取变量
|
|
DBR_GR_LoadAndroidUser * pLoadAndroidUser = (DBR_GR_LoadAndroidUser *)pData;
|
|
if (pLoadAndroidUser == NULL) return false;
|
|
|
|
//变量定义
|
|
DBO_GR_GameAndroidInfo GameAndroidInfo;
|
|
ZeroMemory(&GameAndroidInfo, sizeof(GameAndroidInfo));
|
|
|
|
//设置批次
|
|
GameAndroidInfo.dwBatchID = pLoadAndroidUser->dwBatchID;
|
|
|
|
//用户帐户
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@wServerID"), m_pGameServiceOption->wServerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwBatchID"), pLoadAndroidUser->dwBatchID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwAndroidCount"), pLoadAndroidUser->dwAndroidCount);
|
|
|
|
//执行查询
|
|
GameAndroidInfo.lResultCode = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_LoadAndroidUser"), true);
|
|
|
|
//读取信息
|
|
for (WORD i = 0; i < CountArray(GameAndroidInfo.AndroidAccountsInfo); i++)
|
|
{
|
|
//结束判断
|
|
if (m_TreasureDBModule->IsRecordsetEnd() == true) break;
|
|
|
|
//溢出效验
|
|
ASSERT(GameAndroidInfo.wAndroidCount < CountArray(GameAndroidInfo.AndroidAccountsInfo));
|
|
if (GameAndroidInfo.wAndroidCount >= CountArray(GameAndroidInfo.AndroidAccountsInfo)) break;
|
|
|
|
//读取数据
|
|
GameAndroidInfo.wAndroidCount++;
|
|
GameAndroidInfo.AndroidAccountsInfo[i].dwUserID = m_TreasureDBAide.GetValue_DWORD(TEXT("UserID"));
|
|
m_TreasureDBAide.GetValue_String(TEXT("LogonPass"), GameAndroidInfo.AndroidAccountsInfo[i].szPassword, CountArray(GameAndroidInfo.AndroidAccountsInfo[i].szPassword));
|
|
|
|
//移动记录
|
|
m_TreasureDBModule->MoveToNext();
|
|
}
|
|
|
|
//发送信息
|
|
WORD wHeadSize = sizeof(GameAndroidInfo) - sizeof(GameAndroidInfo.AndroidAccountsInfo);
|
|
WORD wDataSize = GameAndroidInfo.wAndroidCount*sizeof(GameAndroidInfo.AndroidAccountsInfo[0]);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_ANDROID_INFO, dwContextID, &GameAndroidInfo, wHeadSize + wDataSize);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
//变量定义
|
|
DBO_GR_GameAndroidInfo GameAndroidInfo;
|
|
ZeroMemory(&GameAndroidInfo, sizeof(GameAndroidInfo));
|
|
|
|
//构造变量
|
|
GameAndroidInfo.wAndroidCount = 0L;
|
|
GameAndroidInfo.lResultCode = DB_ERROR;
|
|
|
|
//发送信息
|
|
WORD wHeadSize = sizeof(GameAndroidInfo) - sizeof(GameAndroidInfo.AndroidAccountsInfo);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_ANDROID_INFO, dwContextID, &GameAndroidInfo, wHeadSize);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
//加载道具
|
|
bool CDataBaseEngineSink::OnRequestLoadGameProperty(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//变量定义
|
|
DBO_GR_GamePropertyInfo GamePropertyInfo;
|
|
ZeroMemory(&GamePropertyInfo,sizeof(GamePropertyInfo));
|
|
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
|
|
//执行查询
|
|
GamePropertyInfo.lResultCode=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_LoadGameProperty"),true);
|
|
|
|
//读取信息
|
|
for (WORD i=0;i<CountArray(GamePropertyInfo.PropertyInfo);i++)
|
|
{
|
|
//结束判断
|
|
if (m_GameDBModule->IsRecordsetEnd()==true) break;
|
|
|
|
//溢出效验
|
|
ASSERT(GamePropertyInfo.cbPropertyCount<CountArray(GamePropertyInfo.PropertyInfo));
|
|
if (GamePropertyInfo.cbPropertyCount>=CountArray(GamePropertyInfo.PropertyInfo)) break;
|
|
|
|
//读取数据
|
|
GamePropertyInfo.cbPropertyCount++;
|
|
GamePropertyInfo.PropertyInfo[i].wIndex=m_GameDBAide.GetValue_WORD(TEXT("ID"));
|
|
GamePropertyInfo.PropertyInfo[i].wDiscount=m_GameDBAide.GetValue_WORD(TEXT("Discount"));
|
|
GamePropertyInfo.PropertyInfo[i].wIssueArea=m_GameDBAide.GetValue_WORD(TEXT("IssueArea"));
|
|
GamePropertyInfo.PropertyInfo[i].dPropertyCash=m_GameDBAide.GetValue_DOUBLE(TEXT("Cash"));
|
|
GamePropertyInfo.PropertyInfo[i].lPropertyGold=m_GameDBAide.GetValue_LONGLONG(TEXT("Gold"));
|
|
GamePropertyInfo.PropertyInfo[i].lSendLoveLiness=m_GameDBAide.GetValue_LONGLONG(TEXT("SendLoveLiness"));
|
|
GamePropertyInfo.PropertyInfo[i].lRecvLoveLiness=m_GameDBAide.GetValue_LONGLONG(TEXT("RecvLoveLiness"));
|
|
|
|
//移动记录
|
|
m_GameDBModule->MoveToNext();
|
|
}
|
|
|
|
//发送信息
|
|
WORD wHeadSize=sizeof(GamePropertyInfo)-sizeof(GamePropertyInfo.PropertyInfo);
|
|
WORD wDataSize=GamePropertyInfo.cbPropertyCount*sizeof(GamePropertyInfo.PropertyInfo[0]);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_PROPERTY_INFO,dwContextID,&GamePropertyInfo,wHeadSize+wDataSize);
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//变量定义
|
|
DBO_GR_GamePropertyInfo GamePropertyInfo;
|
|
ZeroMemory(&GamePropertyInfo,sizeof(GamePropertyInfo));
|
|
|
|
//构造变量
|
|
GamePropertyInfo.cbPropertyCount=0L;
|
|
GamePropertyInfo.lResultCode=DB_ERROR;
|
|
|
|
//发送信息
|
|
WORD wHeadSize=sizeof(GamePropertyInfo)-sizeof(GamePropertyInfo.PropertyInfo);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_PROPERTY_INFO,dwContextID,&GamePropertyInfo,wHeadSize);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//存入游戏币
|
|
bool CDataBaseEngineSink::OnRequestUserSaveScore(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_UserSaveScore));
|
|
if (wDataSize!=sizeof(DBR_GR_UserSaveScore)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_UserSaveScore * pUserSaveScore=(DBR_GR_UserSaveScore *)pData;
|
|
dwUserID=pUserSaveScore->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pUserSaveScore->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"),pUserSaveScore->dwUserID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@lSaveScore"),pUserSaveScore->lSaveScore);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strMachineID"),pUserSaveScore->szMachineID);
|
|
|
|
//输出参数
|
|
TCHAR szDescribeString[128]=TEXT("");
|
|
m_TreasureDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_UserSaveScore"),true);
|
|
|
|
//结果处理
|
|
CDBVarValue DBVarValue;
|
|
m_TreasureDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
OnInsureDisposeResult(dwContextID,lResultCode,pUserSaveScore->lSaveScore,CW2CT(DBVarValue.bstrVal),false,pUserSaveScore->cbActivityGame);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//错误处理
|
|
OnInsureDisposeResult(dwContextID,DB_ERROR,pUserSaveScore->lSaveScore,TEXT("由于数据库操作异常,请您稍后重试!"),false,pUserSaveScore->cbActivityGame);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//提取游戏币
|
|
bool CDataBaseEngineSink::OnRequestUserTakeScore(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_UserTakeScore));
|
|
if (wDataSize!=sizeof(DBR_GR_UserTakeScore)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_UserTakeScore * pUserTakeScore=(DBR_GR_UserTakeScore *)pData;
|
|
dwUserID=pUserTakeScore->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pUserTakeScore->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"),pUserTakeScore->dwUserID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@lTakeScore"),pUserTakeScore->lTakeScore);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strPassword"),pUserTakeScore->szPassword);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strMachineID"),pUserTakeScore->szMachineID);
|
|
|
|
//输出参数
|
|
TCHAR szDescribeString[128]=TEXT("");
|
|
m_TreasureDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_UserTakeScore"),true);
|
|
|
|
//结果处理
|
|
CDBVarValue DBVarValue;
|
|
m_TreasureDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
OnInsureDisposeResult(dwContextID,lResultCode,0L,CW2CT(DBVarValue.bstrVal),false,pUserTakeScore->cbActivityGame);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//错误处理
|
|
OnInsureDisposeResult(dwContextID,DB_ERROR,0L,TEXT("由于数据库操作异常,请您稍后重试!"),false,pUserTakeScore->cbActivityGame);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//转账游戏币
|
|
bool CDataBaseEngineSink::OnRequestUserTransferScore(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_UserTransferScore));
|
|
if (wDataSize!=sizeof(DBR_GR_UserTransferScore)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_UserTransferScore * pUserTransferScore=(DBR_GR_UserTransferScore *)pData;
|
|
dwUserID=pUserTransferScore->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pUserTransferScore->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"),pUserTransferScore->dwUserID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@cbByNickName"),pUserTransferScore->cbByNickName);
|
|
m_TreasureDBAide.AddParameter(TEXT("@lTransferScore"),pUserTransferScore->lTransferScore);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strPassword"),pUserTransferScore->szPassword);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strNickName"),pUserTransferScore->szNickName);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strMachineID"),pUserTransferScore->szMachineID);
|
|
|
|
//输出参数
|
|
TCHAR szDescribeString[128]=TEXT("");
|
|
m_TreasureDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
|
|
|
|
//执行查询
|
|
LONG lResultCode=m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_UserTransferScore"),true);
|
|
|
|
//结果处理
|
|
CDBVarValue DBVarValue;
|
|
m_TreasureDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
OnInsureDisposeResult(dwContextID,lResultCode,0L,CW2CT(DBVarValue.bstrVal),false,pUserTransferScore->cbActivityGame);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//错误处理
|
|
OnInsureDisposeResult(dwContextID,DB_ERROR,0L,TEXT("由于数据库操作异常,请您稍后重试!"),false,pUserTransferScore->cbActivityGame);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//查询银行
|
|
bool CDataBaseEngineSink::OnRequestQueryInsureInfo(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_QueryInsureInfo));
|
|
if (wDataSize!=sizeof(DBR_GR_QueryInsureInfo)) return false;
|
|
|
|
//请求处理
|
|
DBR_GR_QueryInsureInfo * pQueryInsureInfo=(DBR_GR_QueryInsureInfo *)pData;
|
|
dwUserID=pQueryInsureInfo->dwUserID;
|
|
|
|
try
|
|
{
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pQueryInsureInfo->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"),pQueryInsureInfo->dwUserID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
|
|
//输出参数
|
|
TCHAR szDescribeString[128]=TEXT("");
|
|
m_TreasureDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
|
|
|
|
//结果处理
|
|
if (m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_QueryUserInsureInfo"),true)==DB_SUCCESS)
|
|
{
|
|
//变量定义
|
|
DBO_GR_UserInsureInfo UserInsureInfo;
|
|
ZeroMemory(&UserInsureInfo,sizeof(UserInsureInfo));
|
|
|
|
//银行信息
|
|
UserInsureInfo.cbActivityGame=pQueryInsureInfo->cbActivityGame;
|
|
UserInsureInfo.wRevenueTake=m_TreasureDBAide.GetValue_WORD(TEXT("RevenueTake"));
|
|
UserInsureInfo.wRevenueTransfer=m_TreasureDBAide.GetValue_WORD(TEXT("RevenueTransfer"));
|
|
UserInsureInfo.wServerID=m_TreasureDBAide.GetValue_WORD(TEXT("ServerID"));
|
|
UserInsureInfo.lUserScore = (LONG)m_TreasureDBAide.GetValue_DOUBLE(TEXT("Score"));
|
|
UserInsureInfo.lUserInsure = (LONG)m_TreasureDBAide.GetValue_DOUBLE(TEXT("Insure"));
|
|
UserInsureInfo.lTransferPrerequisite=m_TreasureDBAide.GetValue_LONGLONG(TEXT("TransferPrerequisite"));
|
|
|
|
//发送结果
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_USER_INSURE_INFO,dwContextID,&UserInsureInfo,sizeof(UserInsureInfo));
|
|
}
|
|
else
|
|
{
|
|
//获取参数
|
|
CDBVarValue DBVarValue;
|
|
m_TreasureDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
|
|
//错误处理
|
|
OnInsureDisposeResult(dwContextID,m_TreasureDBAide.GetReturnValue(),0L,CW2CT(DBVarValue.bstrVal),false,pQueryInsureInfo->cbActivityGame);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//结果处理
|
|
OnInsureDisposeResult(dwContextID,DB_ERROR,0L,TEXT("由于数据库操作异常,请您稍后重试!"),false,pQueryInsureInfo->cbActivityGame);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//查询用户
|
|
bool CDataBaseEngineSink::OnRequestQueryTransferUserInfo(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_QueryTransferUserInfo));
|
|
if (wDataSize!=sizeof(DBR_GR_QueryTransferUserInfo)) return false;
|
|
|
|
//请求处理
|
|
DBR_GR_QueryTransferUserInfo * pQueryTransferUserInfo=(DBR_GR_QueryTransferUserInfo *)pData;
|
|
dwUserID=pQueryTransferUserInfo->dwUserID;
|
|
|
|
try
|
|
{
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@cbByNickName"),pQueryTransferUserInfo->cbByNickName);
|
|
m_TreasureDBAide.AddParameter(TEXT("@strNickName"),pQueryTransferUserInfo->szNickName);
|
|
|
|
//输出参数
|
|
TCHAR szDescribeString[128]=TEXT("");
|
|
m_TreasureDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
|
|
|
|
//结果处理
|
|
if (m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_QueryTransferUserInfo"),true)==DB_SUCCESS)
|
|
{
|
|
//变量定义
|
|
DBO_GR_UserTransferUserInfo TransferUserInfo;
|
|
ZeroMemory(&TransferUserInfo,sizeof(TransferUserInfo));
|
|
|
|
//银行信息
|
|
TransferUserInfo.cbActivityGame=pQueryTransferUserInfo->cbActivityGame;
|
|
TransferUserInfo.dwGameID=m_TreasureDBAide.GetValue_DWORD(TEXT("GameID"));
|
|
m_TreasureDBAide.GetValue_String(TEXT("NickName"), TransferUserInfo.szNickName, CountArray(TransferUserInfo.szNickName));
|
|
|
|
//发送结果
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_USER_INSURE_USER_INFO,dwContextID,&TransferUserInfo,sizeof(TransferUserInfo));
|
|
}
|
|
else
|
|
{
|
|
//获取参数
|
|
CDBVarValue DBVarValue;
|
|
m_TreasureDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
|
|
//错误处理
|
|
OnInsureDisposeResult(dwContextID,m_TreasureDBAide.GetReturnValue(),0L,CW2CT(DBVarValue.bstrVal),false,pQueryTransferUserInfo->cbActivityGame);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//结果处理
|
|
OnInsureDisposeResult(dwContextID,DB_ERROR,0L,TEXT("由于数据库操作异常,请您稍后重试!"),false,pQueryTransferUserInfo->cbActivityGame);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//道具请求
|
|
bool CDataBaseEngineSink::OnRequestPropertyRequest(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_PropertyRequest));
|
|
if (wDataSize!=sizeof(DBR_GR_PropertyRequest)) return false;
|
|
|
|
//请求处理
|
|
DBR_GR_PropertyRequest * pPropertyRequest=(DBR_GR_PropertyRequest *)pData;
|
|
dwUserID=pPropertyRequest->dwSourceUserID;
|
|
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pPropertyRequest->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
|
|
//消费信息
|
|
m_GameDBAide.AddParameter(TEXT("@dwSourceUserID"),pPropertyRequest->dwSourceUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@dwTargetUserID"),pPropertyRequest->dwTargetUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@wPropertyID"),pPropertyRequest->wPropertyIndex);
|
|
m_GameDBAide.AddParameter(TEXT("@wPropertyCount"),pPropertyRequest->wItemCount);
|
|
|
|
//消费区域
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
m_GameDBAide.AddParameter(TEXT("@wTableID"),pPropertyRequest->wTableID);
|
|
|
|
//购买方式
|
|
m_GameDBAide.AddParameter(TEXT("@cbConsumeScore"),pPropertyRequest->cbConsumeScore);
|
|
m_GameDBAide.AddParameter(TEXT("@lFrozenedScore"),pPropertyRequest->lFrozenedScore);
|
|
|
|
//系统信息
|
|
m_GameDBAide.AddParameter(TEXT("@dwEnterID"),pPropertyRequest->dwInoutIndex);
|
|
m_GameDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_GameDBAide.AddParameter(TEXT("@strMachineID"),pPropertyRequest->szMachineID);
|
|
|
|
//输出参数
|
|
TCHAR szDescribeString[128]=TEXT("");
|
|
m_GameDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
|
|
|
|
//结果处理
|
|
if (m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_ConsumeProperty"),true)==DB_SUCCESS)
|
|
{
|
|
//变量定义
|
|
DBO_GR_S_PropertySuccess PresentSuccess;
|
|
ZeroMemory(&PresentSuccess,sizeof(PresentSuccess));
|
|
|
|
//道具信息
|
|
PresentSuccess.cbRequestArea=pPropertyRequest->cbRequestArea;
|
|
PresentSuccess.wItemCount=pPropertyRequest->wItemCount;
|
|
PresentSuccess.wPropertyIndex=pPropertyRequest->wPropertyIndex;
|
|
PresentSuccess.dwSourceUserID=pPropertyRequest->dwSourceUserID;
|
|
PresentSuccess.dwTargetUserID=pPropertyRequest->dwTargetUserID;
|
|
|
|
//消费模式
|
|
PresentSuccess.cbConsumeScore=pPropertyRequest->cbConsumeScore;
|
|
PresentSuccess.lFrozenedScore=pPropertyRequest->lFrozenedScore;
|
|
|
|
//用户权限
|
|
PresentSuccess.dwUserRight=pPropertyRequest->dwUserRight;
|
|
|
|
//结果信息
|
|
PresentSuccess.lConsumeGold=m_GameDBAide.GetValue_LONGLONG(TEXT("ConsumeGold"));
|
|
PresentSuccess.lSendLoveLiness=m_GameDBAide.GetValue_LONG(TEXT("SendLoveLiness"));
|
|
PresentSuccess.lRecvLoveLiness=m_GameDBAide.GetValue_LONG(TEXT("RecvLoveLiness"));
|
|
PresentSuccess.cbMemberOrder=m_GameDBAide.GetValue_BYTE(TEXT("MemberOrder"));
|
|
|
|
//发送结果
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_PROPERTY_SUCCESS,dwContextID,&PresentSuccess,sizeof(PresentSuccess));
|
|
}
|
|
else
|
|
{
|
|
//获取参数
|
|
CDBVarValue DBVarValue;
|
|
m_GameDBAide.GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
|
|
//变量定义
|
|
DBO_GR_PropertyFailure PropertyFailure;
|
|
ZeroMemory(&PropertyFailure,sizeof(PropertyFailure));
|
|
|
|
//设置变量
|
|
PropertyFailure.lResultCode=m_GameDBAide.GetReturnValue();
|
|
PropertyFailure.lFrozenedScore=pPropertyRequest->lFrozenedScore;
|
|
PropertyFailure.cbRequestArea=pPropertyRequest->cbRequestArea;
|
|
lstrcpyn(PropertyFailure.szDescribeString,CW2CT(DBVarValue.bstrVal),CountArray(PropertyFailure.szDescribeString));
|
|
|
|
//发送结果
|
|
WORD wDataSize=CountStringBuffer(PropertyFailure.szDescribeString);
|
|
WORD wHeadSize=sizeof(PropertyFailure)-sizeof(PropertyFailure.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_PROPERTY_FAILURE,dwContextID,&PropertyFailure,wHeadSize+wDataSize);
|
|
}
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//变量定义
|
|
DBO_GR_PropertyFailure PropertyFailure;
|
|
ZeroMemory(&PropertyFailure,sizeof(PropertyFailure));
|
|
|
|
//变量定义
|
|
DBR_GR_PropertyRequest * pPropertyRequest=(DBR_GR_PropertyRequest *)pData;
|
|
|
|
//设置变量
|
|
PropertyFailure.lResultCode=DB_ERROR;
|
|
PropertyFailure.lFrozenedScore=pPropertyRequest->lFrozenedScore;
|
|
PropertyFailure.cbRequestArea=pPropertyRequest->cbRequestArea;
|
|
lstrcpyn(PropertyFailure.szDescribeString,TEXT("由于数据库操作异常,请您稍后重试!"),CountArray(PropertyFailure.szDescribeString));
|
|
|
|
//发送结果
|
|
WORD wDataSize=CountStringBuffer(PropertyFailure.szDescribeString);
|
|
WORD wHeadSize=sizeof(PropertyFailure)-sizeof(PropertyFailure.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_PROPERTY_FAILURE,dwContextID,&PropertyFailure,wHeadSize+wDataSize);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//用户权限;
|
|
bool CDataBaseEngineSink::OnRequestManageUserRight(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_ManageUserRight));
|
|
if (wDataSize!=sizeof(DBR_GR_ManageUserRight)) return false;
|
|
|
|
//请求处理
|
|
DBR_GR_ManageUserRight * pManageUserRight=(DBR_GR_ManageUserRight *)pData;
|
|
dwUserID=pManageUserRight->dwUserID;
|
|
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"),pManageUserRight->dwUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@dwAddRight"),pManageUserRight->dwAddRight);
|
|
m_GameDBAide.AddParameter(TEXT("@dwRemoveRight"),pManageUserRight->dwRemoveRight);
|
|
|
|
//执行查询
|
|
LONG lReturnValue=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_ManageUserRight"),false);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//错误处理
|
|
OnInsureDisposeResult(dwContextID,DB_ERROR,0L,TEXT("由于数据库操作异常,请您稍后重试!"),false);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//系统消息;
|
|
bool CDataBaseEngineSink::OnRequestLoadSystemMessage(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
|
|
//执行查询
|
|
LONG lReturnValue=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_LoadSystemMessage"),true);
|
|
|
|
//结果处理
|
|
if(lReturnValue==0)
|
|
{
|
|
TCHAR szServerID[32]={0};
|
|
_sntprintf_s(szServerID, CountArray(szServerID), TEXT("%d"), m_pGameServiceOption->wServerID);
|
|
|
|
while(true)
|
|
{
|
|
//结束判断
|
|
if (m_GameDBModule->IsRecordsetEnd()==true) break;
|
|
|
|
//定义变量
|
|
TCHAR szServerRange[1024]={0};
|
|
CString strServerRange;
|
|
bool bSendMessage=false;
|
|
bool bAllRoom=false;
|
|
|
|
//读取范围
|
|
m_GameDBAide.GetValue_String(TEXT("ServerRange"), szServerRange, CountArray(szServerRange));
|
|
szServerRange[1023]=0;
|
|
strServerRange.Format(TEXT("%s"), szServerRange);
|
|
|
|
//范围判断
|
|
while(true)
|
|
{
|
|
int nfind=strServerRange.Find(TEXT(','));
|
|
if(nfind!=-1 && nfind>0)
|
|
{
|
|
CString strID=strServerRange.Left(nfind);
|
|
WORD wServerID=StrToInt(strID);
|
|
bSendMessage=(wServerID==0 || wServerID==m_pGameServiceOption->wServerID);
|
|
if(wServerID==0)bAllRoom=true;
|
|
|
|
if(bSendMessage) break;
|
|
|
|
strServerRange=strServerRange.Right(strServerRange.GetLength()-nfind-1);
|
|
}
|
|
else
|
|
{
|
|
WORD wServerID=StrToInt(szServerRange);
|
|
bSendMessage=(wServerID==0 || wServerID==m_pGameServiceOption->wServerID);
|
|
if(wServerID==0)bAllRoom=true;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
//发送消息
|
|
if(bSendMessage)
|
|
{
|
|
//定义变量
|
|
DBR_GR_SystemMessage SystemMessage;
|
|
ZeroMemory(&SystemMessage, sizeof(SystemMessage));
|
|
|
|
//读取消息
|
|
SystemMessage.cbMessageID=m_GameDBAide.GetValue_BYTE(TEXT("ID"));
|
|
SystemMessage.cbMessageType=m_GameDBAide.GetValue_BYTE(TEXT("MessageType"));
|
|
SystemMessage.dwTimeRate=m_GameDBAide.GetValue_DWORD(TEXT("TimeRate"));
|
|
SystemMessage.cbAllRoom=bAllRoom?TRUE:FALSE;
|
|
m_GameDBAide.GetValue_String(TEXT("MessageString"),SystemMessage.szSystemMessage,CountArray(SystemMessage.szSystemMessage));
|
|
|
|
//发送结果
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_SYSTEM_MESSAGE_RESULT,dwContextID,&SystemMessage,sizeof(SystemMessage));
|
|
}
|
|
|
|
//下一条
|
|
m_GameDBModule->MoveToNext();
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//错误处理
|
|
OnInsureDisposeResult(dwContextID,DB_ERROR,0L,TEXT("由于数据库操作异常,请您稍后重试!"),false);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//加载敏感词;
|
|
bool CDataBaseEngineSink::OnRequestLoadSensitiveWords(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
|
|
//执行查询
|
|
LONG lReturnValue=m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_LoadSensitiveWords"),true);
|
|
|
|
//读取信息
|
|
if (lReturnValue==DB_SUCCESS)
|
|
{
|
|
//起始消息
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_SENSITIVE_WORDS,0xfffe,NULL,0);
|
|
|
|
//读取消息
|
|
while (m_PlatformDBModule->IsRecordsetEnd()==false)
|
|
{
|
|
//变量定义
|
|
TCHAR szSensitiveWords[32]=TEXT("");
|
|
|
|
//读取消息
|
|
m_PlatformDBAide.GetValue_String(TEXT("SensitiveWords"),szSensitiveWords,CountArray(szSensitiveWords));
|
|
|
|
//发送消息
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_SENSITIVE_WORDS,0,szSensitiveWords,sizeof(szSensitiveWords));
|
|
|
|
//移动记录
|
|
m_PlatformDBModule->MoveToNext();
|
|
};
|
|
|
|
//结束消息
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_SENSITIVE_WORDS,0xffff,NULL,0);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//解锁机器人;
|
|
bool CDataBaseEngineSink::OnRequestUnlockAndroidUser(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_UnlockAndroidUser));
|
|
if (wDataSize != sizeof(DBR_GR_UnlockAndroidUser)) return false;
|
|
|
|
//请求处理
|
|
DBR_GR_UnlockAndroidUser * pUnlockAndroidUser = (DBR_GR_UnlockAndroidUser *)pData;
|
|
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"), pUnlockAndroidUser->wServerID);
|
|
m_GameDBAide.AddParameter(TEXT("@wBatchID"), pUnlockAndroidUser->wBatchID);
|
|
|
|
//执行查询
|
|
LONG lResultCode = m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_UnlockAndroidUser"), false);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//加载牌库;
|
|
bool CDataBaseEngineSink::OnRequestLoadCardLibrary(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"), m_pGameServiceOption->wKindID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), m_pGameServiceOption->wServerID);
|
|
|
|
//执行查询
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_LoadCardLibrary"), true);
|
|
|
|
//读取信息
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
//起始消息
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_CARD_LIBRARY, 0xfffe, NULL, 0);
|
|
|
|
//读取消息
|
|
while (m_PlatformDBModule->IsRecordsetEnd() == false)
|
|
{
|
|
//变量定义
|
|
DBO_GR_GameCardLibrary mCard;
|
|
ZeroMemory(&mCard, sizeof(DBO_GR_GameCardLibrary));
|
|
|
|
//读取消息
|
|
mCard.dwLibID = m_PlatformDBAide.GetValue_DWORD(TEXT("ID"));
|
|
mCard.dwCustomID = m_PlatformDBAide.GetValue_DWORD(TEXT("CustomID"));
|
|
m_PlatformDBAide.GetValue_String(TEXT("Data"), mCard.szCardData, CountArray(mCard.szCardData));
|
|
mCard.cbCardCount = (BYTE)m_PlatformDBAide.GetValue_WORD(TEXT("CardCount"));
|
|
|
|
//发送消息
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_CARD_LIBRARY, 0, &mCard, sizeof(DBO_GR_GameCardLibrary));
|
|
|
|
//移动记录
|
|
m_PlatformDBModule->MoveToNext();
|
|
};
|
|
|
|
//结束消息
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_CARD_LIBRARY, 0xffff, NULL, 0);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//比赛报名;
|
|
bool CDataBaseEngineSink::OnRequestMatchSignup(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_MatchSignup));
|
|
if (wDataSize!=sizeof(DBR_GR_MatchSignup)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_MatchSignup * pMatchSignup=(DBR_GR_MatchSignup *)pData;
|
|
dwUserID=pMatchSignup->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pMatchSignup->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pMatchSignup->dwUserID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lMatchFee"), pMatchSignup->lMatchFee);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"), m_pGameServiceOption->wKindID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), m_pGameServiceOption->wServerID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchID"), pMatchSignup->dwMatchID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchNo"), pMatchSignup->dwMatchNO);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbMatchType"), pMatchSignup->cbMatchType);
|
|
m_PlatformDBAide.AddParameter(TEXT("@strClientIP"), szClientAddr);
|
|
m_PlatformDBAide.AddParameter(TEXT("@strMachineID"), pMatchSignup->szMachineID);
|
|
|
|
//输出参数
|
|
TCHAR szDescribeString[128]=TEXT("");
|
|
m_PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"), szDescribeString, sizeof(szDescribeString), adParamOutput);
|
|
|
|
//结果处理
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_UserMatchFee"), true);
|
|
|
|
//构造结构
|
|
DBO_GR_MatchSingupResult MatchSignupResult;
|
|
ZeroMemory(&MatchSignupResult,sizeof(MatchSignupResult));
|
|
|
|
//设置变量
|
|
MatchSignupResult.bResultCode=lReturnValue==DB_SUCCESS;
|
|
|
|
//读取财富
|
|
if(MatchSignupResult.bResultCode==true)
|
|
{
|
|
MatchSignupResult.lCurrGold = m_PlatformDBAide.GetValue_LONGLONG(TEXT("Score"));
|
|
MatchSignupResult.lCurrIngot = m_PlatformDBAide.GetValue_LONGLONG(TEXT("Ingot"));
|
|
}
|
|
else
|
|
{
|
|
//错误描述
|
|
CDBVarValue DBVarValue;
|
|
m_PlatformDBModule->GetParameter(TEXT("@strErrorDescribe"), DBVarValue);
|
|
lstrcpyn(MatchSignupResult.szDescribeString,CW2CT(DBVarValue.bstrVal),CountArray(MatchSignupResult.szDescribeString));
|
|
}
|
|
|
|
//发送结果
|
|
WORD wSendDataSize=sizeof(MatchSignupResult)-sizeof(MatchSignupResult.szDescribeString);
|
|
wSendDataSize+=CountStringBuffer(MatchSignupResult.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_SIGNUP_RESULT,dwContextID,&MatchSignupResult,wSendDataSize);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//构造结构
|
|
DBO_GR_MatchSingupResult MatchSignupResult;
|
|
ZeroMemory(&MatchSignupResult,sizeof(MatchSignupResult));
|
|
|
|
//设置变量
|
|
MatchSignupResult.bResultCode=false;
|
|
lstrcpyn(MatchSignupResult.szDescribeString,TEXT("由于数据库操作异常,请您稍后重试!"),CountArray(MatchSignupResult.szDescribeString));
|
|
|
|
//发送结果
|
|
WORD wSendDataSize=sizeof(MatchSignupResult)-sizeof(MatchSignupResult.szDescribeString);
|
|
wSendDataSize+=CountStringBuffer(MatchSignupResult.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_SIGNUP_RESULT,dwContextID,&MatchSignupResult,wSendDataSize);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//退出比赛;
|
|
bool CDataBaseEngineSink::OnRequestMatchUnSignup(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_MatchSignup));
|
|
if (wDataSize!=sizeof(DBR_GR_MatchSignup)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_MatchSignup * pMatchSignup=(DBR_GR_MatchSignup *)pData;
|
|
dwUserID=pMatchSignup->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pMatchSignup->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"),pMatchSignup->dwUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@lMatchFee"),pMatchSignup->lMatchFee);
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"),m_pGameServiceOption->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),m_pGameServiceOption->wServerID);
|
|
m_GameDBAide.AddParameter(TEXT("@strClientIP"),szClientAddr);
|
|
m_GameDBAide.AddParameter(TEXT("@dwMatchID"),pMatchSignup->dwMatchID);
|
|
m_GameDBAide.AddParameter(TEXT("@dwMatchNo"),pMatchSignup->dwMatchNO);
|
|
m_GameDBAide.AddParameter(TEXT("@strMachineID"),pMatchSignup->szMachineID);
|
|
|
|
//输出参数
|
|
TCHAR szDescribeString[128]=TEXT("");
|
|
m_GameDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
|
|
|
|
//结果处理
|
|
LONG lReturnValue=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_UserMatchQuit"),true);
|
|
|
|
//构造结构
|
|
DBO_GR_MatchSingupResult MatchSignupResult;
|
|
ZeroMemory(&MatchSignupResult,sizeof(MatchSignupResult));
|
|
|
|
//设置变量
|
|
MatchSignupResult.bResultCode=lReturnValue==DB_SUCCESS;
|
|
|
|
//读取财富
|
|
if(MatchSignupResult.bResultCode==true)
|
|
{
|
|
MatchSignupResult.lCurrGold=m_GameDBAide.GetValue_LONGLONG(TEXT("Score"));
|
|
MatchSignupResult.lCurrIngot=m_GameDBAide.GetValue_LONGLONG(TEXT("Ingot"));
|
|
}
|
|
else
|
|
{
|
|
//错误描述
|
|
CDBVarValue DBVarValue;
|
|
m_GameDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
lstrcpyn(MatchSignupResult.szDescribeString,CW2CT(DBVarValue.bstrVal),CountArray(MatchSignupResult.szDescribeString));
|
|
}
|
|
|
|
//发送结果
|
|
WORD wSendDataSize=sizeof(MatchSignupResult)-sizeof(MatchSignupResult.szDescribeString);
|
|
wSendDataSize+=CountStringBuffer(MatchSignupResult.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_UNSIGNUP_RESULT,dwContextID,&MatchSignupResult,wSendDataSize);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//构造结构
|
|
DBO_GR_MatchSingupResult MatchSignupResult;
|
|
ZeroMemory(&MatchSignupResult,sizeof(MatchSignupResult));
|
|
|
|
//设置变量
|
|
MatchSignupResult.bResultCode=false;
|
|
lstrcpyn(MatchSignupResult.szDescribeString,TEXT("由于数据库操作异常,请您稍后重试!"),CountArray(MatchSignupResult.szDescribeString));
|
|
|
|
//发送结果
|
|
WORD wSendDataSize=sizeof(MatchSignupResult)-sizeof(MatchSignupResult.szDescribeString);
|
|
wSendDataSize+=CountStringBuffer(MatchSignupResult.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_SIGNUP_RESULT,dwContextID,&MatchSignupResult,wSendDataSize);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//比赛开始;
|
|
bool CDataBaseEngineSink::OnRequestMatchStart(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_MatchStart));
|
|
if (wDataSize!=sizeof(DBR_GR_MatchStart)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_MatchStart * pMatchStart=(DBR_GR_MatchStart *)pData;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), pMatchStart->dwMatchID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wMatchID"), pMatchStart->dwMatchID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wMatchNo"), pMatchStart->dwMatchNO);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbMatchType"), pMatchStart->cbMatchType);
|
|
|
|
//结果处理
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_MatchStart"), true);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//错误处理
|
|
OnInsureDisposeResult(dwContextID,DB_ERROR,0L,TEXT("由于数据库操作异常,请您稍后重试!"),false);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//比赛结束;
|
|
bool CDataBaseEngineSink::OnRequestMatchOver(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_MatchOver));
|
|
if (wDataSize!=sizeof(DBR_GR_MatchOver)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_MatchOver * pMatchOver=(DBR_GR_MatchOver *)pData;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), pMatchOver->wServerID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchID"), pMatchOver->dwMatchID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchNo"), pMatchOver->dwMatchNO);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbMatchType"), pMatchOver->cbMatchType);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbPlayCount"), pMatchOver->wPlayCount);
|
|
m_PlatformDBAide.AddParameter(TEXT("@bMatchFinish"), pMatchOver->bMatchFinish);
|
|
m_PlatformDBAide.AddParameter(TEXT("@MatchStartTime"), pMatchOver->MatchStartTime);
|
|
m_PlatformDBAide.AddParameter(TEXT("@MatchEndTime"), pMatchOver->MatchEndTime);
|
|
|
|
//结果处理
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_MatchOver"), true);
|
|
|
|
//执行成功
|
|
if(lReturnValue==DB_SUCCESS)
|
|
{
|
|
//构造结构
|
|
DBO_GR_MatchRankList MatchRankList;
|
|
ZeroMemory(&MatchRankList,sizeof(MatchRankList));
|
|
|
|
//变量定义
|
|
tagMatchRankInfo * pMatchRankInfo=NULL;
|
|
|
|
//设置变量
|
|
MatchRankList.dwMatchID=pMatchOver->dwMatchID;
|
|
MatchRankList.dwMatchNO=pMatchOver->dwMatchNO;
|
|
|
|
//读取记录
|
|
while (m_PlatformDBModule->IsRecordsetEnd() == false)
|
|
{
|
|
pMatchRankInfo = &MatchRankList.MatchRankInfo[MatchRankList.wUserCount++];
|
|
pMatchRankInfo->wRankID = m_PlatformDBAide.GetValue_WORD(TEXT("RankID"));
|
|
pMatchRankInfo->dwUserID = m_PlatformDBAide.GetValue_DWORD(TEXT("UserID"));
|
|
pMatchRankInfo->lMatchScore = m_PlatformDBAide.GetValue_LONGLONG(TEXT("Score"));
|
|
pMatchRankInfo->lRewardGold = m_PlatformDBAide.GetValue_LONGLONG(TEXT("RewardGold"));
|
|
pMatchRankInfo->dwRewardIngot = m_PlatformDBAide.GetValue_DWORD(TEXT("RewardMedal"));
|
|
pMatchRankInfo->dwRewardExperience = m_PlatformDBAide.GetValue_DWORD(TEXT("RewardExperience"));
|
|
pMatchRankInfo->lInsureSocre = m_PlatformDBAide.GetValue_DWORD(TEXT("RewardInsureScore"));
|
|
pMatchRankInfo->dwGoodsID = m_PlatformDBAide.GetValue_DWORD(TEXT("GoodsID"));
|
|
pMatchRankInfo->dwGoodsNum = m_PlatformDBAide.GetValue_DWORD(TEXT("GoodsNum"));
|
|
|
|
//移动游标
|
|
m_PlatformDBModule->MoveToNext();
|
|
}
|
|
|
|
//发送数据
|
|
WORD wSendDataSize = sizeof(MatchRankList)-sizeof(MatchRankList.MatchRankInfo);
|
|
wSendDataSize += MatchRankList.wUserCount*sizeof(MatchRankList.MatchRankInfo[0]);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_RANK_LIST,dwContextID,&MatchRankList,wSendDataSize);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//比赛奖励;
|
|
bool CDataBaseEngineSink::OnRequestMatchReward(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_MatchReward));
|
|
if (wDataSize!=sizeof(DBR_GR_MatchReward)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_MatchReward * pMatchReward=(DBR_GR_MatchReward *)pData;
|
|
dwUserID=pMatchReward->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//转化地址
|
|
TCHAR szClientAddr[16]=TEXT("");
|
|
BYTE * pClientAddr=(BYTE *)&pMatchReward->dwClientAddr;
|
|
_sntprintf_s(szClientAddr,CountArray(szClientAddr),TEXT("%d.%d.%d.%d"),pClientAddr[0],pClientAddr[1],pClientAddr[2],pClientAddr[3]);
|
|
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pMatchReward->dwUserID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwRewardGold"), pMatchReward->lRewardGold);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwRewardIngot"), pMatchReward->dwRewardIngot);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwRewardExperience"), pMatchReward->dwRewardExperience);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwInsureSocre"), pMatchReward->lInsureSocre);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwGoodsID"), pMatchReward->dwGoodsID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwGoodsNum"), pMatchReward->dwGoodsNum);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"), m_pGameServiceOption->wKindID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), m_pGameServiceOption->wServerID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@strClientIP"), szClientAddr);
|
|
|
|
//结果处理
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_MatchReward"), true);
|
|
|
|
//构造结构
|
|
DBR_GR_MatchRewardResult MatchRewardResult;
|
|
ZeroMemory(&MatchRewardResult,sizeof(MatchRewardResult));
|
|
|
|
//设置变量
|
|
MatchRewardResult.bResultCode=lReturnValue==DB_SUCCESS;
|
|
|
|
//读取财富
|
|
if(MatchRewardResult.bResultCode==true)
|
|
{
|
|
MatchRewardResult.lCurrGold = m_PlatformDBAide.GetValue_LONGLONG(TEXT("Score"));
|
|
MatchRewardResult.lCurrIngot = m_PlatformDBAide.GetValue_LONGLONG(TEXT("Ingot"));
|
|
MatchRewardResult.dwCurrExperience = m_PlatformDBAide.GetValue_DWORD(TEXT("Experience"));
|
|
MatchRewardResult.lInsureSocre = m_PlatformDBAide.GetValue_LONGLONG(TEXT("InsureScore"));
|
|
}
|
|
|
|
//发送结果
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_REWARD_RESULT,dwContextID,&MatchRewardResult,sizeof(MatchRewardResult));
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
//构造结构
|
|
DBR_GR_MatchRewardResult MatchRewardResult;
|
|
ZeroMemory(&MatchRewardResult,sizeof(MatchRewardResult));
|
|
|
|
//设置变量
|
|
MatchRewardResult.bResultCode=false;
|
|
|
|
//发送结果
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_REWARD_RESULT,dwContextID,&MatchRewardResult,sizeof(MatchRewardResult));
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//请求私人场信息;
|
|
bool CDataBaseEngineSink::OnRequestPrivateInfo(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_Private_Info));
|
|
if (wDataSize!=sizeof(DBR_GR_Private_Info)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_Private_Info * pPrivateInfo=(DBR_GR_Private_Info *)pData;
|
|
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"),pPrivateInfo->wKindID);
|
|
|
|
//执行查询
|
|
LONG lReturnValue=m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_LoadPrivateInfo"),true);
|
|
|
|
if (!lReturnValue)
|
|
{
|
|
DBO_GR_Private_Info kPrivateInfo;
|
|
ZeroMemory(&kPrivateInfo,sizeof(kPrivateInfo));
|
|
|
|
kPrivateInfo.wKindID = m_PlatformDBAide.GetValue_WORD(TEXT("KindID"));
|
|
kPrivateInfo.lCostGold = m_PlatformDBAide.GetValue_LONG(TEXT("CostGold"));
|
|
kPrivateInfo.bPlayCout[0] = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCout1"));
|
|
kPrivateInfo.bPlayCout[1] = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCout2"));
|
|
kPrivateInfo.bPlayCout[2] = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCout3"));
|
|
kPrivateInfo.bPlayCout[3] = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCout4"));
|
|
|
|
kPrivateInfo.lPlayCost[0] = m_PlatformDBAide.GetValue_LONG(TEXT("PlayCost1"));
|
|
kPrivateInfo.lPlayCost[1] = m_PlatformDBAide.GetValue_LONG(TEXT("PlayCost2"));
|
|
kPrivateInfo.lPlayCost[2] = m_PlatformDBAide.GetValue_LONG(TEXT("PlayCost3"));
|
|
kPrivateInfo.lPlayCost[3] = m_PlatformDBAide.GetValue_LONG(TEXT("PlayCost4"));
|
|
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_PRIVATE_INFO,dwContextID,&kPrivateInfo,sizeof(kPrivateInfo));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
//创建私人场;
|
|
bool CDataBaseEngineSink::OnRequestCreatePrivate(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_Create_Private));
|
|
if (wDataSize!=sizeof(DBR_GR_Create_Private)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_Create_Private * pPrivateInfo=(DBR_GR_Create_Private *)pData;
|
|
dwUserID = pPrivateInfo->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
DBO_GR_CreatePrivateResoult kCreatePrivate;
|
|
ZeroMemory(&kCreatePrivate,sizeof(kCreatePrivate));
|
|
|
|
kCreatePrivate.dwUnionCode = pPrivateInfo->dwUnionCode;
|
|
kCreatePrivate.cbUnionGoldOpen = pPrivateInfo->cbUnionGoldOpen;
|
|
kCreatePrivate.dwAgaginTable = pPrivateInfo->dwAgaginTable;
|
|
kCreatePrivate.bGameRuleIdex = pPrivateInfo->bGameRuleIdex;
|
|
kCreatePrivate.bGameTypeIdex = pPrivateInfo->bGameTypeIdex;
|
|
kCreatePrivate.bPlayCoutIdex = pPrivateInfo->bPlayCoutIdex;
|
|
kCreatePrivate.cbRoomType = pPrivateInfo->cbRoomType;
|
|
|
|
kCreatePrivate.cbEnterRoomScoreType = pPrivateInfo->cbEnterRoomScoreType;
|
|
kCreatePrivate.lInitEnterRoomScore = pPrivateInfo->lInitEnterRoomScore;
|
|
kCreatePrivate.cbBaseScore = pPrivateInfo->cbBaseScore;
|
|
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"),pPrivateInfo->dwUserID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUnionCode"), pPrivateInfo->dwUnionCode);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbUnionGoldOpen"), pPrivateInfo->cbUnionGoldOpen);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"),pPrivateInfo->wKindID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wCostScore"),pPrivateInfo->dwCost);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wCostType"),pPrivateInfo->dwCostType);
|
|
|
|
m_PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),kCreatePrivate.szDescribeString,sizeof(kCreatePrivate.szDescribeString),adParamOutput);
|
|
|
|
LONG lReturnValue=m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_CreatePrivate"),true);
|
|
|
|
kCreatePrivate.bSucess = (lReturnValue == DB_SUCCESS);
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
kCreatePrivate.lCurSocre=m_PlatformDBAide.GetValue_LONGLONG(TEXT("CurSocre"));
|
|
|
|
// 欢乐场
|
|
if (pPrivateInfo->cbUnionGoldOpen == 1)
|
|
{
|
|
/*kCreatePrivate.lScoreMultiple = m_PlatformDBAide.GetValue_LONGLONG(TEXT("ScoreMultiple"));
|
|
if (kCreatePrivate.lScoreMultiple == 0)*/
|
|
{
|
|
kCreatePrivate.lScoreMultiple = 1;
|
|
}
|
|
|
|
kCreatePrivate.lGameGold = m_PlatformDBAide.GetValue_LONGLONG(TEXT("GameGold"));
|
|
kCreatePrivate.lUnionScore = m_PlatformDBAide.GetValue_LONGLONG(TEXT("UnionMemberGold"));
|
|
}
|
|
}
|
|
|
|
CDBVarValue DBVarValue;
|
|
m_PlatformDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
|
|
|
|
lstrcpyn(kCreatePrivate.szDescribeString,CW2CT(DBVarValue.bstrVal),CountArray(kCreatePrivate.szDescribeString));
|
|
|
|
if (kCreatePrivate.bSucess && (pPrivateInfo->dwAgaginTable == INVALID_DWORD))
|
|
{
|
|
//创建成功并且是新创建房间时,向数据库中插入空的录像记录主表记录;
|
|
BYTE szTotalData[1] = { 0 };
|
|
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@recordID"), 0);
|
|
m_GameDBAide.AddParameter(TEXT("@roomNum"), 0);
|
|
m_GameDBAide.AddParameter(TEXT("@kindID"), m_pGameServiceAttrib->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@dataUserDefine"), (BYTE*)&szTotalData[0], (ULONG)1);
|
|
|
|
//执行查询;
|
|
LONG lResultCode = m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_PrivateGameRecord"), true);
|
|
|
|
//写入记录;
|
|
if (lResultCode != DB_SUCCESS)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
//获取标识;
|
|
kCreatePrivate.dwRecordID = m_GameDBAide.GetValue_DWORD(TEXT("RecordID"));
|
|
}
|
|
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_CREATE_PRIVATE,dwContextID,&kCreatePrivate,sizeof(kCreatePrivate));
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//私人房花费返还;
|
|
bool CDataBaseEngineSink::OnRequestCreatePrivateCost(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_Create_Private_Cost));
|
|
if (wDataSize!=sizeof(DBR_GR_Create_Private_Cost)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_Create_Private_Cost * pPrivateInfo=(DBR_GR_Create_Private_Cost *)pData;
|
|
|
|
dwUserID = 0;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pPrivateInfo->dwUserID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"), pPrivateInfo->wKindID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwRoomID"), pPrivateInfo->dwRoomID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wCostScore"), pPrivateInfo->dwCost);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wCostType"), pPrivateInfo->dwCostType);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwGameRule"), pPrivateInfo->dwGameRuleIdex);
|
|
|
|
LONG lReturnValue=m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_BackCreatePrivateCostEx"),true);
|
|
|
|
CString strDebugInfo;
|
|
strDebugInfo.Format(_T("dwUserID[%d], wCostScore[%d], lReturnValue[%ld]"), pPrivateInfo->dwUserID, pPrivateInfo->dwCost, lReturnValue);
|
|
::OutputDebugString(strDebugInfo.GetBuffer());
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
CTraceService::TraceString("GSP_GR_BackCreatePrivateCostEx", TraceLevel_Exception);
|
|
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//比赛淘汰;
|
|
bool CDataBaseEngineSink::OnRequestMatchEliminate(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize==sizeof(DBR_GR_MatchEliminate));
|
|
if (wDataSize!=sizeof(DBR_GR_MatchEliminate)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_MatchEliminate * pMatchEliminate=(DBR_GR_MatchEliminate *)pData;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"),pMatchEliminate->dwUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"),pMatchEliminate->wServerID);
|
|
m_GameDBAide.AddParameter(TEXT("@wMatchID"),pMatchEliminate->dwMatchID);
|
|
m_GameDBAide.AddParameter(TEXT("@wMatchNo"),pMatchEliminate->dwMatchNO);
|
|
m_GameDBAide.AddParameter(TEXT("@cbMatchType"),pMatchEliminate->cbMatchType);
|
|
|
|
//结果处理
|
|
LONG lReturnValue=m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_MatchEliminate"),false);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//工会开房;
|
|
bool CDataBaseEngineSink::OnRequestCreateUnionRoom(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_Create_UnionRoom));
|
|
if (wDataSize != sizeof(DBR_GR_Create_UnionRoom)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_Create_UnionRoom * pUnionRoomInfo = (DBR_GR_Create_UnionRoom *)pData;
|
|
dwUserID = 0;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
|
|
m_TreasureDBAide.AddParameter(TEXT("@wServerID"), pUnionRoomInfo->wServerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnionCode"), pUnionRoomInfo->dwUnionCode);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pUnionRoomInfo->dwCreaterUserID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wKindID"), pUnionRoomInfo->wKindID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwRoomID"), pUnionRoomInfo->dwRoomID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@bPlayCoutIdex"), pUnionRoomInfo->bPlayCoutIdex);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wCostScore"), pUnionRoomInfo->dwCost);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wCostType"), pUnionRoomInfo->dwCostType);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwGameRule"), pUnionRoomInfo->dwGameRuleIdex);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwRecordID"), pUnionRoomInfo->dwRecordID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@cbBaseScore"), pUnionRoomInfo->cbBaseScore);
|
|
|
|
LONG lReturnValue = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_CreateUnionRoom_Score"), true);
|
|
|
|
//写入记录;
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
DBO_GR_CreateUnionRoomResult UnionRoomResult;
|
|
ZeroMemory(&UnionRoomResult, sizeof(UnionRoomResult));
|
|
|
|
UnionRoomResult.dwRoomID = pUnionRoomInfo->dwRoomID;
|
|
UnionRoomResult.dwCreaterUserID = pUnionRoomInfo->dwCreaterUserID;
|
|
|
|
//获取标识;
|
|
UnionRoomResult.dwUnionConsumerID = m_TreasureDBAide.GetValue_DWORD(TEXT("UnionConsumerID"));
|
|
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_CREATE_UNION_ROOM, 0L, &UnionRoomResult, sizeof(UnionRoomResult));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
CTraceService::TraceString("GSP_GR_CreateUnionRoom", TraceLevel_Exception);
|
|
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//记录工会开房玩家;
|
|
bool CDataBaseEngineSink::OnRequestUnionRoomUser(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_UnionRoomUser));
|
|
if (wDataSize != sizeof(DBR_GR_UnionRoomUser)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_UnionRoomUser * pUnionRoomInfo = (DBR_GR_UnionRoomUser *)pData;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnionConsumerID"), pUnionRoomInfo->dwUnionConsumerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnionCode"), pUnionRoomInfo->CreateUnionRoom.dwUnionCode);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pUnionRoomInfo->CreateUnionRoom.dwCreaterUserID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wKindID"), pUnionRoomInfo->CreateUnionRoom.wKindID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwRoomID"), pUnionRoomInfo->CreateUnionRoom.dwRoomID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wCostScore"), pUnionRoomInfo->CreateUnionRoom.dwCost);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wCostType"), pUnionRoomInfo->CreateUnionRoom.dwCostType);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwGameRule"), pUnionRoomInfo->CreateUnionRoom.dwGameRuleIdex);
|
|
m_TreasureDBAide.AddParameter(TEXT("@cbUserCount"), pUnionRoomInfo->cbUserCount);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID0"), pUnionRoomInfo->dwUserID[0]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID1"), pUnionRoomInfo->dwUserID[1]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID2"), pUnionRoomInfo->dwUserID[2]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID3"), pUnionRoomInfo->dwUserID[3]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID4"), pUnionRoomInfo->dwUserID[4]);
|
|
|
|
LONG lReturnValue = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_UnionRoomInfo"), true);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
CTraceService::TraceString("GSP_GR_UnionRoomInfo", TraceLevel_Exception);
|
|
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//工会房解散;
|
|
bool CDataBaseEngineSink::onRequestDismissUnionRoom(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_DismissUnionRoom));
|
|
if (wDataSize != sizeof(DBR_GR_DismissUnionRoom)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_DismissUnionRoom * pDismissUnionRoom = (DBR_GR_DismissUnionRoom *)pData;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnionCode"), pDismissUnionRoom->dwUnionCode);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnionConsumerID"), pDismissUnionRoom->dwUnionConsumerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwCost"), pDismissUnionRoom->dwCost);
|
|
|
|
LONG lReturnValue = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_DismissUnionRoom"), true);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
CTraceService::TraceString("GSP_GR_DismissUnionRoom", TraceLevel_Exception);
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//加入工会房;
|
|
bool CDataBaseEngineSink::onRequestJoinUnionRoom(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_JoinUnionRoom));
|
|
if (wDataSize != sizeof(DBR_GR_JoinUnionRoom)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_JoinUnionRoom * pJoinUnionRoom = (DBR_GR_JoinUnionRoom *)pData;
|
|
dwUserID = pJoinUnionRoom->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
DBO_GR_JoinUnionRoomResult JoinUnionRoomResult;
|
|
ZeroMemory(&JoinUnionRoomResult, sizeof(JoinUnionRoomResult));
|
|
JoinUnionRoomResult.dwRoomID = pJoinUnionRoom->dwRoomID;
|
|
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pJoinUnionRoom->dwUserID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnionCode"), pJoinUnionRoom->dwUnionCode);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wKindID"), pJoinUnionRoom->wKindID);
|
|
|
|
m_TreasureDBAide.AddParameterOutput(TEXT("@strErrorDescribe"), JoinUnionRoomResult.szDescribeString, sizeof(JoinUnionRoomResult.szDescribeString), adParamOutput);
|
|
|
|
LONG lReturnValue = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_JoinUnionRoom"), true);
|
|
|
|
JoinUnionRoomResult.bSucess = (lReturnValue == DB_SUCCESS);
|
|
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
// 欢乐场
|
|
if (pJoinUnionRoom->cbUnionGoldOpen == 1)
|
|
{
|
|
JoinUnionRoomResult.lUnionScore = m_TreasureDBAide.GetValue_LONGLONG(TEXT("UnionMemberGold"));
|
|
}
|
|
}
|
|
|
|
CDBVarValue DBVarValue;
|
|
m_TreasureDBAide.GetParameter(TEXT("@strErrorDescribe"), DBVarValue);
|
|
lstrcpyn(JoinUnionRoomResult.szDescribeString, CW2CT(DBVarValue.bstrVal), CountArray(JoinUnionRoomResult.szDescribeString));
|
|
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_JOIN_UNION_ROOM, dwContextID, &JoinUnionRoomResult, sizeof(JoinUnionRoomResult));
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//记录工会开房结束;
|
|
bool CDataBaseEngineSink::OnRequestUnionRoomEnd(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_UnionRoomEnd));
|
|
if (wDataSize != sizeof(DBR_GR_UnionRoomEnd)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_UnionRoomEnd * pUnionRoomEnd = (DBR_GR_UnionRoomEnd *)pData;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnionConsumerID"), pUnionRoomEnd->dwUnionConsumerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@lRevenue"), pUnionRoomEnd->lRevenue);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID0"), pUnionRoomEnd->dwUserID[0]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID1"), pUnionRoomEnd->dwUserID[1]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID2"), pUnionRoomEnd->dwUserID[2]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID3"), pUnionRoomEnd->dwUserID[3]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID4"), pUnionRoomEnd->dwUserID[4]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserScore0"), pUnionRoomEnd->lUserScore[0]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserScore1"), pUnionRoomEnd->lUserScore[1]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserScore2"), pUnionRoomEnd->lUserScore[2]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserScore3"), pUnionRoomEnd->lUserScore[3]);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserScore4"), pUnionRoomEnd->lUserScore[4]);
|
|
|
|
LONG lReturnValue = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_UnionRoomEnd"), true);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
CTraceService::TraceString("GSP_GR_UnionRoomInfo", TraceLevel_Exception);
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//写玩家工会积分;
|
|
bool CDataBaseEngineSink::OnRequestWriteUnionScore(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_UnionScore));
|
|
if (wDataSize != sizeof(DBR_GR_UnionScore)) return false;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//变量定义
|
|
DBR_GR_UnionScore * pUnionRoomEnd = (DBR_GR_UnionScore *)pData;
|
|
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pUnionRoomEnd->dwUserID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnoinCode"), pUnionRoomEnd->dwUnoinCode);
|
|
m_TreasureDBAide.AddParameter(TEXT("@lUserScore"), pUnionRoomEnd->lUserScore);
|
|
|
|
LONG lReturnValue = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_WriteUnionScore"), true);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
CTraceService::TraceString("GSP_GR_UnionRoomInfo", TraceLevel_Exception);
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//获取工会房间信息;
|
|
bool CDataBaseEngineSink::OnRequestUnionRoomInfo(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_UnionRoomInfo));
|
|
if (wDataSize != sizeof(DBR_GR_UnionRoomInfo)) return false;
|
|
|
|
dwUserID = 0;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//变量定义
|
|
DBR_GR_UnionRoomInfo * pUnionRoomInfo = (DBR_GR_UnionRoomInfo *)pData;
|
|
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), pUnionRoomInfo->wServerID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"), pUnionRoomInfo->wKindID);
|
|
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_GetUnionRoomInfo"), true);
|
|
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
CMD_GR_UnionRoomList UnionRoomList;
|
|
UnionRoomList.wServerID = pUnionRoomInfo->wServerID;
|
|
|
|
//读取消息
|
|
while (m_PlatformDBModule->IsRecordsetEnd() == false)
|
|
{
|
|
//变量定义
|
|
CMD_GR_AutoCreatePrivate info;
|
|
ZeroMemory(&info, sizeof(CMD_GR_AutoCreatePrivate));
|
|
|
|
info.dwIndex = m_PlatformDBAide.GetValue_DWORD(TEXT("id"));
|
|
info.dwUnionCode = m_PlatformDBAide.GetValue_DWORD(TEXT("UnionCode"));
|
|
info.cbUnionGoldOpen = m_PlatformDBAide.GetValue_BYTE(TEXT("UnionGoldOpen"));
|
|
info.cbGameType = m_PlatformDBAide.GetValue_BYTE(TEXT("GameType"));
|
|
info.bPlayCoutIdex = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCoutIdex"));
|
|
info.bPlayCout = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCout"));
|
|
info.bGameTypeIdex = m_PlatformDBAide.GetValue_BYTE(TEXT("GameTypeIdex"));
|
|
info.bGameRuleIdex = m_PlatformDBAide.GetValue_DWORD(TEXT("GameRuleIdex"));
|
|
info.cbEnterRoomScoreType = m_PlatformDBAide.GetValue_BYTE(TEXT("EnterRoomScoreType"));
|
|
info.lInitEnterRoomScore = m_PlatformDBAide.GetValue_LONG(TEXT("InitEnterRoomScore"));
|
|
info.cbBaseScore = m_PlatformDBAide.GetValue_LONG(TEXT("BaseScore"));
|
|
|
|
UnionRoomList.kList.push_back(info);
|
|
|
|
//移动记录
|
|
m_PlatformDBModule->MoveToNext();
|
|
};
|
|
|
|
// 获得玩家所在工会列表;
|
|
DataStream kListDataStream;
|
|
UnionRoomList.StreamValue(kListDataStream, true);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_UnionRoomInfo, dwContextID, &kListDataStream[0], kListDataStream.size());
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
CTraceService::TraceString("GSP_GR_UnionRoomInfo", TraceLevel_Exception);
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//自动创建工会房;
|
|
bool CDataBaseEngineSink::OnRequestAutoCreateUnionRoom(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_Create_Private));
|
|
if (wDataSize != sizeof(DBR_GR_Create_Private)) return false;
|
|
|
|
dwUserID = 0;
|
|
|
|
//变量定义
|
|
DBR_GR_Create_Private * pPrivateInfo = (DBR_GR_Create_Private *)pData;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
DBO_GR_CreatePrivateResoult kCreatePrivate;
|
|
ZeroMemory(&kCreatePrivate, sizeof(kCreatePrivate));
|
|
|
|
kCreatePrivate.dwDaikaiIndex = pPrivateInfo->dwDaikaiIndex;
|
|
kCreatePrivate.dwUnionCode = pPrivateInfo->dwUnionCode;
|
|
kCreatePrivate.cbUnionGoldOpen = pPrivateInfo->cbUnionGoldOpen;
|
|
kCreatePrivate.dwAgaginTable = pPrivateInfo->dwAgaginTable;
|
|
kCreatePrivate.bGameRuleIdex = pPrivateInfo->bGameRuleIdex;
|
|
kCreatePrivate.bGameTypeIdex = pPrivateInfo->bGameTypeIdex;
|
|
kCreatePrivate.bPlayCoutIdex = pPrivateInfo->bPlayCoutIdex;
|
|
kCreatePrivate.cbRoomType = pPrivateInfo->cbRoomType;
|
|
|
|
kCreatePrivate.cbEnterRoomScoreType = pPrivateInfo->cbEnterRoomScoreType;
|
|
kCreatePrivate.lInitEnterRoomScore = pPrivateInfo->lInitEnterRoomScore;
|
|
kCreatePrivate.cbBaseScore = pPrivateInfo->cbBaseScore;
|
|
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pPrivateInfo->dwUserID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUnionCode"), pPrivateInfo->dwUnionCode);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbUnionGoldOpen"), pPrivateInfo->cbUnionGoldOpen);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"), pPrivateInfo->wKindID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wCostScore"), pPrivateInfo->dwCost);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wCostType"), pPrivateInfo->dwCostType);
|
|
|
|
m_PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"), kCreatePrivate.szDescribeString, sizeof(kCreatePrivate.szDescribeString), adParamOutput);
|
|
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_AutoCreatePrivate"), true);
|
|
|
|
kCreatePrivate.bSucess = (lReturnValue == DB_SUCCESS);
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
kCreatePrivate.lCurSocre = m_PlatformDBAide.GetValue_LONGLONG(TEXT("CurSocre"));
|
|
|
|
// 欢乐场
|
|
if (pPrivateInfo->cbUnionGoldOpen == 1)
|
|
{
|
|
/*kCreatePrivate.lScoreMultiple = m_PlatformDBAide.GetValue_LONGLONG(TEXT("ScoreMultiple"));
|
|
if (kCreatePrivate.lScoreMultiple == 0)*/
|
|
{
|
|
kCreatePrivate.lScoreMultiple = 1;
|
|
}
|
|
|
|
kCreatePrivate.lGameGold = m_PlatformDBAide.GetValue_LONGLONG(TEXT("GameGold"));
|
|
}
|
|
}
|
|
|
|
CDBVarValue DBVarValue;
|
|
m_PlatformDBModule->GetParameter(TEXT("@strErrorDescribe"), DBVarValue);
|
|
|
|
lstrcpyn(kCreatePrivate.szDescribeString, CW2CT(DBVarValue.bstrVal), CountArray(kCreatePrivate.szDescribeString));
|
|
|
|
if (kCreatePrivate.bSucess && (pPrivateInfo->dwAgaginTable == INVALID_DWORD))
|
|
{
|
|
//创建成功并且是新创建房间时,向数据库中插入空的录像记录主表记录;
|
|
BYTE szTotalData[1] = { 0 };
|
|
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@recordID"), 0);
|
|
m_GameDBAide.AddParameter(TEXT("@roomNum"), 0);
|
|
m_GameDBAide.AddParameter(TEXT("@kindID"), m_pGameServiceAttrib->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@dataUserDefine"), (BYTE*)&szTotalData[0], (ULONG)1);
|
|
|
|
//执行查询;
|
|
LONG lResultCode = m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_PrivateGameRecord"), true);
|
|
|
|
//写入记录;
|
|
if (lResultCode != DB_SUCCESS)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
//获取标识;
|
|
kCreatePrivate.dwRecordID = m_GameDBAide.GetValue_DWORD(TEXT("RecordID"));
|
|
}
|
|
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_AUTO_CREATE, dwContextID, &kCreatePrivate, sizeof(kCreatePrivate));
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//增加自动开房信息;
|
|
bool CDataBaseEngineSink::OnRequestAddAutoRoomInfo(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_AutoRoomInfo));
|
|
if (wDataSize != sizeof(DBR_GR_AutoRoomInfo)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_AutoRoomInfo * pPrivateInfo = (DBR_GR_AutoRoomInfo *)pData;
|
|
dwUserID = pPrivateInfo->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pPrivateInfo->dwUserID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wKindID"), pPrivateInfo->wKindID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), pPrivateInfo->wServerID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbGameType"), pPrivateInfo->cbGameType);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbPlayCoutIdex"), pPrivateInfo->bPlayCoutIdex);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbPlayCout"), pPrivateInfo->bPlayCout);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbGameTypeIdex"), pPrivateInfo->bGameTypeIdex);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwGameRuleIdex"), pPrivateInfo->bGameRuleIdex);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbEnterRoomScoreType"), pPrivateInfo->cbEnterRoomScoreType);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lInitEnterRoomScore"), pPrivateInfo->lInitEnterRoomScore);
|
|
m_PlatformDBAide.AddParameter(TEXT("@cbBaseScore"), pPrivateInfo->cbBaseScore);
|
|
|
|
TCHAR szDescribeString[128] = TEXT("");
|
|
m_PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"), szDescribeString, sizeof(szDescribeString), adParamOutput);
|
|
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_AddAutoRoomInfo_Score"), true);
|
|
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
//变量定义
|
|
CMD_GR_AutoCreatePrivate info;
|
|
ZeroMemory(&info, sizeof(CMD_GR_AutoCreatePrivate));
|
|
|
|
info.dwIndex = m_PlatformDBAide.GetValue_DWORD(TEXT("id"));
|
|
info.dwUnionCode = m_PlatformDBAide.GetValue_DWORD(TEXT("UnionCode"));
|
|
info.cbUnionGoldOpen = m_PlatformDBAide.GetValue_BYTE(TEXT("UnionGoldOpen"));
|
|
info.cbGameType = m_PlatformDBAide.GetValue_BYTE(TEXT("GameType"));
|
|
info.bPlayCoutIdex = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCoutIdex"));
|
|
info.bPlayCout = m_PlatformDBAide.GetValue_BYTE(TEXT("PlayCout"));
|
|
info.bGameTypeIdex = m_PlatformDBAide.GetValue_BYTE(TEXT("GameTypeIdex"));
|
|
info.bGameRuleIdex = m_PlatformDBAide.GetValue_DWORD(TEXT("GameRuleIdex"));
|
|
info.cbEnterRoomScoreType = m_PlatformDBAide.GetValue_BYTE(TEXT("EnterRoomScoreType"));
|
|
info.lInitEnterRoomScore = m_PlatformDBAide.GetValue_LONG(TEXT("InitEnterRoomScore"));
|
|
info.cbBaseScore = m_PlatformDBAide.GetValue_LONG(TEXT("BaseScore"));
|
|
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_ADD_AUTO_SUCC, dwContextID, &info, sizeof(info));
|
|
}
|
|
else
|
|
{
|
|
CDBVarValue DBVarValue;
|
|
m_PlatformDBModule->GetParameter(TEXT("@strErrorDescribe"), DBVarValue);
|
|
|
|
//变量定义
|
|
DBO_GR_AutoFailure autoFailure;
|
|
ZeroMemory(&autoFailure, sizeof(autoFailure));
|
|
|
|
//构造数据
|
|
autoFailure.lResultCode = lReturnValue;
|
|
lstrcpyn(autoFailure.szDescribeString, CW2CT(DBVarValue.bstrVal), CountArray(autoFailure.szDescribeString));
|
|
|
|
//发送结果
|
|
WORD wDataSize = CountStringBuffer(autoFailure.szDescribeString);
|
|
WORD wHeadSize = sizeof(autoFailure) - sizeof(autoFailure.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_ADD_AUTO_ERR, dwContextID, &autoFailure, wHeadSize + wDataSize);
|
|
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
//删除代开信息;
|
|
bool CDataBaseEngineSink::OnRequestDelAutoRoomInfo(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBO_GR_DelAutoRoomInfo));
|
|
if (wDataSize != sizeof(DBO_GR_DelAutoRoomInfo)) return false;
|
|
|
|
//变量定义
|
|
DBO_GR_DelAutoRoomInfo * pPrivateInfo = (DBO_GR_DelAutoRoomInfo *)pData;
|
|
dwUserID = pPrivateInfo->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwIndex"), pPrivateInfo->dwIndex);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), pPrivateInfo->wServerID);
|
|
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_DelAutoRoomInfo"), true);
|
|
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
//变量定义
|
|
DBO_GR_AutoFailure autoFailure;
|
|
ZeroMemory(&autoFailure, sizeof(autoFailure));
|
|
autoFailure.lResultCode = lReturnValue;
|
|
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_DEL_AUTO_RESULTE, dwContextID, &autoFailure, sizeof(autoFailure));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
//写公会房间椅子号;
|
|
bool CDataBaseEngineSink::OnRequestWriteUnionChairID(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_WriteUnionRoomChairID));
|
|
if (wDataSize != sizeof(DBR_GR_WriteUnionRoomChairID)) return false;
|
|
|
|
//变量定义
|
|
DBR_GR_WriteUnionRoomChairID * pPrivateInfo = (DBR_GR_WriteUnionRoomChairID *)pData;
|
|
dwUserID = 0;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_TreasureDBAide.ResetParameter();
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUnionConsumerID"), pPrivateInfo->dwUnionConsumerID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@wChairID"), pPrivateInfo->wChairID);
|
|
m_TreasureDBAide.AddParameter(TEXT("@dwUserID"), pPrivateInfo->dwUserID);
|
|
|
|
LONG lReturnValue = m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_WriteUnionChairID"), true);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
//登录结果
|
|
VOID CDataBaseEngineSink::OnLogonDisposeResult(DWORD dwContextID, DWORD dwErrorCode, LPCTSTR pszErrorString, bool bMobileClient,BYTE cbDeviceType,WORD wBehaviorFlags,WORD wPageTableCount)
|
|
{
|
|
if (dwErrorCode==DB_SUCCESS)
|
|
{
|
|
//属性资料
|
|
m_LogonSuccess.wFaceID=m_GameDBAide.GetValue_WORD(TEXT("FaceID"));
|
|
m_LogonSuccess.dwUserID=m_GameDBAide.GetValue_DWORD(TEXT("UserID"));
|
|
m_LogonSuccess.dwGameID=m_GameDBAide.GetValue_DWORD(TEXT("GameID"));
|
|
//m_LogonSuccess.dwGroupID=m_GameDBAide.GetValue_DWORD(TEXT("GroupID"));
|
|
m_LogonSuccess.dwCustomID=m_GameDBAide.GetValue_DWORD(TEXT("CustomID"));
|
|
m_GameDBAide.GetValue_String(TEXT("NickName"),m_LogonSuccess.szNickName,CountArray(m_LogonSuccess.szNickName));
|
|
m_GameDBAide.GetValue_String(TEXT("GroupName"),m_LogonSuccess.szGroupName,CountArray(m_LogonSuccess.szGroupName));
|
|
|
|
//用户资料
|
|
m_LogonSuccess.cbGender=m_GameDBAide.GetValue_BYTE(TEXT("Gender"));
|
|
m_LogonSuccess.cbMemberOrder=m_GameDBAide.GetValue_BYTE(TEXT("MemberOrder"));
|
|
m_LogonSuccess.cbMasterOrder=m_GameDBAide.GetValue_BYTE(TEXT("MasterOrder"));
|
|
m_GameDBAide.GetValue_String(TEXT("UnderWrite"),m_LogonSuccess.szUnderWrite,CountArray(m_LogonSuccess.szUnderWrite));
|
|
|
|
//积分信息
|
|
m_LogonSuccess.lScore = (SCORE)m_GameDBAide.GetValue_DOUBLE(TEXT("Score"));
|
|
m_LogonSuccess.lGrade=m_GameDBAide.GetValue_LONGLONG(TEXT("Grade"));
|
|
m_LogonSuccess.lInsure = (SCORE)m_GameDBAide.GetValue_DOUBLE(TEXT("Insure"));
|
|
|
|
//局数信息
|
|
m_LogonSuccess.cbScoreMultiple = m_GameDBAide.GetValue_BYTE(TEXT("ScoreMultiple"));
|
|
m_LogonSuccess.dwWinCount=m_GameDBAide.GetValue_LONG(TEXT("WinCount"));
|
|
m_LogonSuccess.dwLostCount=m_GameDBAide.GetValue_LONG(TEXT("LostCount"));
|
|
m_LogonSuccess.dwDrawCount=m_GameDBAide.GetValue_LONG(TEXT("DrawCount"));
|
|
m_LogonSuccess.dwFleeCount=m_GameDBAide.GetValue_LONG(TEXT("FleeCount"));
|
|
m_LogonSuccess.dwUserMedal=m_GameDBAide.GetValue_LONG(TEXT("UserMedal"));
|
|
m_LogonSuccess.dwExperience=m_GameDBAide.GetValue_LONG(TEXT("Experience"));
|
|
m_LogonSuccess.lLoveLiness=m_GameDBAide.GetValue_LONG(TEXT("LoveLiness"));
|
|
|
|
//牌库变量
|
|
m_LogonSuccess.dwCardLibIndex = m_GameDBAide.GetValue_DWORD(TEXT("CardLibIndex"));
|
|
m_LogonSuccess.cbCardLibEnabled = (BYTE)m_GameDBAide.GetValue_DWORD(TEXT("CardLibEnable"));
|
|
|
|
TCHAR szStartLibTime[64] = {0};
|
|
TCHAR szStopLibTime[64] = { 0 };
|
|
m_GameDBAide.GetValue_String(TEXT("StartLibTime"), szStartLibTime, CountArray(szStartLibTime));
|
|
m_GameDBAide.GetValue_String(TEXT("StopLibTime"), szStopLibTime, CountArray(szStopLibTime));
|
|
|
|
if (szStartLibTime[0] != _T('\0') && szStopLibTime[0] != _T('\0'))
|
|
{
|
|
try
|
|
{
|
|
CTime cTime = CTime::GetCurrentTime();
|
|
|
|
CString strDateTime;
|
|
strDateTime.Format(_T("%s %s"), cTime.Format("%Y-%m-%d"), szStartLibTime);
|
|
m_LogonSuccess.dwStartLibTime = (DWORD)CWHService::ConvertDateTimeToDWORD(strDateTime);
|
|
|
|
strDateTime.Format(_T("%s %s"), cTime.Format("%Y-%m-%d"), szStopLibTime);
|
|
m_LogonSuccess.dwStopLibTime = (DWORD)CWHService::ConvertDateTimeToDWORD(strDateTime);
|
|
}
|
|
catch (...)
|
|
{
|
|
m_LogonSuccess.dwStartLibTime = 0;
|
|
m_LogonSuccess.dwStopLibTime = 0;
|
|
m_LogonSuccess.cbCardLibEnabled = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_LogonSuccess.cbCardLibEnabled = 0;
|
|
}
|
|
|
|
//附加信息
|
|
m_LogonSuccess.dwUserRight=m_GameDBAide.GetValue_DWORD(TEXT("UserRight"));
|
|
m_LogonSuccess.dwMasterRight=m_GameDBAide.GetValue_DWORD(TEXT("MasterRight"));
|
|
m_LogonSuccess.cbDeviceType=cbDeviceType;
|
|
m_LogonSuccess.wBehaviorFlags=wBehaviorFlags;
|
|
m_LogonSuccess.wPageTableCount=wPageTableCount;
|
|
|
|
//索引变量
|
|
m_LogonSuccess.dwInoutIndex=m_GameDBAide.GetValue_DWORD(TEXT("InoutIndex"));
|
|
|
|
//头像HTTP
|
|
ZeroMemory(m_LogonSuccess.szHeadHttp, CountArray(m_LogonSuccess.szHeadHttp));
|
|
m_GameDBAide.GetValue_String(TEXT("HeadHttp"), m_LogonSuccess.szHeadHttp, CountArray(m_LogonSuccess.szHeadHttp));
|
|
|
|
//获取信息
|
|
if(pszErrorString!=NULL)lstrcpyn(m_LogonSuccess.szDescribeString,pszErrorString,CountArray(m_LogonSuccess.szDescribeString));
|
|
|
|
//发送结果
|
|
WORD wDataSize=CountStringBuffer(m_LogonSuccess.szDescribeString);
|
|
WORD wHeadSize=sizeof(m_LogonSuccess)-sizeof(m_LogonSuccess.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_LOGON_SUCCESS,dwContextID,&m_LogonSuccess,wHeadSize+wDataSize);
|
|
}
|
|
else
|
|
{
|
|
//变量定义
|
|
DBO_GR_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_GR_LOGON_FAILURE,dwContextID,&LogonFailure,wHeadSize+wDataSize);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
//银行结果
|
|
VOID CDataBaseEngineSink::OnInsureDisposeResult(DWORD dwContextID, DWORD dwErrorCode, SCORE lFrozenedScore, LPCTSTR pszErrorString, bool bMobileClient,BYTE cbActivityGame)
|
|
{
|
|
if (dwErrorCode==DB_SUCCESS)
|
|
{
|
|
//变量定义
|
|
DBO_GR_UserInsureSuccess UserInsureSuccess;
|
|
ZeroMemory(&UserInsureSuccess,sizeof(UserInsureSuccess));
|
|
|
|
//构造变量
|
|
UserInsureSuccess.cbActivityGame=cbActivityGame;
|
|
UserInsureSuccess.lFrozenedScore=lFrozenedScore;
|
|
UserInsureSuccess.dwUserID=m_TreasureDBAide.GetValue_DWORD(TEXT("UserID"));
|
|
UserInsureSuccess.lSourceScore=m_TreasureDBAide.GetValue_LONGLONG(TEXT("SourceScore"));
|
|
UserInsureSuccess.lSourceInsure=m_TreasureDBAide.GetValue_LONGLONG(TEXT("SourceInsure"));
|
|
UserInsureSuccess.lInsureRevenue=m_TreasureDBAide.GetValue_LONGLONG(TEXT("InsureRevenue"));
|
|
UserInsureSuccess.lVariationScore=m_TreasureDBAide.GetValue_LONGLONG(TEXT("VariationScore"));
|
|
UserInsureSuccess.lVariationInsure=m_TreasureDBAide.GetValue_LONGLONG(TEXT("VariationInsure"));
|
|
lstrcpyn(UserInsureSuccess.szDescribeString,pszErrorString,CountArray(UserInsureSuccess.szDescribeString));
|
|
|
|
//发送结果
|
|
WORD wDataSize=CountStringBuffer(UserInsureSuccess.szDescribeString);
|
|
WORD wHeadSize=sizeof(UserInsureSuccess)-sizeof(UserInsureSuccess.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_USER_INSURE_SUCCESS,dwContextID,&UserInsureSuccess,wHeadSize+wDataSize);
|
|
}
|
|
else
|
|
{
|
|
//变量定义
|
|
DBO_GR_UserInsureFailure UserInsureFailure;
|
|
ZeroMemory(&UserInsureFailure,sizeof(UserInsureFailure));
|
|
|
|
//构造变量
|
|
UserInsureFailure.cbActivityGame=cbActivityGame;
|
|
UserInsureFailure.lResultCode=dwErrorCode;
|
|
UserInsureFailure.lFrozenedScore=lFrozenedScore;
|
|
lstrcpyn(UserInsureFailure.szDescribeString,pszErrorString,CountArray(UserInsureFailure.szDescribeString));
|
|
|
|
//发送结果
|
|
WORD wDataSize=CountStringBuffer(UserInsureFailure.szDescribeString);
|
|
WORD wHeadSize=sizeof(UserInsureFailure)-sizeof(UserInsureFailure.szDescribeString);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_USER_INSURE_FAILURE,dwContextID,&UserInsureFailure,wHeadSize+wDataSize);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
bool CDataBaseEngineSink::OnRequestSinglePrivateGameRecord(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
DataStream kDataStream(pData, wDataSize);
|
|
if (kDataStream.size() == 0)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
tagPrivateRandRecordChild singleGameRecord;
|
|
singleGameRecord.StreamValue(kDataStream, false);
|
|
|
|
CString strUserScore = "";
|
|
for (int i = 0; i < (int)singleGameRecord.kScore.size(); i++)
|
|
{
|
|
CString strTmp = "";
|
|
|
|
if (!strUserScore.IsEmpty())
|
|
{
|
|
if (singleGameRecord.kScore[i] > 0)
|
|
{
|
|
strTmp.Format(",+%d", singleGameRecord.kScore[i]);
|
|
}
|
|
else
|
|
{
|
|
strTmp.Format(",%d", singleGameRecord.kScore[i]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (singleGameRecord.kScore[i] > 0)
|
|
{
|
|
strTmp.Format("+%d", singleGameRecord.kScore[i]);
|
|
}
|
|
else
|
|
{
|
|
strTmp.Format("%d", singleGameRecord.kScore[i]);
|
|
}
|
|
}
|
|
|
|
strUserScore += strTmp;
|
|
}
|
|
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@dwRecordID"), singleGameRecord.iRecordID);
|
|
m_GameDBAide.AddParameter(TEXT("@strUserScore"), strUserScore);
|
|
m_GameDBAide.AddParameter(TEXT("@strUserIDs"), singleGameRecord.kUserDefine.c_str());
|
|
m_GameDBAide.AddParameter(TEXT("@dataUserDefine"), (BYTE*)pData, wDataSize);
|
|
|
|
//执行查询;
|
|
m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_WriteGameScore_PlayCout"), true);
|
|
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误;
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//私人房结束;
|
|
bool CDataBaseEngineSink::OnRequestPrivateGameEnd(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBO_GR_PrivateGameEnd));
|
|
if (wDataSize != sizeof(DBO_GR_PrivateGameEnd)) return false;
|
|
|
|
//变量定义
|
|
DBO_GR_PrivateGameEnd * pGameEnd = (DBO_GR_PrivateGameEnd *)pData;
|
|
|
|
try
|
|
{
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@dwUserID"), pGameEnd->dwUserID);
|
|
m_GameDBAide.AddParameter(TEXT("@lScore"), pGameEnd->lScore);
|
|
m_GameDBAide.AddParameter(TEXT("@wPlayCount"), pGameEnd->wPlayCount);
|
|
m_GameDBAide.AddParameter(TEXT("@dwCardLibIndex"), pGameEnd->dwCardLibIndex);
|
|
m_GameDBAide.AddParameter(TEXT("@wKindID"), pGameEnd->wKindID);
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"), pGameEnd->wServerID);
|
|
|
|
//执行查询;
|
|
m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_PrivateGameEnd"), true);
|
|
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误;
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//牌库全局配置;
|
|
bool CDataBaseEngineSink::OnRequestLoadCardLibCfg(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
|
|
//执行查询
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_LoadCardLibraryConfig"), true);
|
|
|
|
//读取信息
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
//读取消息
|
|
if (m_PlatformDBModule->IsRecordsetEnd() == false)
|
|
{
|
|
//变量定义
|
|
DBO_GR_GameCardLibraryCfg mCardLibCfg;
|
|
ZeroMemory(&mCardLibCfg, sizeof(DBO_GR_GameCardLibraryCfg));
|
|
|
|
//读取消息
|
|
TCHAR szStatusString[128] = _T("");
|
|
m_PlatformDBAide.GetValue_String(TEXT("StatusString"), szStatusString, CountArray(szStatusString));
|
|
|
|
mCardLibCfg.cbEnable = m_PlatformDBAide.GetValue_BYTE(TEXT("StatusValue"));
|
|
|
|
CString strSub;
|
|
int nCount = 0;
|
|
CStringArray aryString;
|
|
|
|
while (AfxExtractSubString(strSub, szStatusString, nCount++, '|'))
|
|
{
|
|
aryString.Add(strSub);
|
|
}
|
|
|
|
if ( aryString.GetCount()>2 )
|
|
{
|
|
mCardLibCfg.dwCount = atoi(aryString[2]);
|
|
mCardLibCfg.dwStartDateTime = (DWORD)CWHService::ConvertDateTimeToDWORD(aryString[0]);
|
|
|
|
CString strDateTime;
|
|
strDateTime.Format(_T("%s 23:59:59"), aryString[1]);
|
|
mCardLibCfg.dwEndDateTime = (DWORD)CWHService::ConvertDateTimeToDWORD(strDateTime);
|
|
}
|
|
else
|
|
{
|
|
mCardLibCfg.cbEnable = 0;
|
|
}
|
|
|
|
//CTime cTime(mCardLibCfg.dwEndDateTime);
|
|
//CString strTime = cTime.Format("%Y-%m-%d %H:%M:%S");
|
|
|
|
//发送消息
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_GAME_CARD_LIB_CFG, 0, &mCardLibCfg, sizeof(DBO_GR_GameCardLibraryCfg));
|
|
};
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//清空本服务器所有玩家;
|
|
bool CDataBaseEngineSink::OnRequestUnlockAllUser(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
dwUserID = INVALID_DWORD;
|
|
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"), m_pGameServiceOption->wServerID);
|
|
|
|
//执行查询;
|
|
m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_UnlockAllUser"), true);
|
|
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误;
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//比赛记录成绩;
|
|
bool CDataBaseEngineSink::OnRequestMatchRecordGrades(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_MatchRecordGrades));
|
|
if (wDataSize != sizeof(DBR_GR_MatchRecordGrades))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//变量定义
|
|
DBR_GR_MatchRecordGrades * pMatchRecordGrades = (DBR_GR_MatchRecordGrades *)pData;
|
|
dwUserID = pMatchRecordGrades->dwUserID;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), pMatchRecordGrades->dwUserID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@wServerID"), pMatchRecordGrades->wServerID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchID"), pMatchRecordGrades->dwMatchID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lMatchNo"), pMatchRecordGrades->lMatchNo);
|
|
m_PlatformDBAide.AddParameter(TEXT("@lInitScore"), pMatchRecordGrades->lInitScore);
|
|
|
|
//结果处理
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_MatchRecordGrades"), false);
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
CTraceService::TraceString(TEXT("GSP_GR_MatchRecordGrades"), TraceLevel_Exception);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//加载排行数据;
|
|
bool CDataBaseEngineSink::OnRequestMatchLoadRankData(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
//效验参数
|
|
ASSERT(wDataSize == sizeof(DBR_GR_MatchLoadRankData));
|
|
if (wDataSize != sizeof(DBR_GR_MatchLoadRankData))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//变量定义
|
|
DBR_GR_MatchLoadRankData * pLoadRankData = (DBR_GR_MatchLoadRankData *)pData;
|
|
//dwUserID = INVALID_DWORD;
|
|
|
|
//请求处理
|
|
try
|
|
{
|
|
TCHAR szDescribeString[128] = "";
|
|
|
|
//构造参数
|
|
m_PlatformDBAide.ResetParameter();
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchID"), pLoadRankData->dwMatchID);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwMatchNo"), pLoadRankData->dwMatchNO);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwAllRank"), 1);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwRankNum"), 0);
|
|
m_PlatformDBAide.AddParameter(TEXT("@dwUserID"), 0);
|
|
m_PlatformDBAide.AddParameterOutput(TEXT("@@strErrorDesc"), szDescribeString, sizeof(szDescribeString), adParamOutput);
|
|
|
|
//结果处理
|
|
LONG lReturnValue = m_PlatformDBAide.ExecuteProcess(TEXT("GSP_GR_GetCurMatchList"), true);
|
|
|
|
|
|
//执行成功
|
|
if (lReturnValue == DB_SUCCESS)
|
|
{
|
|
//构造结构
|
|
DBO_GR_MatchRankDataList MatchRankDataList;
|
|
ZeroMemory(&MatchRankDataList, sizeof(MatchRankDataList));
|
|
|
|
//变量定义
|
|
tagMatchRankDataInfo * pMatchRankInfo = NULL;
|
|
|
|
//设置变量
|
|
MatchRankDataList.dwMatchID = pLoadRankData->dwMatchID;
|
|
MatchRankDataList.dwMatchNO = pLoadRankData->dwMatchNO;
|
|
|
|
//读取记录;
|
|
while (m_PlatformDBModule->IsRecordsetEnd() == false)
|
|
{
|
|
pMatchRankInfo = &MatchRankDataList.MatchRankInfo[MatchRankDataList.wUserCount++];
|
|
pMatchRankInfo->wRankID = m_PlatformDBAide.GetValue_WORD(TEXT("RankID"));
|
|
pMatchRankInfo->dwUserID = m_PlatformDBAide.GetValue_DWORD(TEXT("UserID"));
|
|
pMatchRankInfo->lScore = m_PlatformDBAide.GetValue_LONGLONG(TEXT("CurScore"));
|
|
pMatchRankInfo->lFinishMaxScore = m_PlatformDBAide.GetValue_LONGLONG(TEXT("Score"));
|
|
|
|
m_PlatformDBAide.GetValue_String(TEXT("NickName"),pMatchRankInfo->szNickName, LEN_NICKNAME);
|
|
|
|
if (MatchRankDataList.wUserCount >= 64)
|
|
{
|
|
//发送数据;
|
|
WORD wSendDataSize = sizeof(MatchRankDataList) - sizeof(MatchRankDataList.MatchRankInfo);
|
|
wSendDataSize += MatchRankDataList.wUserCount*sizeof(MatchRankDataList.MatchRankInfo[0]);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_RANKDATA_LIST, dwContextID, &MatchRankDataList, wSendDataSize);
|
|
|
|
MatchRankDataList.wUserCount = 0;
|
|
}
|
|
|
|
//移动游标;
|
|
m_PlatformDBModule->MoveToNext();
|
|
}
|
|
|
|
//发送数据
|
|
WORD wSendDataSize = sizeof(MatchRankDataList) - sizeof(MatchRankDataList.MatchRankInfo);
|
|
wSendDataSize += MatchRankDataList.wUserCount*sizeof(MatchRankDataList.MatchRankInfo[0]);
|
|
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GR_MATCH_RANKDATA_LIST, dwContextID, &MatchRankDataList, wSendDataSize);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//错误信息
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
CTraceService::TraceString(TEXT("GSP_GR_GetCurMatchList"), TraceLevel_Exception);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//重置数据库信息;
|
|
bool CDataBaseEngineSink::OnRequestResetDateBaseInfo(DWORD dwContextID, VOID * pData, WORD wDataSize, DWORD &dwUserID)
|
|
{
|
|
try
|
|
{
|
|
m_GameDBAide.ResetParameter();
|
|
m_GameDBAide.AddParameter(TEXT("@wServerID"), m_pGameServiceOption->wServerID);
|
|
|
|
//执行查询;
|
|
m_GameDBAide.ExecuteProcess(TEXT("GSP_GR_ResetDateBaseInfo"), true);
|
|
|
|
}
|
|
catch (IDataBaseException * pIException)
|
|
{
|
|
//输出错误;
|
|
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|