560 lines
20 KiB
C++
560 lines
20 KiB
C++
|
|
#include "StdAfx.h"
|
|||
|
|
#include "DNMarketTask.h"
|
|||
|
|
#include "DNConnection.h"
|
|||
|
|
#include "DNSQLConnectionManager.h"
|
|||
|
|
#include "DNSQLMembership.h"
|
|||
|
|
#include "DNSQLWorld.h"
|
|||
|
|
#include "DNExtManager.h"
|
|||
|
|
#include "Log.h"
|
|||
|
|
|
|||
|
|
CDNMarketTask::CDNMarketTask(CDNConnection* pConnection)
|
|||
|
|
: CDNMessageTask(pConnection)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDNMarketTask::~CDNMarketTask(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDNMarketTask::OnRecvMessage(int nThreadID, int nMainCmd, int nSubCmd, char* pData)
|
|||
|
|
{
|
|||
|
|
CDNSQLMembership *pMembershipDB = NULL;
|
|||
|
|
CDNSQLWorld *pWorldDB = NULL;
|
|||
|
|
int nRet = ERROR_DB;
|
|||
|
|
TQHeader *pHeader = (TQHeader*)pData;
|
|||
|
|
if( pHeader->nAccountDBID > 0)
|
|||
|
|
{
|
|||
|
|
if( g_pSPErrorCheckManager->bIsError(pHeader->nAccountDBID) == true )
|
|||
|
|
{
|
|||
|
|
//g_Log.Log(LogType::_ERROR, pHeader->cWorldSetID, pHeader->nAccountDBID, 0, 0, L"[SP_ERRORCHECK] Main:%d, Sub:%d\r\n", nMainCmd, nSubCmd);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
switch (nSubCmd)
|
|||
|
|
{
|
|||
|
|
case QUERY_GETPAGETRADE:
|
|||
|
|
{
|
|||
|
|
TQGetPageTrade *pMarket = (TQGetPageTrade*)pData;
|
|||
|
|
|
|||
|
|
TAGetPageTrade Market;
|
|||
|
|
memset(&Market, 0, sizeof(TAGetPageTrade));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryGetPageTrade(pMarket, &Market);
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETPAGETRADE:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETPAGETRADE:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_GETCOUNTTRADE:
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_GETLISTMYTRADE:
|
|||
|
|
{
|
|||
|
|
TQGetListMyTrade *pMarket = (TQGetListMyTrade*)pData;
|
|||
|
|
|
|||
|
|
TAGetListMyTrade Market;
|
|||
|
|
memset(&Market, 0, sizeof(TAGetListMyTrade));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryGetListMyTrade(pMarket, &Market);
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTMYTRADE:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTMYTRAD:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_GETCOUNTMYTRADE:
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_ADDTRADE:
|
|||
|
|
{
|
|||
|
|
TQAddTrade *pMarket = (TQAddTrade*)pData;
|
|||
|
|
|
|||
|
|
TAAddTrade Market;
|
|||
|
|
memset(&Market, 0, sizeof(TAAddTrade));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
Market.cInvenIndex = pMarket->cInvenIndex;
|
|||
|
|
Market.wCount = pMarket->wCount;
|
|||
|
|
Market.nPrice = pMarket->nPrice;
|
|||
|
|
Market.cInvenType = pMarket->cInvenType;
|
|||
|
|
Market.biSerial = pMarket->nSerial;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryAddTrade(pMarket, &Market);
|
|||
|
|
|
|||
|
|
switch (Market.nRetCode)
|
|||
|
|
{
|
|||
|
|
case ERROR_NONE:
|
|||
|
|
case 103169: // <20>ŷ<EFBFBD><C5B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ƚ<><C8BD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD><CAB0>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
case 103186: // <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ŷ<EFBFBD><C5B7>ҿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Ƚ<><C8BD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD><CAB0>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_ADDTRADE:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_ADDTRADE:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_CANCELTRADE:
|
|||
|
|
{
|
|||
|
|
TQCancelTrade *pMarket = (TQCancelTrade*)pData;
|
|||
|
|
|
|||
|
|
TACancelTrade Market;
|
|||
|
|
memset(&Market, 0, sizeof(TACancelTrade));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
Market.nMarketDBID = pMarket->nMarketDBID;
|
|||
|
|
Market.cInvenSlotIndex = pMarket->cInvenSlotIndex;
|
|||
|
|
Market.bCashItem = pMarket->bCashItem;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryCancelTrade(pMarket, &Market);
|
|||
|
|
Market.Item.bEternity = true;
|
|||
|
|
Market.Item.nLifespan = LIFESPANMAX;
|
|||
|
|
if (Market.bCashItem) Market.Item.bSoulbound = true;
|
|||
|
|
|
|||
|
|
switch (Market.nRetCode)
|
|||
|
|
{
|
|||
|
|
case ERROR_NONE:
|
|||
|
|
case 103173: // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.
|
|||
|
|
case 103174: // <20>̹<EFBFBD> <20>ȸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_CANCELTRADE:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_CANCELTRADE:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_BUYTRADEITEM:
|
|||
|
|
{
|
|||
|
|
#if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM)
|
|||
|
|
TQBuyTradeItem *pMarket = (TQBuyTradeItem*)pData;
|
|||
|
|
|
|||
|
|
TABuyTradeItem Market;
|
|||
|
|
memset(&Market, 0, sizeof(TABuyTradeItem));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
Market.nMarketDBID = pMarket->nMarketDBID;
|
|||
|
|
Market.cInvenSlotIndex = pMarket->cInvenSlotIndex;
|
|||
|
|
Market.bMini = pMarket->bMini;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
TAGetTradeItemID Trade;
|
|||
|
|
memset(&Trade, 0, sizeof(TAGetTradeItemID));
|
|||
|
|
Trade.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Trade.nMarketDBID = pMarket->nMarketDBID;
|
|||
|
|
|
|||
|
|
Trade.nRetCode = pWorldDB->QueryGetTradeItemID(pMarket->nMarketDBID, &Trade);
|
|||
|
|
|
|||
|
|
if (Trade.nRetCode == ERROR_NONE){
|
|||
|
|
pMarket->bCashItem = g_pExtManager->IsCashItem(Trade.nMarketItemID);
|
|||
|
|
if ((!pMarket->bCashItem) && (Market.cInvenSlotIndex == (BYTE)-1)){
|
|||
|
|
Market.nRetCode = ERROR_ITEM_INVENTORY_NOTENOUGH;
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_PETALTRADE)
|
|||
|
|
if (Trade.cMethodCode != DBDNWorldDef::PayMethodCode::Petal)
|
|||
|
|
Trade.nPrice = 0;
|
|||
|
|
|
|||
|
|
// <20><>Ż<EFBFBD><C5BB>ǰ<EFBFBD≯<EFBFBD> <20><>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|||
|
|
if( Trade.nPrice > 0)
|
|||
|
|
{
|
|||
|
|
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
|||
|
|
|
|||
|
|
if (pMembershipDB)
|
|||
|
|
Market.nRetCode = pMembershipDB->QueryPurchaseTradeItemByPetal(pMarket->biCharacterDBID, Trade.nPrice);
|
|||
|
|
else
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_BUYTRADEITEM] MemberShipDB not found\r\n", pMarket->nAccountDBID);
|
|||
|
|
|
|||
|
|
if( Market.nRetCode != ERROR_NONE )
|
|||
|
|
{
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
Market.nRetCode = pWorldDB->QueryBuyTradeItem(pMarket, &Market);
|
|||
|
|
Market.Item.bEternity = true;
|
|||
|
|
Market.Item.nLifespan = LIFESPANMAX;
|
|||
|
|
if (pMarket->bCashItem) Market.Item.bSoulbound = true;
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
{
|
|||
|
|
switch (Market.nRetCode)
|
|||
|
|
{
|
|||
|
|
case 103174: // <20>̹<EFBFBD> <20>ȸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
case 103175: // <20><><EFBFBD>ϵǾ<CFB5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
case 103325: // <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_BUYTRADEITEM:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_PETALTRADE)
|
|||
|
|
if( Trade.nPrice > 0 )
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD>⼭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ż <20><><EFBFBD><EFBFBD>
|
|||
|
|
int nTotalPetal = 0;
|
|||
|
|
int nRetCode = ERROR_DB;
|
|||
|
|
if (pMembershipDB)
|
|||
|
|
nRetCode = pMembershipDB->QueryAddPetalIncome(pMarket->biCharacterDBID, 0, Trade.nPrice, nTotalPetal, true);
|
|||
|
|
|
|||
|
|
if( nRetCode != ERROR_NONE )
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>å<EFBFBD><C3A5><EFBFBD><EFBFBD>..
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_BUYTRADEITEM] AddPetal Fail Petal:%d \r\n", pMarket->nAccountDBID, Trade.nPrice);
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETTRADEITEMID:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
Market.nRetCode = Trade.nRetCode;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_BUYTRADEITEM:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
|
|||
|
|
#else // #if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM)
|
|||
|
|
TQBuyTradeItem *pMarket = (TQBuyTradeItem*)pData;
|
|||
|
|
|
|||
|
|
TABuyTradeItem Market;
|
|||
|
|
memset(&Market, 0, sizeof(TABuyTradeItem));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
Market.nMarketDBID = pMarket->nMarketDBID;
|
|||
|
|
Market.cInvenSlotIndex = pMarket->cInvenSlotIndex;
|
|||
|
|
#if defined(PRE_ADD_PETALTRADE)
|
|||
|
|
// <20><>Ż<EFBFBD><C5BB>ǰ<EFBFBD≯<EFBFBD> <20><>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
|||
|
|
if( pMarket->nPetalPrice > 0)
|
|||
|
|
{
|
|||
|
|
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
|||
|
|
|
|||
|
|
if (pMembershipDB)
|
|||
|
|
Market.nRetCode = pMembershipDB->QueryPurchaseTradeItemByPetal(pMarket->biCharacterDBID, pMarket->nPetalPrice);
|
|||
|
|
else
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_BUYTRADEITEM] MemberShipDB not found\r\n", pMarket->nAccountDBID);
|
|||
|
|
|
|||
|
|
if( Market.nRetCode != ERROR_NONE )
|
|||
|
|
{
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB)
|
|||
|
|
{
|
|||
|
|
Market.nRetCode = pWorldDB->QueryBuyTradeItem(pMarket, &Market);
|
|||
|
|
Market.Item.bEternity = true;
|
|||
|
|
Market.Item.nLifespan = LIFESPANMAX;
|
|||
|
|
if (pMarket->bCashItem) Market.Item.bSoulbound = true;
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
{
|
|||
|
|
switch (Market.nRetCode)
|
|||
|
|
{
|
|||
|
|
case 103174: // <20>̹<EFBFBD> <20>ȸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
case 103175: // <20><><EFBFBD>ϵǾ<CFB5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|||
|
|
case 103325: // <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_BUYTRADEITEM:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_PETALTRADE)
|
|||
|
|
if( pMarket->nPetalPrice > 0 )
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD>⼭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ż <20><><EFBFBD><EFBFBD>
|
|||
|
|
int nTotalPetal = 0;
|
|||
|
|
int nRetCode = ERROR_DB;
|
|||
|
|
if (pMembershipDB)
|
|||
|
|
nRetCode = pMembershipDB->QueryAddPetalIncome(pMarket->biCharacterDBID, 0, pMarket->nPetalPrice, nTotalPetal, true);
|
|||
|
|
|
|||
|
|
if( nRetCode != ERROR_NONE )
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>å<EFBFBD><C3A5><EFBFBD><EFBFBD>..
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_BUYTRADEITEM] AddPetal Fail Petal:%d \r\n", pMarket->nAccountDBID, pMarket->nPetalPrice);
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_BUYTRADEITEM:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
#endif // #if defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM)
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_GETLISTTRADEFORCALCULATION:
|
|||
|
|
{
|
|||
|
|
TQGetListTradeForCalculation *pMarket = (TQGetListTradeForCalculation*)pData;
|
|||
|
|
|
|||
|
|
TAGetListTradeForCalculation Market;
|
|||
|
|
memset(&Market, 0, sizeof(TAGetListTradeForCalculation));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryGetListTradeForCalculation(pMarket, &Market);
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTTRADEFORCALCULATION:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTTRADEFORCALCULATION:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_GETCOUNTTRADEFORCALCULATION:
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_TRADECALCULATE:
|
|||
|
|
{
|
|||
|
|
TQTradeCalculate *pMarket = (TQTradeCalculate*)pData;
|
|||
|
|
|
|||
|
|
TATradeCalculate Market;
|
|||
|
|
memset(&Market, 0, sizeof(TATradeCalculate));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
Market.nMarketDBID = pMarket->nMarketDBID;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB)
|
|||
|
|
{
|
|||
|
|
Market.nRetCode = pWorldDB->QueryTradeCalculate(pMarket, &Market);
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TRADECALCULATE:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
#if defined(PRE_ADD_PETALTRADE)
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if( Market.cPayMethodCode == DBDNWorldDef::PayMethodCode::Petal)
|
|||
|
|
{
|
|||
|
|
//<2F><>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><>Ż<EFBFBD><C5BB> <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>.
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
|||
|
|
int nTotalPetal = 0;
|
|||
|
|
if (pMembershipDB)
|
|||
|
|
Market.nRetCode = pMembershipDB->QueryAddPetalIncome(pMarket->biCharacterDBID, 0, Market.nCalculatePrice, nTotalPetal, true);
|
|||
|
|
else
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TRADECALCULATE] MemberShipDB not found\r\n", pMarket->nAccountDBID);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TRADECALCULATE:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_TRADECALCULATEALL:
|
|||
|
|
{
|
|||
|
|
TQTradeCalculateAll *pMarket = (TQTradeCalculateAll*)pData;
|
|||
|
|
|
|||
|
|
TATradeCalculateAll Market;
|
|||
|
|
memset(&Market, 0, sizeof(TATradeCalculateAll));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryTradeCalculateAll(pMarket, &Market);
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TRADECALCULATEALL:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
#if defined(PRE_ADD_PETALTRADE)
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if( Market.nCalculatePetal > 0) // <20><>Ż <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
//<2F><>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><>Ż<EFBFBD><C5BB> <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>.
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
|||
|
|
int nTotalPetal = 0;
|
|||
|
|
if (pMembershipDB)
|
|||
|
|
Market.nRetCode = pMembershipDB->QueryAddPetalIncome(pMarket->biCharacterDBID, 0, Market.nCalculatePetal, nTotalPetal, true);
|
|||
|
|
else
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TRADECALCULATEALL] MemberShipDB not found\r\n", pMarket->nAccountDBID);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_TRADECALCULATEALL:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
#if !defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM)
|
|||
|
|
case QUERY_GETTRADEITEMID:
|
|||
|
|
{
|
|||
|
|
TQGetTradeItemID *pMarket = (TQGetTradeItemID*)pData;
|
|||
|
|
|
|||
|
|
TAGetTradeItemID Market;
|
|||
|
|
memset(&Market, 0, sizeof(TAGetTradeItemID));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nMarketDBID = pMarket->nMarketDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryGetTradeItemID(pMarket->nMarketDBID, &Market);
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETTRADEITEMID:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETTRADEITEMID:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
#endif // #if !defined(PRE_ADD_DIRECT_BUY_UPGRADEITEM)
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_PETALTRADE)
|
|||
|
|
case QUERY_GETPETALBALANCE :
|
|||
|
|
{
|
|||
|
|
TQHeader *pMarket = (TQHeader*)pData;
|
|||
|
|
|
|||
|
|
TAGetPetalBalance Market;
|
|||
|
|
memset(&Market, 0, sizeof(TAGetPetalBalance));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
pMembershipDB = g_SQLConnectionManager.FindMembershipDB(nThreadID);
|
|||
|
|
if (pMembershipDB)
|
|||
|
|
Market.nRetCode = pMembershipDB->QueryGetPetalBalance(pMarket->nAccountDBID, Market.nPetalBalance );
|
|||
|
|
else
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETPETALBALANCE] MemberShipDB not found\r\n", pMarket->nAccountDBID);
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
#endif
|
|||
|
|
case QUERY_GETTRADEPRICE:
|
|||
|
|
{
|
|||
|
|
TQGetTradePrice *pMarket = (TQGetTradePrice*)pData;
|
|||
|
|
|
|||
|
|
TAGetTradePrice Market;
|
|||
|
|
memset(&Market, 0, sizeof(TAGetTradePrice));
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nItemID = pMarket->nItemID;
|
|||
|
|
Market.cLevel = pMarket->cLevel;
|
|||
|
|
Market.cOption = pMarket->cOption;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryGetTradePrice(pMarket, &Market);
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETTRADEPRICE:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETTRADEPRICE:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case QUERY_GETLISTMINITRADE:
|
|||
|
|
{
|
|||
|
|
#if defined( PRE_ADD_DIRECT_BUY_UPGRADEITEM )
|
|||
|
|
TQGetListMiniTrade *pMarket = (TQGetListMiniTrade*)pData;
|
|||
|
|
|
|||
|
|
TAGetListMiniTrade Market;
|
|||
|
|
memset(&Market, 0, sizeof(TAGetListMiniTrade));
|
|||
|
|
|
|||
|
|
Market.nAccountDBID = pMarket->nAccountDBID;
|
|||
|
|
Market.nRetCode = ERROR_DB;
|
|||
|
|
|
|||
|
|
pWorldDB = g_SQLConnectionManager.FindWorldDB(nThreadID, pMarket->cWorldSetID);
|
|||
|
|
if (pWorldDB){
|
|||
|
|
Market.nRetCode = pWorldDB->QueryGetListMiniTrade(pMarket, &Market);
|
|||
|
|
Market.nMarketTotalCount = Market.cMarketCount;
|
|||
|
|
|
|||
|
|
if (Market.nRetCode != ERROR_NONE)
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTMINITRADE:%d] Result:%d\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID, Market.nRetCode);
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
g_Log.Log(LogType::_ERROR, pMarket->cWorldSetID, pMarket->nAccountDBID, 0, 0, L"[ADBID:%u] [QUERY_GETLISTMINITRADE:%d] pWorldDB not found\r\n", pMarket->nAccountDBID, pMarket->cWorldSetID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pConnection->AddSendData(nMainCmd, nSubCmd, (char*)&Market, sizeof(Market));
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|