DragonNest/Server/GuildWarDBSetting/DNSQLWorldGuildWar.cpp
2024-12-19 09:48:26 +08:00

178 lines
No EOL
6.1 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "Stdafx.h"
#include "DNSQLWorldGuildWar.h"
#include "TimeSet.h"
CDNSQLWorldGuildWar::CDNSQLWorldGuildWar(void): CSQLConnection()
{
}
CDNSQLWorldGuildWar::~CDNSQLWorldGuildWar(void)
{
}
// ½ºÄÉÁì ¼ÂÆÃ
int CDNSQLWorldGuildWar::QueryAddGuildWarSchedule( std::vector<std::string>& vSplit, int nScheduleID )
{
CTimeSet tPreparation(vSplit[0].c_str(), true);
CTimeSet tTrial(vSplit[1].c_str(), true);
CTimeSet tReward(vSplit[2].c_str(), true);
CTimeSet tPreparationEnd(tTrial);
tPreparationEnd.AddSecond(-30);
CTimeSet tTrialEnd(tReward);
tTrialEnd.AddSecond(-30);
CTimeSet tRewardEnd(vSplit[3].c_str(), true);
if (CheckConnect() < ERROR_NONE){
return ERROR_DB;
}
SQLRETURN RetCode;
SQLLEN cblen;
CDNSqlLen SqlLen[8];
int nResult = ERROR_DB, sqlparam = 0;
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddGuildWarSchedule('%d',?,?,?,?,?,?,2)}", nScheduleID);
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
{
DBTIMESTAMP temp[6] = {0,};
int nNo = 1;
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
temp[0] = tPreparation.GetDbTimeStamp();
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &temp[0], sizeof(DBTIMESTAMP), SqlLen[0].Get(SQL_TIMESTAMP_LEN));
temp[1] = tPreparationEnd.GetDbTimeStamp();
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &temp[1], sizeof(DBTIMESTAMP), SqlLen[1].Get(SQL_TIMESTAMP_LEN));
temp[2] = tTrial.GetDbTimeStamp();
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &temp[2], sizeof(DBTIMESTAMP), SqlLen[2].Get(SQL_TIMESTAMP_LEN));
temp[3] = tTrialEnd.GetDbTimeStamp();
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &temp[3], sizeof(DBTIMESTAMP), SqlLen[3].Get(SQL_TIMESTAMP_LEN));
temp[4] = tReward.GetDbTimeStamp();
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &temp[4], sizeof(DBTIMESTAMP), SqlLen[4].Get(SQL_TIMESTAMP_LEN));
temp[5] = tRewardEnd.GetDbTimeStamp();
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &temp[5], sizeof(DBTIMESTAMP), SqlLen[5].Get(SQL_TIMESTAMP_LEN));
RetCode = SQLExecute(m_hstmt);
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
return ERROR_DB;
}
CTimeSet tFinalStart = tReward;
CTimeSet tFinalEnd = tReward;
//tFinalEnd¿¡¼­ 10ºÐ ´õÇϱâ..(Åë°è³¾ ½Ã°£ ¿©À¯ ÁÖÀÚ)
tFinalEnd.AddSecond(10*60);
// º»¼± ±â°£ ¼ÂÆÃ
for( int i=4; i>0; --i)
{
CDNSqlLen SqlLentemp[2];
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddGuildWarFinalSchedule('%d','%d',?,?)}", nScheduleID, i);
tFinalStart = tFinalEnd;
tFinalStart.AddSecond(60);
tFinalEnd.AddSecond(38*60);
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
{
DBTIMESTAMP temp[6] = {0,};
int nNo = 1;
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
temp[0] = tFinalStart.GetDbTimeStamp();
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &temp[0], sizeof(DBTIMESTAMP), SqlLentemp[0].Get(SQL_TIMESTAMP_LEN));
temp[1] = tFinalEnd.GetDbTimeStamp();
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &temp[1], sizeof(DBTIMESTAMP), SqlLentemp[1].Get(SQL_TIMESTAMP_LEN));
RetCode = SQLExecute(m_hstmt);
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
return ERROR_DB;
}
}
return nResult;
}
// ±æµåÀü¿¹¼±³»¿ë ÃʱâÈ­(ÁÖÀÇ..¹Ì¼ÇÁ¡¼ö, Åë°è ÃʱâÈ­µÊ)
int CDNSQLWorldGuildWar::QueryInitGuildWarTrial()
{
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_DelGuildWarOpeningPointRecord}" );
return CommonReturnValueQuery(m_wszQuery);
}
// ÀαâÅõÇ¥ÃʱâÈ­
int CDNSQLWorldGuildWar::QueryInitGuildWarVote(const char* strCharName)
{
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_CheatGuildWarPopularityVoteClear(N'%S')}", strCharName );
return CommonReturnValueQuery(m_wszQuery);
}
// ¿¹¼±Åë°è³»±â
int CDNSQLWorldGuildWar::QuerySetGuildWarStats()
{
int nRetCode = ERROR_DB;
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddGuildWarOpeningPointTotal}" );
nRetCode = CommonReturnValueQuery(m_wszQuery);
if( nRetCode != ERROR_NONE)
return nRetCode;
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddGuildWarOpeningPointDailyTotal}" );
nRetCode = CommonReturnValueQuery(m_wszQuery);
if( nRetCode != ERROR_NONE)
return nRetCode;
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddGuildWarOpeningPointGuildTotal}" );
return CommonReturnValueQuery(m_wszQuery);
}
// ¿¹¼± º¸»ó ÃʱâÈ­(°³ÀÎ)
int CDNSQLWorldGuildWar::QueryInitGuildWarRewardCharacter(const char* strCharName)
{
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_CheatGuildWarRewardForCharactercClear(N'%S')}", strCharName );
return CommonReturnValueQuery(m_wszQuery);
}
// ¿¹¼± º¸»ó ÃʱâÈ­(±æµå)
int CDNSQLWorldGuildWar::QueryInitGuildWarRewardGuild(const char* strGuildName)
{
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_CheatGuildWarRewardForGuildClear(N'%S')}", strGuildName );
return CommonReturnValueQuery(m_wszQuery);
}
// º»¼± º¸»ó¹Þ±â Áö±Þ
int CDNSQLWorldGuildWar::QuerySetGuildWarRewardFinal()
{
int nRetCode = ERROR_DB;
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_SendGuildWarPointQueue}" );
nRetCode = CommonReturnValueQuery(m_wszQuery);
if( nRetCode != ERROR_NONE)
return nRetCode;
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
swprintf(m_wszQuery, L"{?=CALL dbo.P_SendGuildWarSystemMailQueue}" );
return CommonReturnValueQuery(m_wszQuery);
}