//登录请求处理 bool CDataBaseSink::OnRequestLogon(const NTY_DataBaseEvent & DataBaseEvent, void * pDataBuffer, WORD wDataSize) { try { //登录处理 LONG lReturnValue=-1; LPCTSTR pszPassword=NULL; switch (DataBaseEvent.wRequestID) { case DBR_GP_LOGON_BY_ACCOUNTS: //帐号登录 { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_LogonByAccounts)); if (wDataSize!=sizeof(DBR_GP_LogonByAccounts)) return false; //执行查询 DBR_GP_LogonByAccounts * pLogonByAccounts=(DBR_GP_LogonByAccounts *)pDataBuffer; lReturnValue=SPLogonByAccounts(pLogonByAccounts->szAccounts,pLogonByAccounts->szPassWord,pLogonByAccounts->dwClientIP); pszPassword=pLogonByAccounts->szPassWord; break; } case DBR_GP_LOGON_BY_USERID: //I D 登录 { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_LogonByUserID)); if (wDataSize!=sizeof(DBR_GP_LogonByUserID)) return false; //执行查询 DBR_GP_LogonByUserID * pLogonByUserID=(DBR_GP_LogonByUserID *)pDataBuffer; lReturnValue=SPLogonByUserID(pLogonByUserID->dwUserID,pLogonByUserID->szPassWord,pLogonByUserID->dwClientIP); pszPassword=pLogonByUserID->szPassWord; break; } default : //默认处理 { ASSERT(FALSE); return false; } } //结果判断 if (lReturnValue==0L) { //登录成功 DBR_GP_LogonSuccess LogonSuccess; memset(&LogonSuccess,0,sizeof(LogonSuccess)); m_UserDataBase->GetFieldValue(TEXT("UserID"),LogonSuccess.dwUserID); m_UserDataBase->GetFieldValue(TEXT("Gender"),LogonSuccess.cbGender); m_UserDataBase->GetFieldValue(TEXT("MemberOrder"),LogonSuccess.cbMember); m_UserDataBase->GetFieldValue(TEXT("Face"),LogonSuccess.szFace,sizeof(LogonSuccess.szFace)); m_UserDataBase->GetFieldValue(TEXT("TZPoint"),LogonSuccess.dwTZPoint); m_UserDataBase->GetFieldValue(TEXT("UserRight"),LogonSuccess.dwUserRight); m_UserDataBase->GetFieldValue(TEXT("MasterRight"),LogonSuccess.dwMasterRight); m_UserDataBase->GetFieldValue(TEXT("Accounts"),LogonSuccess.szAccounts,sizeof(LogonSuccess.szAccounts)); m_UserDataBase->GetFieldValue(TEXT("Name"),LogonSuccess.szName,sizeof(LogonSuccess.szName)); CopyMemory(LogonSuccess.szPassWord,pszPassword,sizeof(LogonSuccess.szPassWord)); m_AttemperEvent.PostDataBaseEvent(DBR_GP_LOGON_SUCCESS,DataBaseEvent.wIndex,DataBaseEvent.wRoundID, &LogonSuccess,sizeof(LogonSuccess)); } else { //登录失败 DBR_GP_LogonError LogonError; LogonError.lErrorCode=lReturnValue; m_UserDataBase->GetFieldValue(TEXT("ErrorDescribe"),LogonError.szErrorDescribe,sizeof(LogonError.szErrorDescribe)); m_AttemperEvent.PostDataBaseEvent(DBR_GP_LOGON_ERROR,DataBaseEvent.wIndex,DataBaseEvent.wRoundID, &LogonError,sizeof(LogonError)); } } catch (IADOError * pIADOError) { //输出错误 UNREFERENCED_PARAMETER(pIADOError); m_pIEventService->ShowEventNotify(pIADOError->GetErrorDescribe(),Level_Exception); //操作失败 DBR_GP_LogonError LogonError; LogonError.lErrorCode=-1; lstrcpyn(LogonError.szErrorDescribe,TEXT("由于数据库操作异常,请您稍后重试或选择另一服务器登录!"), sizeof(LogonError.szErrorDescribe)); m_AttemperEvent.PostDataBaseEvent(DBR_GP_LOGON_ERROR,DataBaseEvent.wIndex,DataBaseEvent.wRoundID, &LogonError,sizeof(LogonError)); } //关闭记录集 m_UserDataBase->CloseRecordset(); return true; }
//登录请求处理 bool CDataBaseSink::OnRequestLogon(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize) { try { //变量定义 LONG lReturnValue=-1; LPCTSTR pszPassword=NULL; //登录处理 switch (wRequestID) { case DBR_GP_LOGON_BY_ACCOUNTS: //帐号登录 { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_LogonByAccounts)); if (wDataSize!=sizeof(DBR_GP_LogonByAccounts)) return false; //执行查询 DBR_GP_LogonByAccounts * pLogonByAccounts=(DBR_GP_LogonByAccounts *)pData; lReturnValue=SPLogonByAccounts(pLogonByAccounts->szAccounts,pLogonByAccounts->szPassWord,pLogonByAccounts->dwClientIP,pLogonByAccounts->szComputerID); pszPassword=pLogonByAccounts->szPassWord; break; } case DBR_GP_LOGON_BY_USERID: //I D 登录 { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_LogonByUserID)); if (wDataSize!=sizeof(DBR_GP_LogonByUserID)) return false; //执行查询 DBR_GP_LogonByUserID * pLogonByUserID=(DBR_GP_LogonByUserID *)pData; lReturnValue=SPLogonByUserID(pLogonByUserID->dwUserID,pLogonByUserID->szPassWord,pLogonByUserID->dwClientIP,pLogonByUserID->szComputerID); pszPassword=pLogonByUserID->szPassWord; break; } case DBR_GP_REGISTER_ACCOUNTS: //注册帐号 { //效验参数 ASSERT(wDataSize==sizeof(DBR_GP_RegisterAccounts)); if (wDataSize!=sizeof(DBR_GP_RegisterAccounts)) return false; //执行查询 DBR_GP_RegisterAccounts * pRegisterAccounts=(DBR_GP_RegisterAccounts *)pData; lReturnValue=SPRegisterAccounts(pRegisterAccounts->szAccounts,pRegisterAccounts->szPassWord,pRegisterAccounts->szPassWordBank,pRegisterAccounts->szSpreader, pRegisterAccounts->wFaceID,pRegisterAccounts->cbGender,pRegisterAccounts->dwClientIP,pRegisterAccounts->szComputerID); pszPassword=pRegisterAccounts->szPassWord; break; } default : //默认处理 { ASSERT(FALSE); return false; } } //结果判断 if (lReturnValue==0L) { //登录成功 DBR_GP_LogonSuccess LogonSuccess; ZeroMemory(&LogonSuccess,sizeof(LogonSuccess)); //读取变量 LogonSuccess.wFaceID=m_AccountsDBAide.GetValue_WORD(TEXT("FaceID")); LogonSuccess.dwUserID=m_AccountsDBAide.GetValue_DWORD(TEXT("UserID")); LogonSuccess.dwGameID=m_AccountsDBAide.GetValue_DWORD(TEXT("GameID")); LogonSuccess.cbGender=m_AccountsDBAide.GetValue_BYTE(TEXT("Gender")); LogonSuccess.cbMember=m_AccountsDBAide.GetValue_BYTE(TEXT("MemberOrder")); LogonSuccess.dwExperience=m_AccountsDBAide.GetValue_DWORD(TEXT("Experience")); LogonSuccess.dwCustomFaceVer=m_AccountsDBAide.GetValue_DWORD(TEXT("CustomFaceVer")); m_AccountsDBAide.GetValue_String(TEXT("Accounts"),LogonSuccess.szAccounts,CountArray(LogonSuccess.szAccounts)); m_AccountsDBAide.GetValue_String(TEXT("UnderWrite"),LogonSuccess.szUnderWrite,CountArray(LogonSuccess.szUnderWrite)); m_AccountsDBAide.GetValue_String(TEXT("ErrorDescribe"),LogonSuccess.szDescribeString,CountArray(LogonSuccess.szDescribeString)); // add by yijian m_AccountsDBAide.GetValue_String(TEXT("InsurePass"),LogonSuccess.szInsurePwd,CountArray(LogonSuccess.szInsurePwd)); //绑定机器 //if(wRequestID!=DBR_GP_REGISTER_ACCOUNTS) //{ // LogonSuccess.cbMoorMachine=m_AccountsDBAide.GetValue_BYTE(TEXT("MoorMachine")); //} //设置密码 CopyMemory(LogonSuccess.szPassword,pszPassword,CountArray(LogonSuccess.szPassword)); //投递结果 m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBR_GP_LOGON_SUCCESS,dwContextID,&LogonSuccess,sizeof(LogonSuccess)); } else { //登录失败 DBR_GP_LogonError LogonError; ZeroMemory(&LogonError,sizeof(LogonError)); //设置变量 LogonError.lErrorCode=lReturnValue; m_AccountsDBAide.GetValue_String(TEXT("ErrorDescribe"),LogonError.szErrorDescribe,CountArray(LogonError.szErrorDescribe)); //投递结果 m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBR_GP_LOGON_ERROR,dwContextID,&LogonError,sizeof(LogonError)); } } catch (IDataBaseException * pIException) { //登录失败 DBR_GP_LogonError LogonError; ZeroMemory(&LogonError,sizeof(LogonError)); //输出错误 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); //操作失败 LogonError.lErrorCode=-1; lstrcpyn(LogonError.szErrorDescribe,TEXT("由于数据库操作异常,请您稍后重试或选择另一服务器登录!"),CountArray(LogonError.szErrorDescribe)); //投递结果 m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBR_GP_LOGON_ERROR,dwContextID,&LogonError,sizeof(LogonError)); } //关闭记录集 m_AccountsDBModule->CloseRecordset(); return true; }
//登录请求处理 bool CDataBaseSink::OnRequestLogon(const NTY_DataBaseEvent & DataBaseEvent, void * pDataBuffer, WORD wDataSize) { CString strFile,strTemp; CTime tmCur = CTime::GetCurrentTime(); CString strTime = tmCur.Format("%m%d"); strFile.Format("log\\%s游戏服务.log",strTime); strTemp.Format("into OnRequestLogon"); WriteLog(strFile, strTemp); try { //登录处理 LONG lReturnValue=-1; LPCTSTR pszPassword=NULL; switch (DataBaseEvent.wRequestID) { case DBR_GR_LOGON_BY_ACCOUNTS: //帐户登录 { strTemp.Format("into 帐户登录"); WriteLog(strFile, strTemp); //效验参数 ASSERT(wDataSize==sizeof(DBR_GR_LogonByAccounts)); if (wDataSize!=sizeof(DBR_GR_LogonByAccounts)) return false; //执行查询 DBR_GR_LogonByAccounts * pLogonByAccounts=(DBR_GR_LogonByAccounts *)pDataBuffer; lReturnValue=SPLogonByAccounts(pLogonByAccounts->szAccounts,pLogonByAccounts->szPassWord,pLogonByAccounts->dwClientIP); pszPassword=pLogonByAccounts->szPassWord; break; } case DBR_GR_LOGON_BY_USERID: //I D 登录 { strTemp.Format("into I D 登录"); WriteLog(strFile, strTemp); //效验参数 ASSERT(wDataSize==sizeof(DBR_GR_LogonByUserID)); if (wDataSize!=sizeof(DBR_GR_LogonByUserID)) return false; //执行查询 DBR_GR_LogonByUserID * pLogonByUserID=(DBR_GR_LogonByUserID *)pDataBuffer; lReturnValue=SPLogonByUserID(pLogonByUserID->dwUserID,pLogonByUserID->szPassWord,pLogonByUserID->dwClientIP); pszPassword=pLogonByUserID->szPassWord; strTemp.Format("pszPassword=%s", pszPassword); WriteLog(strFile, strTemp); break; } default : //默认处理 { ASSERT(FALSE); return false; } } //登录失败 if (lReturnValue!=0L) { DBR_GR_LogonError LogonError; LogonError.lErrorCode=lReturnValue; m_GameScoreDB->GetFieldValue(TEXT("ErrorDescribe"),LogonError.szErrorDescribe,sizeof(LogonError.szErrorDescribe)); m_AttemperEvent.PostDataBaseEvent(DBR_GR_LOGON_ERROR,DataBaseEvent.wIndex,DataBaseEvent.wRoundID,&LogonError,sizeof(LogonError)); m_GameScoreDB->CloseRecordset(); return true; } //变量定义 DBR_GR_LogonSuccess LogonSuccess; memset(&LogonSuccess,0,sizeof(LogonSuccess)); CopyMemory(LogonSuccess.szPassWord,pszPassword,sizeof(LogonSuccess.szPassWord)); strTemp.Format("aaaa"); WriteLog(strFile, strTemp); //读取用户信息 m_GameScoreDB->GetFieldValue(TEXT("UserID"),LogonSuccess.dwUserID); m_GameScoreDB->GetFieldValue(TEXT("Gender"),LogonSuccess.cbGender); m_GameScoreDB->GetFieldValue(TEXT("MemberOrder"),LogonSuccess.cbMember); m_GameScoreDB->GetFieldValue(TEXT("FaceID"),LogonSuccess.wFaceID); m_GameScoreDB->GetFieldValue(TEXT("GroupID"),LogonSuccess.dwGroupID); m_GameScoreDB->GetFieldValue(TEXT("Experience"),LogonSuccess.lExperience); m_GameScoreDB->GetFieldValue(TEXT("UserRight"),LogonSuccess.dwUserRight); m_GameScoreDB->GetFieldValue(TEXT("MasterRight"),LogonSuccess.dwMasterRight); m_GameScoreDB->GetFieldValue(TEXT("Accounts"),LogonSuccess.szAccounts,sizeof(LogonSuccess.szAccounts)); m_GameScoreDB->GetFieldValue(TEXT("GroupName"),LogonSuccess.szGroupName,sizeof(LogonSuccess.szGroupName)); strTemp.Format("bbbb"); WriteLog(strFile, strTemp); //读取游戏信息 m_GameScoreDB->GetFieldValue(TEXT("Score"),LogonSuccess.lScore); m_GameScoreDB->GetFieldValue(TEXT("WinCount"),LogonSuccess.lWinCount); m_GameScoreDB->GetFieldValue(TEXT("LostCount"),LogonSuccess.lLostCount); m_GameScoreDB->GetFieldValue(TEXT("DrawCount"),LogonSuccess.lDrawCount); m_GameScoreDB->GetFieldValue(TEXT("FleeCount"),LogonSuccess.lFleeCount); strTemp.Format("cccc"); WriteLog(strFile, strTemp); //投递调度通知 m_AttemperEvent.PostDataBaseEvent(DBR_GR_LOGON_SUCCESS,DataBaseEvent.wIndex,DataBaseEvent.wRoundID, &LogonSuccess,sizeof(LogonSuccess)); } catch (IADOError * pIADOError) { //输出错误 if (m_pIEventService!=NULL) m_pIEventService->ShowEventNotify(pIADOError->GetErrorDescribe(),Level_Exception); //操作失败 DBR_GR_LogonError LogonError; LogonError.lErrorCode=-1; lstrcpyn(LogonError.szErrorDescribe,TEXT("由于数据库操作异常,请您稍后重试或选择另一游戏服务器!"),sizeof(LogonError.szErrorDescribe)); m_AttemperEvent.PostDataBaseEvent(DBR_GR_LOGON_ERROR,DataBaseEvent.wIndex,DataBaseEvent.wRoundID, &LogonError,sizeof(LogonError)); } //关闭记录集 m_GameScoreDB->CloseRecordset(); return true; }