Files
Leviathan/Server/GameServer/Game/Db/DB_Ranking.cpp
T
2026-06-01 12:46:52 +02:00

92 lines
2.9 KiB
C++

#include <atlcomtime.h>
#include <toolkit/XConsole.h>
#include "DB_Commands.h"
#include "GameDBUtil.h"
#include "RankingManager.h"
bool DB_SetRankingScore::onProcess( DBConnection & db )
{
_CommandPtr cmd;
if( db.CreateCommand( cmd ) == false ) throw XException( "DB_SetRankingScore : CreateInstance(command) error" );
cmd->CommandType = adCmdStoredProc;
cmd->CommandText = _bstr_t( "dbo.smp_set_ranking_score" );
// Store the name of current stored-procedure for debugging
szStoredProcedureName = "dbo.smp_set_ranking_score";
cmd->Parameters->Append( cmd->CreateParameter( "IN_RANKING_ID", adInteger, adParamInput, 4, m_nRankingType ) );
cmd->Parameters->Append( cmd->CreateParameter( "IN_OWNER_ID", adInteger, adParamInput, 4, m_nPlayerUID ) );
_decimal_variant dvScore;
dvScore.setMultipleInteger( m_fScore.get(), 10000 );
_ParameterPtr paramPtr = cmd->CreateParameter( "IN_SCORE", adDecimal, adParamInput, sizeof( DECIMAL ), dvScore );
paramPtr->NumericScale = 4;
paramPtr->Precision = 18;
cmd->Parameters->Append( paramPtr );
cmd->Execute(NULL,NULL,adCmdStoredProc);
return true;
}
void DB_SetRankingScore::onEnd( bool bIsCancel )
{
RankingManager::Instance().onEndQuery();
delete this;
}
bool DB_InvalidateRankingScore::onProcess( DBConnection &db )
{
_CommandPtr cmd;
if( db.CreateCommand( cmd ) == false ) throw XException( "DB_InvalidateRankingScore : CreateInstance(command) error" );
cmd->CommandType = adCmdStoredProc;
cmd->CommandText = _bstr_t( "dbo.smp_invalidate_ranking_score" );
// Store the name of current stored-procedure for debugging
szStoredProcedureName = "dbo.smp_invalidate_ranking_score";
cmd->Parameters->Append( cmd->CreateParameter( "IN_RANKING_ID", adInteger, adParamInput, 4, m_nRankingType ) );
cmd->Parameters->Append( cmd->CreateParameter( "IN_OWNER_ID", adInteger, adParamInput, 4, m_nPlayerUID ) );
cmd->Execute(NULL,NULL,adCmdStoredProc);
return true;
}
void DB_InvalidateRankingScore::onEnd( bool bIsCancel )
{
RankingManager::Instance().onEndQuery();
delete this;
}
bool DB_SettleRanking::onProcess( DBConnection & db )
{
_CommandPtr cmd;
if( db.CreateCommand( cmd ) == false ) throw XException( "DB_SetRankingScore : CreateInstance(command) error" );
cmd->CommandType = adCmdStoredProc;
cmd->CommandText = _bstr_t( "dbo.smp_settle_ranking" );
// Store the name of current stored-procedure for debugging
szStoredProcedureName = "dbo.smp_settle_ranking";
cmd->Parameters->Append( cmd->CreateParameter( "IN_RANKING_ID", adInteger, adParamInput, 4, m_nRankingType ) );
COleDateTime dtNextSettling( m_tNextSettling );
cmd->Parameters->Append( cmd->CreateParameter( "IN_NEXT_SETTLING_TIME", adDate, adParamInput, sizeof( DATE ), static_cast< DATE >( dtNextSettling ) ) );
cmd->Execute(NULL,NULL,adCmdStoredProc);
return true;
}
void DB_SettleRanking::onEnd( bool bIsCancel )
{
RankingManager::Instance().onEndQuery();
delete this;
}