334 lines
No EOL
13 KiB
C++
334 lines
No EOL
13 KiB
C++
#include "StdAfx.h"
|
||
|
||
#include "DNDWCTask.h"
|
||
#include "DNConnection.h"
|
||
#include "DNSQLConnectionManager.h"
|
||
#include "DNSQLMembership.h"
|
||
#include "DNSQLWorld.h"
|
||
#include "Log.h"
|
||
|
||
#if defined( PRE_ADD_DWC )
|
||
|
||
CDNDWCTask::CDNDWCTask(CDNConnection* pConnection)
|
||
: CDNMessageTask(pConnection)
|
||
{
|
||
}
|
||
|
||
CDNDWCTask::~CDNDWCTask(void)
|
||
{
|
||
}
|
||
|
||
void CDNDWCTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData)
|
||
{
|
||
CDNSQLMembership *pMembershipDB = NULL;
|
||
CDNSQLWorld *pWorldDB = NULL;
|
||
int nRet = ERROR_DB;
|
||
|
||
switch (nSubCmd)
|
||
{
|
||
case QUERY_CREATE_DWC_TEAM:
|
||
{
|
||
TQCreateDWCTeam *pPacket = (TQCreateDWCTeam*)pData;
|
||
TACreateDWCTeam Packet;
|
||
memset(&Packet, 0, sizeof(Packet));
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
_wcscpy(Packet.wszTeamName, _countof(Packet.wszTeamName), pPacket->wszTeamName, (int)wcslen(pPacket->wszTeamName));
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
{
|
||
nRet = pWorldDB->QueryAddDWCTeam(pPacket, &Packet);
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Packet, sizeof(Packet));
|
||
|
||
switch (nRet)
|
||
{
|
||
case ERROR_NONE:
|
||
case ERROR_DB_DWC_PERMIT_FAIL:
|
||
case ERROR_DB_DWC_NAME_ALREADYEXIST:
|
||
case ERROR_DB_DWC_ALREADY_HASTEAM:
|
||
case ERROR_DB_DWC_USER_NOT_FOUND:
|
||
break;
|
||
default:
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_ADD_DWC_TEAM:%d] Query Error\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, nRet);
|
||
}
|
||
}
|
||
else
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_ADD_DWC_TEAM] pWorldDB not found\r\n", pPacket->nAccountDBID);
|
||
}
|
||
break;
|
||
case QUERY_ADD_DWC_TEAMMEMBER:
|
||
{
|
||
TQAddDWCTeamMember *pPacket = (TQAddDWCTeamMember*)pData;
|
||
TAAddDWCTeamMember Packet;
|
||
memset(&Packet, 0, sizeof(Packet));
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.biCharacterDBID = pPacket->biCharacterDBID;
|
||
Packet.nTeamID = pPacket->nTeamID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
{
|
||
nRet = pWorldDB->QueryAddDWCTeamMember(pPacket, &Packet);
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Packet, sizeof(Packet));
|
||
|
||
switch(nRet)
|
||
{
|
||
case ERROR_NONE:
|
||
case ERROR_DB_DWC_PERMIT_FAIL:
|
||
case ERROR_DB_DWC_ALREADY_HASTEAM:
|
||
break;
|
||
default:
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_ADD_DWC_TEAMMEMBER:%d] Query Error\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, nRet);
|
||
}
|
||
}
|
||
else
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_ADD_DWC_TEAMMEMBER] pWorldDB not found\r\n", pPacket->nAccountDBID);
|
||
}
|
||
break;
|
||
case QUERY_DWC_INVITE_MEMBER:
|
||
{
|
||
TQDWCInviteMember *pPacket = (TQDWCInviteMember*)pData;
|
||
TADWCInviteMember Packet;
|
||
memset(&Packet, 0, sizeof(Packet));
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.biCharacterDBID = pPacket->biCharacterDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
{
|
||
Packet.nRetCode = pWorldDB->QueryGetDWCTeamInfoByTeamID(pPacket->nTeamID, &Packet.nTeamID, &Packet.Info);
|
||
if(Packet.nRetCode != ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_DWC_INVITE_MEMBER:%d] Query Error\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, Packet.nRetCode);
|
||
break;
|
||
}
|
||
|
||
if( Packet.nTeamID <= 0 ) //<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
{
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) - sizeof(Packet.Info) - sizeof(Packet.MemberList));
|
||
break;
|
||
}
|
||
|
||
if(pPacket->bNeedMembList) {
|
||
std::vector<TDWCTeamMember> vTeamMember;
|
||
vTeamMember.clear();
|
||
|
||
Packet.nRetCode = pWorldDB->QueryGetDWCTeamMemberList(Packet.nTeamID, vTeamMember);
|
||
if(Packet.nRetCode != ERROR_NONE || vTeamMember.size() == 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_DWC_INVITE_MEMBER:%d] Query Error\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, Packet.nRetCode);
|
||
break;
|
||
}
|
||
|
||
for(std::vector<TDWCTeamMember>::iterator itor = vTeamMember.begin(); itor != vTeamMember.end(); itor++)
|
||
Packet.MemberList[Packet.cMemberCount++] = *itor;
|
||
}
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet) - sizeof(Packet.MemberList) + (sizeof(Packet.MemberList[0])*Packet.cMemberCount) );
|
||
}
|
||
else
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_DWC_INVITE_MEMBER] pWorldDB not found\r\n", pPacket->nAccountDBID);
|
||
}
|
||
break;
|
||
case QUERY_DEL_DWC_TEAMMEMBER:
|
||
{
|
||
TQDelDWCTeamMember *pPacket = (TQDelDWCTeamMember*)pData;
|
||
TADelDWCTeamMember Packet;
|
||
memset(&Packet, 0, sizeof(Packet));
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.nTeamID = pPacket->nTeamID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
{
|
||
nRet = pWorldDB->QueryDelDWCTeamMember(pPacket, &Packet);
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Packet, sizeof(Packet));
|
||
|
||
switch(nRet)
|
||
{
|
||
case ERROR_NONE:
|
||
case ERROR_DB_DWC_USER_NOT_FOUND:
|
||
break;
|
||
default:
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_DEL_DWC_TEAMMEMBER:%d] Query Error\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, nRet);
|
||
}
|
||
}
|
||
else
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_DEL_DWC_TEAMMEMBER] pWorldDB not found\r\n", pPacket->nAccountDBID);
|
||
}
|
||
break;
|
||
case QUERY_GET_DWC_TEAMINFO:
|
||
{
|
||
TQGetDWCTeamInfo *pPacket = (TQGetDWCTeamInfo*)pData;
|
||
TAGetDWCTeamInfo Packet;
|
||
memset(&Packet, 0, sizeof(Packet));
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
{
|
||
//Packet.nRetCode = pWorldDB->QueryGetDWCTeamInfo(pPacket, &Packet);
|
||
Packet.nRetCode = pWorldDB->QueryGetDWCTeamInfo(pPacket->biCharacterDBID, &Packet.nTeamID, &Packet.Info);
|
||
if(Packet.nRetCode != ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_GET_DWC_TEAMINFO:%d] Query Error\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, Packet.nRetCode);
|
||
break;
|
||
}
|
||
|
||
if( Packet.nTeamID <= 0 ) //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ȵǾ<C8B5> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet)-sizeof(TDWCTeam));
|
||
else
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet));
|
||
|
||
if(Packet.nTeamID >= 0 && pPacket->bNeedMembList) {
|
||
TAGetDWCTeamMember DWCTeamMember;
|
||
memset(&DWCTeamMember, 0, sizeof(DWCTeamMember));
|
||
|
||
std::vector<TDWCTeamMember> vTeamMember;
|
||
vTeamMember.clear();
|
||
|
||
DWCTeamMember.nRetCode = pWorldDB->QueryGetDWCTeamMemberList(Packet.nTeamID, vTeamMember);
|
||
DWCTeamMember.nAccountDBID = pPacket->nAccountDBID;
|
||
DWCTeamMember.nTeamID = Packet.nTeamID;
|
||
|
||
for(std::vector<TDWCTeamMember>::iterator itor = vTeamMember.begin(); itor != vTeamMember.end(); itor++)
|
||
DWCTeamMember.MemberList[DWCTeamMember.cCount++] = *itor;
|
||
|
||
int nSize = (sizeof(TAGetDWCTeamMember) - sizeof(DWCTeamMember.MemberList)) + (sizeof(DWCTeamMember.MemberList[0]) * DWCTeamMember.cCount);
|
||
m_pConnection->AddSendData(nMainCmd, QUERY_GET_DWC_TEAMMEMBER, reinterpret_cast<char*>(&DWCTeamMember), nSize);
|
||
|
||
if(DWCTeamMember.nRetCode != ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u CDBID:%lld] [QUERY_GET_DWC_TEAMMEMBER:%d] Query Error\r\n", pPacket->nAccountDBID, pPacket->biCharacterDBID, DWCTeamMember.nRetCode);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, pPacket->biCharacterDBID, 0, L"[ADBID:%u] [QUERY_GET_DWC_TEAMINFO] pWorldDB not found\r\n", pPacket->nAccountDBID);
|
||
}
|
||
break;
|
||
case QUERY_ADD_DWC_RESULT:
|
||
{
|
||
TQAddPvPDWCResult *pPacket = (TQAddPvPDWCResult*)pData;
|
||
TAAddPvPDWCResult Packet;
|
||
memset(&Packet, 0, sizeof(Packet));
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nAccountDBID = pPacket->nAccountDBID;
|
||
Packet.nRoomID = pPacket->nRoomID;
|
||
Packet.nTeamID = pPacket->nTeamID;
|
||
Packet.DWCScore.nDWCPoint = pPacket->nDWCGradePoint;
|
||
Packet.DWCScore.nHiddenDWCPoint = pPacket->nHiddenDWCGradePoint;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
{
|
||
Packet.nRetCode = pWorldDB->QueryAddDWCResult(pPacket, &Packet);
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Packet, sizeof(Packet));
|
||
|
||
if(Packet.nRetCode != ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[RoomID:%n TeamID:%u] [QUERY_ADD_DWC_RESULT:%d] Query Error\r\n", pPacket->nRoomID, pPacket->nTeamID, nRet);
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[RoomID:%n TeamID:%u] [QUERY_ADD_DWC_RESULT] pWorldDB not found\r\n", pPacket->nRoomID, pPacket->nTeamID);
|
||
}
|
||
break;
|
||
case QUERY_GET_DWC_SCORELIST:
|
||
{
|
||
TQGetListDWCScore *pPacket = (TQGetListDWCScore*)pData;
|
||
TAGetListDWCScore Packet;
|
||
memset(&Packet, 0, sizeof(Packet));
|
||
|
||
Packet.nRetCode = ERROR_DB;
|
||
Packet.nRoomID = pPacket->nRoomID;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
{
|
||
Packet.nRetCode = pWorldDB->QueryGetDWCTeamInfo(pPacket->biATeamCharacterDBID, &Packet.nATeamID, &Packet.ATeamInfo);
|
||
if(Packet.nRetCode != ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[RoomID:%n CharacterDBID:%lld] [QUERY_GET_DWC_SCORELIST:%d] Query Error\r\n", pPacket->nRoomID, pPacket->biATeamCharacterDBID, Packet.nRetCode);
|
||
break;
|
||
}
|
||
|
||
Packet.nRetCode = pWorldDB->QueryGetDWCTeamInfo(pPacket->biBTeamCharacterDBID, &Packet.nBTeamID, &Packet.BTeamInfo);
|
||
if(Packet.nRetCode != ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[RoomID:%n CharacterDBID:%lld] [QUERY_GET_DWC_SCORELIST:%d] Query Error\r\n", pPacket->nRoomID, pPacket->biATeamCharacterDBID, Packet.nRetCode);
|
||
break;
|
||
}
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&Packet), sizeof(Packet));
|
||
}
|
||
else
|
||
g_Log.Log(LogType::_ERROR, pPacket->cWorldSetID, pPacket->nAccountDBID, 0, 0, L"[RoomID:%n ACharacterDBID:%lld, BCharacterDBID:%lld] [QUERY_GET_DWC_SCORELIST] pWorldDB not found\r\n", pPacket->nRoomID, pPacket->biATeamCharacterDBID, pPacket->biATeamCharacterDBID);
|
||
}
|
||
break;
|
||
case QUERY_GET_DWC_RANKLIST:
|
||
{
|
||
TQGetDWCRankPage * pPacket = (TQGetDWCRankPage*)pData;
|
||
TAGetDWCRankPage packet;
|
||
memset(&packet, 0, sizeof(TAGetDWCRankPage));
|
||
|
||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||
packet.nRetCode = ERROR_DB;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
nRet = pWorldDB->QueryGetDWCRankList(pPacket, &packet);
|
||
|
||
packet.nRetCode = nRet;
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&packet), sizeof(packet) - sizeof(packet.RankList) + (sizeof(TDWCRankData) * packet.nPageSize));
|
||
}
|
||
break;
|
||
case QUERY_GET_DWC_FINDRANK:
|
||
{
|
||
TQGetDWCFindRank* pPacket = (TQGetDWCFindRank*)pData;
|
||
TAGetDWCFindRank packet;
|
||
memset(&packet, 0, sizeof(TQGetDWCFindRank));
|
||
|
||
packet.nAccountDBID = pPacket->nAccountDBID;
|
||
packet.nRetCode = ERROR_DB;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if (pWorldDB)
|
||
nRet = pWorldDB->QueryGetDWCFindRank(pPacket, &packet);
|
||
|
||
packet.nRetCode = nRet;
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&packet), sizeof(packet));
|
||
}
|
||
break;
|
||
case QUERY_GET_DWC_CHANNELINFO:
|
||
{
|
||
TQGetDWCChannelInfo * pPacket = (TQGetDWCChannelInfo*)pData;
|
||
|
||
TAGetDWCChannelInfo packet;
|
||
memset(&packet, 0, sizeof(TAGetDWCChannelInfo));
|
||
|
||
packet.nRetCode = ERROR_DB;
|
||
|
||
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pPacket->cWorldSetID);
|
||
if(pWorldDB)
|
||
packet.nRetCode = pWorldDB->QueryGetDWCChannelInfo(&packet.ChannelInfo);
|
||
|
||
m_pConnection->AddSendData(nMainCmd, nSubCmd, reinterpret_cast<char*>(&packet), sizeof(packet));
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
#endif // #if defined( PRE_ADD_DWC )
|