DragonNest/Server/DNDBServer/DNDonationTask.cpp

94 lines
3.2 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#include "DNDonationTask.h"
#include "DNConnection.h"
#include "DNSQLConnectionManager.h"
#include "DNSQLWorld.h"
#include "Log.h"
#if defined (PRE_ADD_DONATION)
CDNDonationTask::CDNDonationTask(CDNConnection* pConnection)
: CDNMessageTask(pConnection)
{
}
CDNDonationTask::~CDNDonationTask()
{
}
void CDNDonationTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData)
{
switch (nSubCmd)
{
case QUERY_DONATE:
{
TQDonate* pPacket = reinterpret_cast<TQDonate*>(pData);
CDNSQLWorld* pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
if (!pWorldDB)
{
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_DONATE:%d] pWorldDB not found\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID);
break;
}
TADonate Ack;
ZeroMemory(&Ack, sizeof(Ack));
Ack.nAccountDBID = pPacket->nAccountDBID;
Ack.nRetCode = pWorldDB->QueryDonate(pPacket);
if (Ack.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_DONATE:%d] Query Error Ret:%d\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID, Ack.nRetCode);
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&Ack), sizeof(Ack));
}
break;
case QUERY_DONATION_RANKING:
{
TQDonationRanking* pPacket = reinterpret_cast<TQDonationRanking*>(pData);
CDNSQLWorld* pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
if (!pWorldDB)
{
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_DONATION_RANKING:%d] pWorldDB not found\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID);
break;
}
TADonationRaking Ack;
ZeroMemory(&Ack, sizeof(Ack));
Ack.nAccountDBID = pPacket->nAccountDBID;
Ack.nRetCode = pWorldDB->QueryDonationRanking(pPacket, Ack);
if (Ack.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, pPacket->biCharacterDBID, 0, L"[CDBID:%I64d] [QUERY_DONATION_RANKING:%d] Query Error Ret:%d\r\n", pPacket->biCharacterDBID, pPacket->cWorldSetID, Ack.nRetCode);
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&Ack), sizeof(Ack));
}
break;
case QUERY_DONATION_TOP_RANKER:
{
TQDonationTopRanker* pPacket = reinterpret_cast<TQDonationTopRanker*>(pData);
CDNSQLWorld* pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
if (!pWorldDB)
{
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, 0, 0, L"[QUERY_DONATION_TOP_RANKER:%d] pWorldDB not found\r\n", pPacket->cWorldSetID);
break;
}
TADonationTopRanker Ack;
ZeroMemory(&Ack, sizeof(Ack));
Ack.cWorldID = pPacket->cWorldSetID;
Ack.nRetCode = pWorldDB->QueryDonationTopRanker(pPacket, Ack);
if (Ack.nRetCode != ERROR_NONE)
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, 0, 0, 0, L"[QUERY_DONATION_TOP_RANKER:%d] Query Error Ret:%d\r\n", pPacket->cWorldSetID, Ack.nRetCode);
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&Ack), sizeof(Ack));
}
break;
default:
break;
}
}
#endif // #if defined (PRE_ADD_DONATION)