3939 lines
No EOL
150 KiB
C++
3939 lines
No EOL
150 KiB
C++
#include "StdAfx.h"
|
||
#include "DNSQLMembership.h"
|
||
#include "DNExtManager.h"
|
||
#include "Log.h"
|
||
#include "Util.h"
|
||
#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
#include "DNLimitedCashItemRepository.h"
|
||
#endif //#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
|
||
CDNSQLMembership::CDNSQLMembership(void): CSQLConnection()
|
||
{
|
||
}
|
||
|
||
CDNSQLMembership::~CDNSQLMembership(void)
|
||
{
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetDatabaseVersion( TDatabaseVersion* pA )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetDatabaseVersion" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log( LogType::_ERROR, L"[QueryGetDatabaseVersion] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetDatabaseVersion}" );
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQLBindParameter( m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindCol( m_hstmt, nNo++, SQL_WCHAR, pA->wszName, sizeof(pA->wszName), &cblen );
|
||
SQLBindCol( m_hstmt, nNo++, SQL_INTEGER, &pA->iVersion, sizeof(int), &cblen );
|
||
CheckColumnCount(nNo, "[Membership]P_GetDatabaseVersion");
|
||
RetCode = SQLFetch(m_hstmt);
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
#if defined(_LOGINSERVER)
|
||
int CDNSQLMembership::QueryLogin(CDNUserConnection *pUserCon, WCHAR *pPassword, BYTE cStep, OUT Login::TQueryLoginOutput &LoginOutput)
|
||
{
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, pUserCon, L"[QueryLogin] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nPublisher = DBDNWorldDef::PublisherCode::Studio;
|
||
#if defined(_KR) || defined(_KRAZ)
|
||
nPublisher = DBDNWorldDef::PublisherCode::KR;
|
||
#elif defined(_CH)
|
||
nPublisher = DBDNWorldDef::PublisherCode::CH;
|
||
#elif defined(_JP)
|
||
nPublisher = DBDNWorldDef::PublisherCode::JP;
|
||
#elif defined(_TW)
|
||
nPublisher = DBDNWorldDef::PublisherCode::TW;
|
||
#elif defined(_US)
|
||
nPublisher = DBDNWorldDef::PublisherCode::US;
|
||
#elif defined(_SG)
|
||
nPublisher = DBDNWorldDef::PublisherCode::SG;
|
||
#elif defined(_TH)
|
||
nPublisher = DBDNWorldDef::PublisherCode::TH;
|
||
#elif defined(_ID)
|
||
nPublisher = DBDNWorldDef::PublisherCode::ID;
|
||
#elif defined(_RU)
|
||
nPublisher = DBDNWorldDef::PublisherCode::RU;
|
||
#elif defined(_KAMO) //[debug] Cash <20><><EFBFBD><EFBFBD>Ҫ <20><><EFBFBD><EFBFBD>ΪTW<54><57>
|
||
nPublisher = DBDNWorldDef::PublisherCode::TW;
|
||
#elif defined(_EU)
|
||
nPublisher = DBDNWorldDef::PublisherCode::EU;
|
||
#endif
|
||
|
||
int nSize = (int)sizeof(TGameOptions);
|
||
BYTE cNewAccount = 0;
|
||
|
||
__time64_t BirthTime;
|
||
time(&BirthTime);
|
||
tm *tm_ptr = localtime(&BirthTime);
|
||
|
||
BYTE szMID[MACHINEIDMAX] = {0,};
|
||
if (pUserCon->m_szMID[0] > 0)
|
||
memcpy_s(szMID, sizeof(szMID), pUserCon->m_szMID, MACHINEIDMAX);
|
||
int nMachineIDSize = sizeof(szMID);
|
||
|
||
char cCreateCharMax = 0;
|
||
#if defined(PRE_MOD_SELECT_CHAR)
|
||
cCreateCharMax = pUserCon->GetAvailableCharacterSlotCount();
|
||
#else // #if defined(PRE_MOD_SELECT_CHAR)
|
||
cCreateCharMax = pUserCon->GetCharacterCountMax();
|
||
#endif // #if defined(PRE_MOD_SELECT_CHAR)
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
CDNSqlLen SqlLen;
|
||
CDNSqlLen SqlLenTime;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
#if defined(PRE_ADD_LOGINLOGOUT_LOG)
|
||
|
||
#ifdef PRE_MOD_RESTRICT_IDENTITY_IP
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_Login(N'%s',N'%s',%d,%d,%d,%d,%d,'%d',N'%s',?,?,?,?,?,?,?,%d,?,%d,?,1,?,?,?,?,?,?)}",
|
||
pUserCon->GetAccountName(), pUserCon->GetwszIp(), pUserCon->GetSessionID(), nPublisher, DailyCreateCharacterMax, cCreateCharMax, pUserCon->m_cGender, (1900 + tm_ptr->tm_year) - pUserCon->GetAge(), pPassword, pUserCon->m_cRegion, cStep);
|
||
#else //#ifdef PRE_MOD_RESTRICT_IDENTITY_IP
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_Login(N'%s',N'%s',%d,%d,%d,%d,%d,'%d',N'%s',?,?,?,?,?,?,?,%d,?,%d,?,0,?,?,?,?,?,?)}",
|
||
pUserCon->GetAccountName(), pUserCon->GetwszIp(), pUserCon->GetSessionID(), nPublisher, DailyCreateCharacterMax, cCreateCharMax, pUserCon->m_cGender, (1900 + tm_ptr->tm_year) - pUserCon->GetAge(), pPassword, pUserCon->m_cRegion, cStep);
|
||
#endif //#ifdef PRE_MOD_RESTRICT_IDENTITY_IP
|
||
|
||
#else
|
||
|
||
#ifdef PRE_MOD_RESTRICT_IDENTITY_IP
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_Login(N'%s',N'%s',%d,%d,%d,%d,%d,'%d',N'%s',?,?,?,?,?,?,?,%d,?,%d,?,1,?,?,?,?,?,?)}",
|
||
pUserCon->GetAccountName(), pUserCon->GetwszIp(), pUserCon->GetSessionID(), nPublisher, DailyCreateCharacterMax, cCreateCharMax, pUserCon->m_cGender, (1900 + tm_ptr->tm_year) - pUserCon->GetAge(), pPassword, pUserCon->m_cRegion, 2);
|
||
#else //#ifdef PRE_MOD_RESTRICT_IDENTITY_IP
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_Login(N'%s',N'%s',%d,%d,%d,%d,%d,'%d',N'%s',?,?,?,?,?,?,?,%d,?,%d,?,0,?,?,?,?,?,?)}",
|
||
pUserCon->GetAccountName(), pUserCon->GetwszIp(), pUserCon->GetSessionID(), nPublisher, DailyCreateCharacterMax, cCreateCharMax, pUserCon->m_cGender, (1900 + tm_ptr->tm_year) - pUserCon->GetAge(), pPassword, pUserCon->m_cRegion, 2);
|
||
#endif //#ifdef PRE_MOD_RESTRICT_IDENTITY_IP
|
||
|
||
#endif // #if defined(PRE_ADD_LOGINLOGOUT_LOG)
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
UINT nUserNo = 0;
|
||
BYTE cCharCountMax = 0;
|
||
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(BYTE), 0, &cNewAccount, sizeof(BYTE), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(UINT), 0, &LoginOutput.nAccountDBID, sizeof(UINT), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &pUserCon->m_cAccountLevel, sizeof(char), &cblen);
|
||
cblen = SQL_LEN_DATA_AT_EXEC(nSize);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_BINARY, SQL_BINARY, sizeof(TGameOptions), 0, &pUserCon->m_GameOptions, sizeof(TGameOptions), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(BYTE), 0, &pUserCon->m_cDailyCreateCount, sizeof(BYTE), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(BYTE), 0, &cCharCountMax, sizeof(BYTE), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_BINARY, SQL_BINARY, sizeof(szMID), 0, szMID, sizeof(szMID), SqlLen.Get(nMachineIDSize));
|
||
|
||
CDNSqlLen PartnerCodeLen;
|
||
BYTE cPartnerID = 0;
|
||
cPartnerID = static_cast<BYTE>(pUserCon->GetPartnerType());
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cPartnerID, sizeof(char), PartnerCodeLen.GetNull(cPartnerID<=0,sizeof(char)));
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(UINT), 0, &nUserNo, sizeof(UINT), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &LoginOutput.LogOutDate, sizeof(TIMESTAMP_STRUCT), SqlLenTime.Get(SQL_TIMESTAMP_LEN));
|
||
bool bAuthMobile;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_BIT, SQL_BIT, sizeof(bool), 0, &bAuthMobile, sizeof(bool), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(BYTE), 0, &pUserCon->m_cCharacterSortCode, sizeof(BYTE), &cblen);
|
||
|
||
bool bReConnectReward = false;
|
||
TIMESTAMP_STRUCT RegistDate;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_BIT, SQL_BIT, sizeof(bool), 0, &bReConnectReward, sizeof(bool), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &RegistDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
|
||
bool bComebakcUser = false;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_BIT, SQL_BIT, sizeof(bool), 0, &bComebakcUser, sizeof(bool), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
#if !defined(PRE_MOD_SELECT_CHAR)
|
||
pUserCon->SetCharacterCountMax(cCharCountMax);
|
||
#endif // #if defined(PRE_MOD_SELECT_CHAR)
|
||
LoginOutput.IsNewAccount = cNewAccount == 0 ? false : true;
|
||
pUserCon->SetNexonUserNo(nUserNo);
|
||
#ifdef PRE_ADD_DOORS
|
||
pUserCon->m_bMobileAuthentication = bAuthMobile;
|
||
#endif //#ifdef PRE_ADD_DOORS
|
||
#if defined(PRE_ADD_GAMEQUIT_REWARD)
|
||
pUserCon->m_bReConnectNewbieReward = !bReConnectReward; // DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1(true), <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0(false), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NULL<4C><4C> <20><><EFBFBD><EFBFBD>(=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>
|
||
LoginOutput.RegistDate = RegistDate;
|
||
#endif // #if defined(PRE_ADD_GAMEQUIT_REWARD)
|
||
#if defined( PRE_ADD_NEWCOMEBACK )
|
||
pUserCon->m_bComebackUser = bComebakcUser;
|
||
#endif
|
||
}
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
#endif // #if defined(_LOGINSERVER)
|
||
|
||
int CDNSQLMembership::QueryGetCharacterCount( WCHAR *pAccountName, std::map<int,int>& mWorldCharCount )
|
||
{
|
||
if (CheckConnect() < ERROR_NONE)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, L"[QueryGetCharacterCount] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_GetCharacterCount(N'%s',%d)}", pAccountName, DELETECHAR_WAITTIME_MINUTE );
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQLBindParameter( m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
int iWorldID = 0;
|
||
int iCharCount = 0;
|
||
|
||
int nNo = 1;
|
||
SQLBindCol( m_hstmt, nNo++, SQL_INTEGER, &iWorldID, sizeof(int), &cblen );
|
||
SQLBindCol( m_hstmt, nNo++, SQL_INTEGER, &iCharCount, sizeof(int), &cblen );
|
||
CheckColumnCount(nNo, "P_GetCharacterCount");
|
||
while(1)
|
||
{
|
||
iWorldID = 0;
|
||
iCharCount = 0;
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA)
|
||
{
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO) )
|
||
break;
|
||
|
||
mWorldCharCount.insert( std::make_pair(iWorldID,iCharCount) );
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
|
||
|
||
int CDNSQLMembership::QueryGetAccountID(const char* uname)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]GetAccID" );
|
||
|
||
if (CheckConnect() < ERROR_NONE)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, 0, 0, 0, L"[GetAccID] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB, sqlparam = 0;
|
||
|
||
CDNSqlLen SqlLen;
|
||
|
||
wchar_t username[IDLENMAX];
|
||
MultiByteToWideChar(CP_ACP, 0, uname, -1, username, IDLENMAX);
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.__RLKT__GetAccountID(N'%s')}", username);
|
||
int AccountID=0;
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
//SQLBindCol( m_hstmt, nNo++, SQL_INTEGER, &AccountID, sizeof(int), &cblen );
|
||
|
||
|
||
// printf("Account ID = %d\n",AccountID);
|
||
// SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_CHAR, SQL_VARCHAR, IDLENMAX, 0, username, IDLENMAX, SqlLen.GetNull(!username,IDLENMAX));
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
|
||
return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryCheckLogin(CSCheckLoginTW *pLogin)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]CHECKLOGIN" );
|
||
|
||
if (CheckConnect() < ERROR_NONE)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, 0, 0, 0, L"[QueryCHECKLOGIN] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB, sqlparam = 0;
|
||
|
||
CDNSqlLen SqlLen;
|
||
|
||
#ifdef _SKY
|
||
int Version = 2;
|
||
#else
|
||
int Version = 1;
|
||
#endif
|
||
|
||
wchar_t username[IDLENMAX];
|
||
wchar_t password[PASSWORDLENMAX];
|
||
|
||
MultiByteToWideChar(CP_ACP, 0, pLogin->szAccountName, -1, username, IDLENMAX);
|
||
MultiByteToWideChar(CP_ACP, 0, pLogin->szPassword, -1, password, PASSWORDLENMAX);
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.__RLKT__CheckLogin(N'%s',N'%s',%d)}", username,password, Version);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
//SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_CHAR, SQL_VARCHAR, PUBLISHERORDERKEYMAX, 0, szContextKey, PUBLISHERORDERKEYMAX, SqlLen.GetNull(!pContextKey, PUBLISHERORDERKEYMAX));
|
||
//SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nPaidCashAmount, sizeof(int), SqlPaidLen.GetNull(nPaidCashAmount <= 0, sizeof(int)));
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
// SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_CHAR, SQL_VARCHAR, strlen(pLogin->szAccountName), 0, pLogin->szAccountName, strlen(pLogin->szAccountName), SqlLen.GetNull(!pLogin->szAccountName,IDLENMAX));
|
||
// SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_CHAR, SQL_VARCHAR, strlen(pLogin->szPassword), 0, pLogin->szPassword, strlen(pLogin->szPassword), SqlLen.GetNull(!pLogin->szPassword,PASSWORDLENMAX));
|
||
// SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &Version, sizeof(int), SqlLen.GetNull(Version <= 0, sizeof(int)));
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
|
||
return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryLogout(UINT nAccountDBID, UINT nSessionID, const BYTE * pMachineID/* = NULL*/)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_Logout" );
|
||
|
||
if (CheckConnect() < ERROR_NONE)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, nSessionID, L"[QueryLogout] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB, sqlparam = 0;
|
||
|
||
CDNSqlLen SqlLen;
|
||
BYTE szMID[MACHINEIDMAX] = {0,};
|
||
if (pMachineID) memcpy_s(szMID, sizeof(szMID), pMachineID, MACHINEIDMAX);
|
||
int nMachineIDSize = sizeof(szMID);
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_Logout(%d,%d,?)}", nAccountDBID, nSessionID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_BINARY, SQL_BINARY, sizeof(szMID), 0, szMID, sizeof(szMID), SqlLen.Get(nMachineIDSize));
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
|
||
return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModLastConnectDate(UINT nAccountDBID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModLastConnectDate" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModLastConnectDate(%d)}", nAccountDBID);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryAddAccountKey(UINT nAccountDBID, UINT nUserNo)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddAccountKey" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddAccountKey(%d,%d)}", nAccountDBID, nUserNo);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryAddRestraint( DBDNWorldDef::RestraintTargetCode::eCode TargetCode, UINT uiAccountDBID, INT64 biCharacterDBID, int iReasonID, DBDNWorldDef::RestraintTypeCode::eCode TypeCode, WCHAR* pwszMemo, WCHAR* pwszRestraintMsg, TIMESTAMP_STRUCT StartDate, TIMESTAMP_STRUCT EndDate )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddRestraint" );
|
||
|
||
if (CheckConnect() < ERROR_NONE)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, biCharacterDBID, 0, L"[QueryAddRestraint] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen[2];
|
||
|
||
int nResult = ERROR_DB, sqlparam = 0, nRestraintID = 0;
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddRestraint(%d,%d,%I64d,%d,%d,%d,N'%s',N'%s',?,?,?)}", TargetCode, uiAccountDBID, biCharacterDBID, iReasonID, TypeCode, 0, pwszMemo ? pwszMemo : L"", pwszRestraintMsg ? pwszRestraintMsg : L"" );
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &StartDate, sizeof(TIMESTAMP_STRUCT), SqlLen[0].Get(SQL_TIMESTAMP_LEN) );
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &EndDate, sizeof(TIMESTAMP_STRUCT), SqlLen[1].Get(SQL_TIMESTAMP_LEN) );
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nRestraintID, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
|
||
return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
#ifdef PRE_MOD_RESTRICT_IDENTITY_IP
|
||
int CDNSQLMembership::QueryAddBlockedIP(int nWorldID, UINT nAccountDBID, const char * pszIP)
|
||
{
|
||
CQueryTimeLog QueryTimeLog("P_AddBlockedIP");
|
||
|
||
if(CheckConnect() < 0) {
|
||
g_Log.Log(LogType::_ERROR, nWorldID, nAccountDBID, 0, 0, L"[QueryAddBlockedIP] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode; // ODBC API ȣ<><C8A3><EFBFBD><EFBFBD>ȯ<EFBFBD><C8AF>
|
||
SQLLEN cbLen;
|
||
SQLLEN cbNull;
|
||
cbNull = SQL_NULL_DATA;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddBlockedIP(N'%S',N'%S',255,N'',0,?,?)}", pszIP, pszIP);
|
||
|
||
int nResult = ERROR_DB;
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if(CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQL_TIMESTAMP_STRUCT JoinDate;
|
||
int nNo = 1;
|
||
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cbLen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, sizeof(SQL_TIMESTAMP_STRUCT), 0, &JoinDate, sizeof(SQL_TIMESTAMP_STRUCT), &cbNull);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, sizeof(SQL_TIMESTAMP_STRUCT), 0, &JoinDate, sizeof(SQL_TIMESTAMP_STRUCT), &cbNull);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetSimpleConfigValue(TASimpleConfig * pSimpleConfig)
|
||
{
|
||
if (pSimpleConfig == NULL)
|
||
return ERROR_DB;
|
||
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetListSimpleConfigValue" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, 0, 0, L"[QueryGetSimpleConfigValue] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListSimpleConfigValue}");
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQLBindParameter( m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
SimpleConfig::ConfigData ConfigData;
|
||
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &ConfigData.cCode, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &ConfigData.nValue, sizeof(int), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetListSimpleConfigValue");
|
||
while(1)
|
||
{
|
||
memset(&ConfigData, 0, sizeof(SimpleConfig::ConfigData));
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
pSimpleConfig->Configs[pSimpleConfig->cCount] = ConfigData;
|
||
pSimpleConfig->cCount++;
|
||
|
||
if (pSimpleConfig->cCount >= SimpleConfig::ConfigDataCountMax)
|
||
{
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
#endif //#ifdef PRE_MOD_RESTRICT_IDENTITY_IP
|
||
|
||
#ifdef PRE_ADD_SEETMAINTENANCEFLAG
|
||
int CDNSQLMembership::QuerySetMaintenanceFlag(int nFlag)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_DRS_ModMaintenanceFlag" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_DRS_ModMaintenanceFlag(%d)}", nFlag);
|
||
|
||
return CommonResultQuery(m_wszQuery);
|
||
}
|
||
#endif //#ifdef PRE_ADD_SEETMAINTENANCEFLAG
|
||
|
||
int CDNSQLMembership::QueryGetListRestraintForAccount(UINT nAccountDBID, OUT std::vector<TRestraintForAccountAndCharacter> &VecRestraint)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetListRestraintForAccount" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryLogin] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
VecRestraint.clear();
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListRestraintForAccount(%d)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQLBindParameter( m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
TRestraintForAccountAndCharacter Restraint = { 0, };
|
||
|
||
TIMESTAMP_STRUCT StartDate, EndDate;
|
||
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &Restraint.cLevelCode, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Restraint.iReasonID, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, Restraint.wszRestraintReason, sizeof(WCHAR) * RESTRAINTREASONMAX, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &StartDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &EndDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetListRestraintForAccount");
|
||
while(1)
|
||
{
|
||
memset(&Restraint, 0, sizeof(Restraint));
|
||
memset(&StartDate, 0, sizeof(StartDate));
|
||
memset(&EndDate, 0, sizeof(EndDate));
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
CTimeParamSet StartTime(&QueryTimeLog, Restraint._tStartDate, StartDate, 0, nAccountDBID);
|
||
CTimeParamSet EndTime(&QueryTimeLog, Restraint._tEndDate, EndDate, 0, nAccountDBID);
|
||
|
||
if (!StartTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
if (!EndTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
|
||
VecRestraint.push_back(Restraint);
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetListRestraintForCharacter(INT64 biCharacterDBID, OUT std::vector<TRestraintForAccountAndCharacter> &VecRestraint)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]QueryGetListRestraintFotCharacter" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryLogin] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
VecRestraint.clear();
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListRestraintForCharacter(%I64d)}", biCharacterDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQLBindParameter( m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
TRestraintForAccountAndCharacter Restraint = { 0, };
|
||
|
||
TIMESTAMP_STRUCT StartDate, EndDate;
|
||
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &Restraint.cLevelCode, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Restraint.iReasonID, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, Restraint.wszRestraintReason, sizeof(WCHAR) * RESTRAINTREASONMAX, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &StartDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &EndDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetListRestraintForCharacter");
|
||
while(1)
|
||
{
|
||
memset(&Restraint, 0, sizeof(Restraint));
|
||
memset(&StartDate, 0, sizeof(StartDate));
|
||
memset(&EndDate, 0, sizeof(EndDate));
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
CTimeParamSet StartTime(&QueryTimeLog, Restraint._tStartDate, StartDate, 0, 0, biCharacterDBID);
|
||
CTimeParamSet EndTime(&QueryTimeLog, Restraint._tEndDate, EndDate, 0, 0, biCharacterDBID);
|
||
|
||
if (!StartTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
if (!EndTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
|
||
VecRestraint.push_back(Restraint);
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetGameOption(UINT nAccountDBID, OUT TGameOptions &Options)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetGameOption" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryGetGameOption] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
int nSize = (int)sizeof(TGameOptions);
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetGameOption(%d,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
cblen = SQL_LEN_DATA_AT_EXEC(nSize);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_BINARY, SQL_BINARY, sizeof(TGameOptions), 0, &Options, sizeof(TGameOptions), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModGameOption(UINT nAccountDBID, TGameOptions &Options)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModGameOption" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryModGameOption] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
int nSize = sizeof(TGameOptions);
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModGameOption(%d,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
cblen = SQL_LEN_DATA_AT_EXEC(nSize);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_BINARY, SQL_BINARY, nSize, 0, &Options, nSize, &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
SQLPOINTER pParam;
|
||
while(RetCode == SQL_NEED_DATA)
|
||
{
|
||
RetCode = SQLParamData(m_hstmt, &pParam);
|
||
if (RetCode == SQL_NEED_DATA)
|
||
{
|
||
if (pParam == &Options)
|
||
SQLPutData(m_hstmt, pParam, nSize);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryAddCharacter(UINT nAccountDBID, WCHAR *pCharName, int nWorldID, int nDefaultMaxCharacterCountPerAccount, OUT INT64 &biCharacterDBID, OUT TIMESTAMP_STRUCT &CreateDate)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddCharacter" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryAddCharacter] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
#if defined(PRE_MOD_SELECT_CHAR)
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddCharacter(%d,N'%s',%d,%d,?,%d,%d,?)}", nAccountDBID, pCharName, nWorldID, DELETECHAR_WAITTIME_MINUTE, 1, nDefaultMaxCharacterCountPerAccount);
|
||
#else // #if defined(PRE_MOD_SELECT_CHAR)
|
||
#if defined( PRE_ADD_DWC )
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddCharacter(%d,N'%s',%d,%d,?,%d,%d)}", nAccountDBID, pCharName, nWorldID, DELETECHAR_WAITTIME_MINUTE, 0, nDefaultMaxCharacterCountPerAccount);
|
||
#else // #if defined( PRE_ADD_DWC )
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddCharacter(%d,N'%s',%d,%d,?)}", nAccountDBID, pCharName, nWorldID, DELETECHAR_WAITTIME_MINUTE );
|
||
#endif // #if defined( PRE_ADD_DWC )
|
||
#endif // #if defined(PRE_MOD_SELECT_CHAR)
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biCharacterDBID, sizeof(INT64), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, sizeof(TIMESTAMP_STRUCT), 0, &CreateDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryRollbackAddCharacter(INT64 biCharacterDBID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_RollbackAddCharacter" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_RollbackAddCharacter(%I64d)}", biCharacterDBID);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryDelCharacter(INT64 biCharacterDBID, WCHAR *pPrivateIp, WCHAR *pPublicIp, bool bFirstVillage, TIMESTAMP_STRUCT& DeleteDate )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_DelCharacter" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryDelCharacter] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen;
|
||
|
||
int nResult = ERROR_DB, sqlparam = 0;
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_DelCharacter(%I64d,N'%s',N'%s',%d,?)}", biCharacterDBID, pPrivateIp, pPublicIp, bFirstVillage);
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &DeleteDate, sizeof(TIMESTAMP_STRUCT), SqlLen.Get(SQL_TIMESTAMP_LEN));
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
|
||
return ERROR_DB;
|
||
}
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryReviveCharacter( INT64 biCharacterDBID, WCHAR* wszPrivateIP, WCHAR* wszPublicIP )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ReviveCharacter" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ReviveCharacter(%I64d,N'%s',N'%s')}", biCharacterDBID, wszPrivateIP, wszPublicIP );
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetKeySettingOption( UINT uiAccountDBID, TKeySetting* pKeySetting )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetKeySettingOption" );
|
||
|
||
if ( CheckConnect() < ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryGetKeySettingOption] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int iRet = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetKeySettingOption(%d,?)}", uiAccountDBID );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if ( CheckRetCode( RetCode, L"SQLPrepare" ) == ERROR_NONE )
|
||
{
|
||
SQLLEN cblen;
|
||
int iSize = sizeof(TKeySetting);
|
||
|
||
int nNo = 1;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &iRet, sizeof(int), &cblen );
|
||
cblen = SQL_LEN_DATA_AT_EXEC(iSize);
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_BINARY, SQL_BINARY, iSize, 0, pKeySetting, iSize, &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return iRet;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModKeySettingOption( TQModKeySettingOption* pQ, TAModKeySettingOption* pA )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModKeySettingOption" );
|
||
|
||
if ( CheckConnect() < ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pQ->cWorldSetID, pQ->nAccountDBID, 0, 0, "[QueryModKeySettingOption] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int iRet = ERROR_DB;
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_ModKeySettingOption(%d,?)}", pQ->nAccountDBID );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if ( CheckRetCode( RetCode, L"SQLPrepare" ) == ERROR_NONE )
|
||
{
|
||
SQLLEN cblen;
|
||
int iSize = sizeof(TKeySetting);
|
||
|
||
int nNo = 1;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &iRet, sizeof(int), &cblen );
|
||
cblen = SQL_LEN_DATA_AT_EXEC(iSize);
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_BINARY, SQL_BINARY, iSize, 0, &pQ->sKeySetting, iSize, &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if ( CheckRetCode( RetCode, L"SQLExecute" ) == ERROR_NONE )
|
||
{
|
||
SQLPOINTER pParam;
|
||
while( RetCode == SQL_NEED_DATA )
|
||
{
|
||
RetCode = SQLParamData( m_hstmt, &pParam );
|
||
if ( RetCode == SQL_NEED_DATA )
|
||
{
|
||
if ( pParam == &pQ->sKeySetting )
|
||
{
|
||
if ( pQ->bUseDefault )
|
||
{
|
||
SQLPutData( m_hstmt, pParam, SQL_NULL_DATA );
|
||
}
|
||
else
|
||
{
|
||
SQLPutData( m_hstmt, pParam, iSize );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return iRet;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetPadSettingOption( UINT uiAccountDBID, TPadSetting* pPadSetting )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetGamePadOption" );
|
||
|
||
if ( CheckConnect() < ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryGetPadSettingOption] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int iRet = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetGamePadOption(%d,?)}", uiAccountDBID );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode( RetCode, L"SQLPrepare" ) == ERROR_NONE )
|
||
{
|
||
SQLLEN cblen;
|
||
int iSize = sizeof(TPadSetting);
|
||
|
||
int nNo = 1;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &iRet, sizeof(int), &cblen );
|
||
cblen = SQL_LEN_DATA_AT_EXEC(iSize);
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_BINARY, SQL_BINARY, iSize, 0, pPadSetting, iSize, &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return iRet;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModPadSettingOption( TQModPadSettingOption* pQ, TAModPadSettingOption* pA )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModGamePadOption" );
|
||
|
||
if( CheckConnect() < ERROR_NONE )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pQ->cWorldSetID, pQ->nAccountDBID, 0, 0, "[QueryModPadSettingOption] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int iRet = ERROR_DB;
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_ModGamePadOption(%d,?)}", pQ->nAccountDBID );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode( RetCode, L"SQLPrepare" ) == ERROR_NONE )
|
||
{
|
||
SQLLEN cblen;
|
||
int iSize = sizeof(TPadSetting);
|
||
|
||
int nNo = 1;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &iRet, sizeof(int), &cblen );
|
||
cblen = SQL_LEN_DATA_AT_EXEC(iSize);
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_BINARY, SQL_BINARY, iSize, 0, &pQ->sPadSetting, iSize, &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if( CheckRetCode( RetCode, L"SQLExecute" ) == ERROR_NONE )
|
||
{
|
||
SQLPOINTER pParam;
|
||
while( RetCode == SQL_NEED_DATA )
|
||
{
|
||
RetCode = SQLParamData( m_hstmt, &pParam );
|
||
if( RetCode == SQL_NEED_DATA )
|
||
{
|
||
if( pParam == &pQ->sPadSetting )
|
||
{
|
||
if( pQ->bUseDefault )
|
||
{
|
||
SQLPutData( m_hstmt, pParam, SQL_NULL_DATA );
|
||
}
|
||
else
|
||
{
|
||
SQLPutData( m_hstmt, pParam, iSize );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return iRet;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryCheckPCRoomIP(char *pIp, bool &bPCbang, char &cPCbangGrade)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_CheckPCRoomIP" );
|
||
|
||
if (CheckConnect() < ERROR_NONE)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, 0, 0, 0, L"[QueryCheckPCRoomIP] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_CheckPCRoomIP('%S',?,?)}", pIp);
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_BIT, SQL_BIT, sizeof(bool), 0, &bPCbang, sizeof(bool), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cPCbangGrade, sizeof(char), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
|
||
return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetNationalityCode(UINT nAccountDBID, OUT BYTE &cRegion)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetNationalityCode" );
|
||
|
||
if (CheckConnect() < ERROR_NONE)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryGetNationalityCode] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetNationalityCode(%d,?)}", nAccountDBID);
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cRegion, sizeof(char), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
|
||
return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
// Auth
|
||
int CDNSQLMembership::QueryBeginAuth(UINT uiAccountDBID, char& cCertifyingStep, int& nServerID, char& cWorldSetID, UINT& nSessionID, INT64& biCharacterDBID, LPCWSTR wszAccountName, LPCWSTR wszCharacterName, char cAccountLevel, BYTE bIsAdult, char nAge, BYTE nDailyCreateCount, int nPrmInt1)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]Auth_BeginAuth" );
|
||
|
||
if (CheckConnect() < 0) {
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryBeginAuth] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
int nResult = 1; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.Auth_BeginAuth(%d,?,%d,?,?,%d,?,%I64d,?,N'%s',N'%s',%d,%d,%d,%d,%d,11)}",
|
||
uiAccountDBID, nServerID, nSessionID, biCharacterDBID, wszAccountName, wszCharacterName, cAccountLevel, bIsAdult, nAge, nDailyCreateCount, nPrmInt1);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(BYTE), 0, &cCertifyingStep, sizeof(BYTE), &cblen);
|
||
SQLBindParameter(m_hstmt, 3, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nServerID, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 4, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(BYTE), 0, &cWorldSetID, sizeof(BYTE), &cblen);
|
||
SQLBindParameter(m_hstmt, 5, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nSessionID, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 6, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biCharacterDBID, sizeof(INT64), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
return nResult;
|
||
}
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryStoreAuth(UINT uiAccountDBID, INT64 biCertifyingKey, int nCurServerID, char cWorldSetID, UINT nSessionID, INT64 biCharacterDBID, LPCWSTR wszAccountName, LPCWSTR wszCharacterName, BYTE bIsAdult, char nAge, BYTE nDailyCreateCount, int nPrmInt1, char cLastServerType)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]Auth_StoreAuth" );
|
||
|
||
if (CheckConnect() < 0) {
|
||
g_Log.Log(LogType::_ERROR, cWorldSetID, uiAccountDBID, biCharacterDBID, nSessionID, L"[QueryStoreAuth] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
int nResult = 1; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.Auth_StoreAuth(%d,%I64d,%d,%d,%d,%I64d,N'%s',N'%s',%d,%d,%d,%d,%d)}",
|
||
uiAccountDBID, biCertifyingKey, nCurServerID, cWorldSetID, nSessionID, biCharacterDBID, wszAccountName, wszCharacterName, bIsAdult, nAge, nDailyCreateCount, nPrmInt1, cLastServerType);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
return nResult;
|
||
}
|
||
}
|
||
|
||
return ERROR_NONE;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryCheckAuth(UINT uiAccountDBID, INT64 biCertifyingKey, int nCurServerID, OUT char& cWorldSetID, OUT UINT& nSessionID, OUT INT64& biCharacterDBID, OUT LPWSTR* wszAccountName, OUT LPWSTR* wszCharacterName, OUT char& cAccountLevel, OUT BYTE& bIsAdult, OUT char& nAge, OUT BYTE& nDailyCreateCount, OUT int& nPrmInt1, OUT char& cLastServerType)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]Auth_CheckAuth" );
|
||
|
||
if (CheckConnect() < 0) {
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryCheckAuth] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
int nResult = 1; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.Auth_CheckAuth(%d,%I64d,%d,%d,?,?,?,?,?,?,?,?,?,?,?)}", uiAccountDBID, biCertifyingKey, nCurServerID, CHECKAUTHLIMITSEC);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(BYTE), 0, &cWorldSetID, sizeof(BYTE), &cblen);
|
||
SQLBindParameter(m_hstmt, 3, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nSessionID, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 4, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biCharacterDBID, sizeof(INT64), &cblen);
|
||
SQLBindParameter(m_hstmt, 5, SQL_PARAM_OUTPUT, SQL_WCHAR, SQL_WVARCHAR, sizeof(WCHAR) * IDLENMAX, 0, wszAccountName, sizeof(WCHAR) * IDLENMAX, &cblen);
|
||
SQLBindParameter(m_hstmt, 6, SQL_PARAM_OUTPUT, SQL_WCHAR, SQL_WVARCHAR, sizeof(WCHAR) * NAMELENMAX, 0, wszCharacterName, sizeof(WCHAR) * NAMELENMAX, &cblen);
|
||
SQLBindParameter(m_hstmt, 7, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cAccountLevel, sizeof(char), &cblen);
|
||
SQLBindParameter(m_hstmt, 8, SQL_PARAM_OUTPUT, SQL_BIT, SQL_BIT, sizeof(BYTE), 0, &bIsAdult, sizeof(BYTE), &cblen);
|
||
SQLBindParameter(m_hstmt, 9, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &nAge, sizeof(char), &cblen);
|
||
SQLBindParameter(m_hstmt, 10, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &nDailyCreateCount, sizeof(char), &cblen);
|
||
SQLBindParameter(m_hstmt, 11, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nPrmInt1, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 12, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cLastServerType, sizeof(char), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
return nResult;
|
||
}
|
||
}
|
||
|
||
return ERROR_NONE;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryResetAuth(UINT uiAccountDBID, UINT nSessionID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]Auth_ResetAuth" );
|
||
|
||
int nResult = 1; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.Auth_ResetAuth(%d,%d)}", uiAccountDBID, nSessionID);
|
||
|
||
nResult = CommonResultQuery(m_wszQuery);
|
||
if (nResult != ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, nSessionID, L"[ADBID:%d] [Q:%s]\r\n", uiAccountDBID, m_wszQuery);
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryResetAuthServer(int nServerID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]Auth_ResetAuthServer" );
|
||
|
||
int nResult = 1; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.Auth_ResetAuthServer(%d)}", nServerID);
|
||
|
||
nResult = CommonResultQuery(m_wszQuery);
|
||
if (nResult != ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[Q:%s] W:%d\r\n", m_wszQuery, nServerID);
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryResetAuthByAccountWorld(UINT uiAccountDBID, char cWorldSetID, UINT nSessionID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]Auth_ResetAuthByAccountWorld" );
|
||
|
||
int nResult = 1; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.Auth_ResetAuthByAccountWorld(%d,%d,%d)}", uiAccountDBID, cWorldSetID, nSessionID);
|
||
|
||
nResult = CommonResultQuery(m_wszQuery);
|
||
if (nResult != ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, cWorldSetID, uiAccountDBID, 0, nSessionID, L"[ADBID:%d] [Q:%s]\r\n", uiAccountDBID, m_wszQuery);
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QuerySetWorldIDAuth(char cWorldSetID, UINT nAccountDBID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]Auth_SetWorldID" );
|
||
|
||
int nResult = 1; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.Auth_SetWorldID(%d,%d)}", nAccountDBID, cWorldSetID);
|
||
|
||
nResult = CommonResultQuery(m_wszQuery);
|
||
if (nResult != ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, cWorldSetID, nAccountDBID, 0, 0, L"[ADBID:%d] [Q:%s]\r\n", nAccountDBID, m_wszQuery);
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
// 2<><32> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
int CDNSQLMembership::QueryValidataSecondAuthPassphrase( UINT uiAccountDBID, const WCHAR* pwszPW, BYTE& cFailCount )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ValidateSecondAuthPassphrase" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryValidataSecondAuthPassphrase] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ValidateSecondAuthPassphrase(%d,N'%s',%d,?)}", uiAccountDBID, pwszPW, SecondAuth::Common::LimitCount );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
SQLLEN cblen;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cFailCount, sizeof(char), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModSecondAuthPassphrase( UINT uiAccountDBID, const WCHAR* pwszOldPW, const WCHAR* pwszNewPW, BYTE& cFailCount )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModSecondAuthPassphrase" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryModSecondAuthPassphrase] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_ModSecondAuthPassphrase(%d,N'%s',N'%s',%d,?)}", uiAccountDBID, pwszOldPW, pwszNewPW, SecondAuth::Common::LimitCount );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
SQLLEN cblen;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cFailCount, sizeof(char), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModSecondAuthLockFlag( UINT uiAccountDBID, bool bLock )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModSecondAuthLockFlag" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryModSecondAuthLockFlag] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_ModSecondAuthLockFlag(%d,%d)}", uiAccountDBID, bLock ? 1 : 0 );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
SQLLEN cblen;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetSecondAuthStatus( UINT uiAccountDBID, bool& bSetPW, bool& bLock, __time64_t& tResetDate )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetSecondAuthStatus" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryGetSecondAuthStatus] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
BYTE cSetPW, cLock;
|
||
TIMESTAMP_STRUCT ResetDate = {0,};
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_GetSecondAuthStatus(%d,?,?)}", uiAccountDBID );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
SQLLEN cblen;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cSetPW, sizeof(char), &cblen );
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_BIT, SQL_BIT, sizeof(BYTE), 0, &cLock, sizeof(BYTE), &cblen );
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, sizeof(TIMESTAMP_STRUCT), 0, &ResetDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
if( nResult == ERROR_NONE )
|
||
{
|
||
bSetPW = (cSetPW == 3);
|
||
bLock = (cLock == 1);
|
||
CTimeParamSet ResetTime(&QueryTimeLog, tResetDate, ResetDate, 0, uiAccountDBID);
|
||
if (!ResetTime.IsValid()) return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryInitSecondAuth( UINT uiAccountDBID )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_InitSecondAuth" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryInitSecondAuth] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_InitSecondAuth(%d)}", uiAccountDBID );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
SQLLEN cblen;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
#if defined(PRE_ADD_SHA256)
|
||
int CDNSQLMembership::QueryValidataSecondAuthPassphraseByServer( UINT uiAccountDBID, const WCHAR* pszPW, BYTE& cFailCount )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ValidateSecondAuthPassphrase" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryValidataSecondAuthPassphrase] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ValidateSecondAuthPassphraseByServer(%d,?,%d,?)}", uiAccountDBID, SecondAuth::Common::LimitCount );
|
||
|
||
|
||
BYTE digest[SHA256_DIGEST_SIZE] = {0,};
|
||
char szKey[64] = {0,};
|
||
sprintf_s(szKey, "%u%SDRNEST", uiAccountDBID, pszPW);
|
||
|
||
SHA256Hash(szKey, (int)strlen(szKey), digest);
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
int iSize = sizeof(digest);
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_BINARY, SQL_BINARY, iSize, 0, digest, iSize, SqlLen.Get(iSize));
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cFailCount, sizeof(char), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModSecondAuthPassphraseByServer(UINT uiAccountDBID, const WCHAR* pszOldPW, const WCHAR* pszNewPW, BYTE& cFailCount )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModSecondAuthPassphraseByServer" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, uiAccountDBID, 0, 0, L"[QueryModSecondAuthPassphraseByServer] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_ModSecondAuthPassphraseByServer(%d,?,?,%d,?)}", uiAccountDBID, SecondAuth::Common::LimitCount );
|
||
|
||
BYTE olddigest[SHA256_DIGEST_SIZE] = {0,};
|
||
BYTE newdigest[SHA256_DIGEST_SIZE] = {0,};
|
||
char szKey[64] = {0,};
|
||
sprintf_s(szKey, "%u%SDRNEST", uiAccountDBID, pszNewPW);
|
||
SHA256Hash(szKey, (int)strlen(szKey), newdigest);
|
||
if( wcslen(pszOldPW) > 0)
|
||
{
|
||
memset(szKey, 0, sizeof(szKey));
|
||
sprintf(szKey, "%u%SDRNEST", uiAccountDBID, pszOldPW);
|
||
SHA256Hash(szKey, (int)strlen(szKey), olddigest);
|
||
}
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
int iSize = sizeof(newdigest);
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen1, SqlLen2;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_BINARY, SQL_BINARY, iSize, 0, olddigest, iSize, SqlLen1.Get(iSize));
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_BINARY, SQL_BINARY, iSize, 0, newdigest, iSize, SqlLen2.Get(iSize));
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cFailCount, sizeof(char), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
#endif // #if defined(PRE_ADD_SHA256)
|
||
|
||
#ifdef PRE_ADD_23829
|
||
int CDNSQLMembership::QueryCheckLastSecondAuthNotifyDate(UINT nAccountDBID, int nCheckPeriod)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_CheckLastSecondAuthNotifyDate" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryCheckLastSecondAuthNotifyDate] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_CheckLastSecondAuthNotifyDate(%d, %d)}", nAccountDBID, nCheckPeriod );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
SQLLEN cblen;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModLastSecondAuthNotifyDate(UINT nAccountDBID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModLastSecondAuthNotifyDate" );
|
||
|
||
if( CheckConnect() < 0 )
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryModLastSecondAuthNotifyDate] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nResult = ERROR_DB; // SQL <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||
|
||
memset( &m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_ModLastSecondAuthNotifyDate(%d)}", nAccountDBID );
|
||
|
||
SQLRETURN RetCode = SQLPrepare( m_hstmt, m_wszQuery, SQL_NTSL );
|
||
if( CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE )
|
||
{
|
||
int nNo = 1;
|
||
SQLLEN cblen;
|
||
SQLBindParameter( m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
#endif
|
||
|
||
int CDNSQLMembership::QueryCheckIntroducedAccount(UINT nAccountDBID, OUT bool &bCheckResult)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_CheckIntroducedAccount" );
|
||
|
||
if (CheckConnect() < ERROR_NONE)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryCheckIntroducedAccount:%d] CheckConnect Fail\r\n", nAccountDBID);
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_CheckIntroducedAccount(%d,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_BIT, SQL_BIT, sizeof(bool), 0, &bCheckResult, sizeof(bool), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") != ERROR_NONE)
|
||
return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetProduct(int nProductID, TCashCommodityData *Product)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetProduct" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryGetProduct] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetProduct(%d)}", nProductID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter( m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
//TCashCommodityData Product = { 0, };
|
||
//2010.10.7 haling STL <20><>ȣ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD> <20><>ȯ
|
||
TCashCommodityData Product;
|
||
int nCategory = 0, nPeriod = 0, nPriority = 0;
|
||
WCHAR wszProductName[NAMELENMAX] = { 0, };
|
||
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nCategory, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nSubCategory, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, wszProductName, sizeof(WCHAR) * NAMELENMAX, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nItemID[0], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nItemID[1], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nItemID[2], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nItemID[3], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nItemID[4], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nLinkSN[0], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nLinkSN[1], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nLinkSN[2], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nLinkSN[3], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nLinkSN[4], sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nPeriod, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nPrice, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nPriceFix, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nCount, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nPriority, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &Product.bOnSale, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &Product.bLimit, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &Product.bReserveGive, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nReserve, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Product.nValidity, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &Product.bReserveAble, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &Product.bPresentAble, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &Product.bCartAble, sizeof(bool), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetProduct");
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if(RetCode == SQL_NO_DATA )
|
||
{
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
if (CheckRetCode(RetCode, L"SQLFetch") == ERROR_NONE){
|
||
Product.cCategory = nCategory;
|
||
Product.wPeriod = nPeriod;
|
||
Product.nPriority = nPriority;
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
int CDNSQLMembership::QueryAddPurchaseOrderByCash(INT64 biCharacterDBID, bool bPCBang, int nItemSN, int nPrice, int nLimitCount, int nSelectItemID, BYTE cSelectItemOption, int nLimitedItemMax, int nTotalPrice, char *pIp,
|
||
bool bGift, WCHAR *pReceiveCharacterName, WCHAR *pMemo, OUT INT64 &biPurchaseOrderID, OUT char* pPurchaseOrderDetailID, const char *pszRefundAbles, bool bCheatFlag )
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
int CDNSQLMembership::QueryAddPurchaseOrderByCash(INT64 biCharacterDBID, bool bPCBang, int nItemSN, int nPrice, int nLimitCount, int nSelectItemID, BYTE cSelectItemOption, int nTotalPrice, char *pIp,
|
||
bool bGift, WCHAR *pReceiveCharacterName, WCHAR *pMemo, OUT INT64 &biPurchaseOrderID, OUT char* pPurchaseOrderDetailID, const char *pszRefundAbles, bool bCheatFlag )
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddPurchaseOrderByCash" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryAddPurchaseOrderByCash] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
WCHAR wszReceiveName[NAMELENMAX * 2 + 1] = {0,}, wszMemo[GIFTMESSAGEMAX * 2 + 1] = {0,};
|
||
if (pReceiveCharacterName)
|
||
ConvertQuery(pReceiveCharacterName, NAMELENMAX, wszReceiveName, _countof(wszReceiveName));
|
||
if (pMemo)
|
||
ConvertQuery(pMemo, GIFTMESSAGEMAX, wszMemo, _countof(wszMemo));
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
if( pszRefundAbles && pPurchaseOrderDetailID )
|
||
{
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%d','%d','%d','%d',%d,'%S',%d,N'%s',N'%s',?,?,'%S',%d,'%d','%d')}",
|
||
biCharacterDBID, bPCBang, nItemSN, nPrice, nLimitCount, nSelectItemID, nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, pszRefundAbles, bCheatFlag, cSelectItemOption, nLimitedItemMax);
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%d','%d','%d','%d',%d,'%S',%d,N'%s',N'%s',?,?,'%S',%d,'%d')}",
|
||
biCharacterDBID, bPCBang, nItemSN, nPrice, nLimitCount, nSelectItemID, nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, pszRefundAbles, bCheatFlag, cSelectItemOption);
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
else if( !pszRefundAbles && !pPurchaseOrderDetailID )
|
||
{
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%d','%d','%d','%d',%d,'%S',%d,N'%s',N'%s',?,NULL,NULL,%d,'%d','%d')}",
|
||
biCharacterDBID, bPCBang, nItemSN, nPrice, nLimitCount, nSelectItemID, nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, bCheatFlag, cSelectItemOption, nLimitedItemMax);
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%d','%d','%d','%d',%d,'%S',%d,N'%s',N'%s',?,NULL,NULL,%d,'%d')}",
|
||
biCharacterDBID, bPCBang, nItemSN, nPrice, nLimitCount, nSelectItemID, nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, bCheatFlag, cSelectItemOption);
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
else if( pszRefundAbles && !pPurchaseOrderDetailID )
|
||
{
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%d','%d','%d','%d',%d,'%S',%d,N'%s',N'%s',?,NULL,'%S',%d,'%d','%d')}",
|
||
biCharacterDBID, bPCBang, nItemSN, nPrice, nLimitCount, nSelectItemID, nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, pszRefundAbles, bCheatFlag, cSelectItemOption, nLimitedItemMax);
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%d','%d','%d','%d',%d,'%S',%d,N'%s',N'%s',?,NULL,'%S',%d,'%d')}",
|
||
biCharacterDBID, bPCBang, nItemSN, nPrice, nLimitCount, nSelectItemID, nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, pszRefundAbles, bCheatFlag, cSelectItemOption);
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
else if( !pszRefundAbles && pPurchaseOrderDetailID )
|
||
{
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%d','%d','%d','%d',%d,'%S',%d,N'%s',N'%s',?,?,NULL,%d,'%d','%d')}",
|
||
biCharacterDBID, bPCBang, nItemSN, nPrice, nLimitCount, nSelectItemID, nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, bCheatFlag, cSelectItemOption, nLimitedItemMax);
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%d','%d','%d','%d',%d,'%S',%d,N'%s',N'%s',?,?,NULL,%d,'%d')}",
|
||
biCharacterDBID, bPCBang, nItemSN, nPrice, nLimitCount, nSelectItemID, nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, bCheatFlag, cSelectItemOption);
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
|
||
CDNSqlLen SqlLen1;
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
if( pPurchaseOrderDetailID )
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_CHAR, SQL_VARCHAR, 64, 0, pPurchaseOrderDetailID, 64, SqlLen1.GetNull(!pPurchaseOrderDetailID, 64)); //<2F><><EFBFBD><EFBFBD> <20><>ǰ<EFBFBD>̿<EFBFBD>..<2E><EFBFBD><D7B7><EFBFBD> 64
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
if (nResult == ERROR_NONE && nLimitedItemMax > 0)
|
||
QueryGetLimitedItem();
|
||
#endif //#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryAddPurchaseOrderByCash(INT64 biCharacterDBID, bool bPCBang, std::vector<string> &VecItemString, int nTotalPrice, char *pIp, bool bGift, WCHAR *pReceiveCharacterName, WCHAR *pMemo,
|
||
OUT INT64 &biPurchaseOrderID, OUT char* pPurchaseOrderDetailIDs/*=NULL*/, bool bCheatFlag/*=false*/)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddPurchaseOrderByCash" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryAddPurchaseOrderByCash] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
WCHAR wszReceiveName[NAMELENMAX * 2 + 1] = {0,}, wszMemo[GIFTMESSAGEMAX * 2 + 1] = {0,};
|
||
if (pReceiveCharacterName)
|
||
ConvertQuery(pReceiveCharacterName, NAMELENMAX, wszReceiveName, _countof(wszReceiveName));
|
||
if (pMemo)
|
||
ConvertQuery(pMemo, GIFTMESSAGEMAX, wszMemo, _countof(wszMemo));
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
if( !(VecItemString[Append_Refundable].empty()) && pPurchaseOrderDetailIDs)
|
||
{
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%S','%S','%S','%S',%d,'%S',%d,N'%s',N'%s',?,?,'%S',%d,'%S','%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(),
|
||
nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, VecItemString[Append_Refundable].c_str(), bCheatFlag, VecItemString[Append_Option].c_str(), VecItemString[Append_QuantityLimited].c_str());
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%S','%S','%S','%S',%d,'%S',%d,N'%s',N'%s',?,?,'%S',%d,'%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(),
|
||
nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, VecItemString[Append_Refundable].c_str(), bCheatFlag, VecItemString[Append_Option].c_str());
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
else if( VecItemString[Append_Refundable].empty() && !pPurchaseOrderDetailIDs )
|
||
{
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%S','%S','%S','%S',%d,'%S',%d,N'%s',N'%s',?,NULL,NULL,%d,'%S','%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(),
|
||
nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, bCheatFlag, VecItemString[Append_Option].c_str(), VecItemString[Append_QuantityLimited].c_str());
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%S','%S','%S','%S',%d,'%S',%d,N'%s',N'%s',?,NULL,NULL,%d,'%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(),
|
||
nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, bCheatFlag, VecItemString[Append_Option].c_str());
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
else if( !(VecItemString[Append_Refundable].empty()) && !pPurchaseOrderDetailIDs )
|
||
{
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%S','%S','%S','%S',%d,'%S',%d,N'%s',N'%s',?,NULL,'%S',%d,'%S','%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(),
|
||
nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, VecItemString[Append_Refundable].c_str(), bCheatFlag, VecItemString[Append_Option].c_str(), VecItemString[Append_QuantityLimited].c_str());
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%S','%S','%S','%S',%d,'%S',%d,N'%s',N'%s',?,NULL,'%S',%d,'%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(),
|
||
nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, VecItemString[Append_Refundable].c_str(), bCheatFlag, VecItemString[Append_Option].c_str());
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
else if( VecItemString[Append_Refundable].empty() && pPurchaseOrderDetailIDs )
|
||
{
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%S','%S','%S','%S',%d,'%S',%d,N'%s',N'%s',?,?,NULL,%d,'%S','%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(),
|
||
nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, bCheatFlag, VecItemString[Append_Option].c_str(), VecItemString[Append_QuantityLimited].c_str());
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPurchaseOrderByCash(%I64d,%d,'%S','%S','%S','%S',%d,'%S',%d,N'%s',N'%s',?,?,NULL,%d,'%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(),
|
||
nTotalPrice, pIp, bGift, wszReceiveName, wszMemo, bCheatFlag, VecItemString[Append_Option].c_str());
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
}
|
||
|
||
CDNSqlLen SqlLen1;
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
if( pPurchaseOrderDetailIDs )
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_CHAR, SQL_VARCHAR, 1024, 0, pPurchaseOrderDetailIDs, 1024, SqlLen1.GetNull(!pPurchaseOrderDetailIDs, 1024));
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
if (nResult == ERROR_NONE && atoi(VecItemString[Append_QuantityLimited].c_str()) > 0)
|
||
QueryGetLimitedItem();
|
||
#endif //#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QuerySetPurchaseOrderResult(INT64 biPurchaseOrderID, char cOrderStatusCode, char *pOrderKey, int nOrderResult, int nPetalAmount, int nPaidCashAmount, char *pContextKey)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_SetPurchaseOrderResult" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QuerySetPurchaseOrderResult] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen, SqlPaidLen;
|
||
char szContextKey[PUBLISHERORDERKEYMAX] = { 0, };
|
||
if (pContextKey)
|
||
_strcpy(szContextKey, _countof(szContextKey), pContextKey, (int)strlen(pContextKey));
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_SetPurchaseOrderResult(%I64d,%d,'%S',%d,%d,?,?)}", biPurchaseOrderID, cOrderStatusCode, pOrderKey, nOrderResult, nPetalAmount);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_CHAR, SQL_VARCHAR, PUBLISHERORDERKEYMAX, 0, szContextKey, PUBLISHERORDERKEYMAX, SqlLen.GetNull(!pContextKey, PUBLISHERORDERKEYMAX));
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nPaidCashAmount, sizeof(int), SqlPaidLen.GetNull(nPaidCashAmount <= 0, sizeof(int)));
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryRollbackPurchaseOrderByCash(INT64 biPurchaseOrderID, OUT char *pOrderKey, OUT int &nProductID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_RollbackPurchaseOrderByCash" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryRollbackPurchaseOrderByCash] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_RollbackPurchaseOrderByCash(%I64d,?,?)}", biPurchaseOrderID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_CHAR, SQL_VARCHAR, sizeof(char) * 32, 0, pOrderKey, sizeof(*pOrderKey), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nProductID, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QuerySetRollbackPurchaseOrderResult(INT64 biOrderID, char cStatusCode, int nRollbackResult)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_SetRollbackPurchaseOrderResult" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_SetRollbackPurchaseOrderResult(%I64d,%d,%d)}", biOrderID, cStatusCode, nRollbackResult);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
int CDNSQLMembership::QueryGetLimitedItem()
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]QueryGetLimitedItem" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryGetLimitedItem] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListLimitedProduct}");
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
std::vector<LimitedCashItem::TLimitedQuantityCashItem> vList;
|
||
LimitedCashItem::TLimitedQuantityCashItem LimitedItem;
|
||
memset(&LimitedItem, 0, sizeof(LimitedCashItem::TLimitedQuantityCashItem));
|
||
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &LimitedItem.nProductID, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &LimitedItem.nSaleCount, sizeof(int), &cblen);
|
||
|
||
CheckColumnCount(nNo, "[Membership]QueryGetLimitedItem");
|
||
while(1)
|
||
{
|
||
memset(&LimitedItem, 0, sizeof(LimitedCashItem::TLimitedQuantityCashItem));
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
vList.push_back(LimitedItem);
|
||
}
|
||
|
||
if (g_pLimitedCashItemRepository)
|
||
g_pLimitedCashItemRepository->UpdateLimitedItemList(vList);
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
#endif //#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
|
||
#if defined(PRE_ADD_CASH_REFUND)
|
||
int CDNSQLMembership::QueryGetListRefundableProducts(INT64 biCharacterDBID, TAPaymentItemList* pPaymentItemList, TAPaymentPackageItemList* pPaymentPackageItemList, int nRefundLimitPeriod )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetListRefundableProducts" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryGetListRefundableProducts] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
int nVersion = 2;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListRefundableProducts(%I64d, %d, %d)}", biCharacterDBID, nRefundLimitPeriod, nVersion);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
INT64 biPurchaseOrderDetailID = 0;
|
||
char szOrderNum[64] = {0, };
|
||
int nProductID = 0;
|
||
int nPrice = 0;
|
||
char szSelectedItemIDs[2048] = {0, }, szSelectedItemOptions[2048] = {0,};
|
||
TIMESTAMP_STRUCT OrderDate = {0,};
|
||
|
||
bool bflag = false; //
|
||
SQLBindCol(m_hstmt, nNo++, SQL_C_SBIGINT, &biPurchaseOrderDetailID, sizeof(INT64), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_CHAR, szOrderNum, sizeof(CHAR) * 64, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nProductID, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nPrice, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_CHAR, szSelectedItemIDs, sizeof(CHAR)*2048, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_CHAR, szSelectedItemOptions, sizeof(CHAR)*2048, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &bflag, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &OrderDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
|
||
CheckColumnCount(nNo, "[Membership]P_GetListRefundableProducts");
|
||
while(1)
|
||
{
|
||
memset(&szOrderNum, 0, sizeof(szOrderNum));
|
||
memset(&OrderDate, 0, sizeof(OrderDate));
|
||
memset(&szSelectedItemIDs, 0, sizeof(szSelectedItemIDs));
|
||
memset(&szSelectedItemOptions, 0, sizeof(szSelectedItemOptions));
|
||
biPurchaseOrderDetailID = 0;
|
||
nProductID = 0;
|
||
nPrice = 0;
|
||
bflag = false;
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
// <20><> <20><><EFBFBD><EFBFBD> <20><>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD>
|
||
string strSelectedItemIDs = szSelectedItemIDs;
|
||
string strSelectedItemOptions = szSelectedItemOptions;
|
||
|
||
std::vector<std::string> tokens, Optiontokens;
|
||
TokenizeA(strSelectedItemIDs.c_str(), tokens, ",");
|
||
TokenizeA(strSelectedItemOptions.c_str(), Optiontokens, ",");
|
||
if( tokens.size() == 1 ) // ID<49><44> <20>Ѱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǰ<EFBFBD>̴<EFBFBD>.
|
||
{
|
||
// <20><>ǰ..
|
||
int nTempCount = pPaymentItemList->nPaymentCount; // <20>ڵ<EFBFBD> <20><><EFBFBD>̰<EFBFBD> <20><> <20><><EFBFBD>..
|
||
pPaymentItemList->PaymentItemList[nTempCount].uiOrderNo = strtoul(szOrderNum, NULL, 10);
|
||
pPaymentItemList->PaymentItemList[nTempCount].nPrice = nPrice;
|
||
pPaymentItemList->PaymentItemList[nTempCount].PaymentItemInfo.biDBID = biPurchaseOrderDetailID;
|
||
CTimeParamSet OrderTime(&QueryTimeLog, pPaymentItemList->PaymentItemList[nTempCount].PaymentItemInfo.tPaymentDate, OrderDate, 0, 0, biCharacterDBID);
|
||
if (!OrderTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
pPaymentItemList->PaymentItemList[nTempCount].PaymentItemInfo.ItemInfo.nItemSN = nProductID;
|
||
pPaymentItemList->PaymentItemList[nTempCount].PaymentItemInfo.ItemInfo.nItemID = atoi(szSelectedItemIDs);
|
||
pPaymentItemList->PaymentItemList[nTempCount].PaymentItemInfo.ItemInfo.cItemOption = atoi(szSelectedItemOptions);
|
||
++pPaymentItemList->nPaymentCount;
|
||
}
|
||
else
|
||
{
|
||
// <20><>Ű<EFBFBD><C5B0>..
|
||
int nTempCount = pPaymentPackageItemList->nPaymentPackegeCount; // <20>ڵ<EFBFBD> <20><><EFBFBD>̰<EFBFBD> <20><> <20><><EFBFBD>..
|
||
pPaymentPackageItemList->PaymentPackageItemList[nTempCount].uiOrderNo = strtoul(szOrderNum, NULL, 10);
|
||
pPaymentPackageItemList->PaymentPackageItemList[nTempCount].nPrice = nPrice;
|
||
pPaymentPackageItemList->PaymentPackageItemList[nTempCount].PaymentPackageItemInfo.biDBID = biPurchaseOrderDetailID;
|
||
pPaymentPackageItemList->PaymentPackageItemList[nTempCount].PaymentPackageItemInfo.nPackageSN = nProductID;
|
||
CTimeParamSet OrderTime(&QueryTimeLog, pPaymentPackageItemList->PaymentPackageItemList[nTempCount].PaymentPackageItemInfo.tPaymentDate, OrderDate, 0, 0, biCharacterDBID);
|
||
if (!OrderTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
|
||
std::vector<std::string>::iterator ii;
|
||
int nCount = 0;
|
||
for(ii = tokens.begin(); ii != tokens.end(); ii++)
|
||
{
|
||
// nItemSN<53><4E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ƽ<DEBE> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20>ҵ<EFBFBD>..DB<44><42> <20><><EFBFBD><EFBFBD>..
|
||
pPaymentPackageItemList->PaymentPackageItemList[nTempCount].PaymentPackageItemInfo.ItemInfoList[nCount].nItemID = atoi((*ii).c_str());
|
||
pPaymentPackageItemList->PaymentPackageItemList[nTempCount].PaymentPackageItemInfo.ItemInfoList[nCount].cItemOption = -1;
|
||
++nCount;
|
||
}
|
||
|
||
nCount = 0;
|
||
for(ii = Optiontokens.begin(); ii != Optiontokens.end(); ii++)
|
||
{
|
||
pPaymentPackageItemList->PaymentPackageItemList[nTempCount].PaymentPackageItemInfo.ItemInfoList[nCount].cItemOption = atoi((*ii).c_str());
|
||
++nCount;
|
||
}
|
||
|
||
++pPaymentPackageItemList->nPaymentPackegeCount;
|
||
}
|
||
|
||
// <20>ϴ<EFBFBD><CFB4><EFBFBD> 150<35><30><EFBFBD><EFBFBD> <20>ڸ<EFBFBD><DAB8><EFBFBD>..
|
||
if(pPaymentItemList->nPaymentCount >= CASHINVENTORYMAX || pPaymentPackageItemList->nPaymentPackegeCount >= CASHINVENTORYMAX ){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModPurchaseOrderDetail(INT64 biPurchaseOrderDetailID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModPurchaseOrderDetail" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModPurchaseOrderDetail(%I64d)}", biPurchaseOrderDetailID);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryCashRefund(INT64 biPurchaseOrderDetailID, int nRefundLimitPeriod )
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_Refund" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_Refund(%I64d, %d)}", biPurchaseOrderDetailID, nRefundLimitPeriod);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
#endif // #if defined(PRE_ADD_CASH_REFUND)
|
||
|
||
int CDNSQLMembership::QueryCheatGiftClear(INT64 biCharacterDBID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_CheatGiftClear" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_CheatGiftClear(%I64d)}", biCharacterDBID);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryIncreaseVIPBasicPoint(INT64 biCharacterDBID, int nBasicPoint, INT64 biPurchaseOrderID, short wVIPPeriod, bool bAutoPay, OUT int &nVIPTotalPoint, OUT __time64_t &tVIPEndDate)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_IncreaseVIPBasicPoint" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryIncreaseVIPBasicPoint] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_IncreaseVIPBasicPoint(%I64d,%d,%I64d,%d,%d,?,?,?)}", biCharacterDBID, nBasicPoint, biPurchaseOrderID, wVIPPeriod, bAutoPay);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
TIMESTAMP_STRUCT StartDate = {0,}, EndDate = {0,};
|
||
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nVIPTotalPoint, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, sizeof(TIMESTAMP_STRUCT), 0, &StartDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, sizeof(TIMESTAMP_STRUCT), 0, &EndDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
CTimeParamSet EndTime(&QueryTimeLog, tVIPEndDate, EndDate, 0, 0, biCharacterDBID);
|
||
if (!EndTime.IsValid()) return ERROR_DB;
|
||
}
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetVIPPoint(INT64 biCharacterDBID, OUT int &nVIPTotalPoint, OUT __time64_t &tVIPEndDate, OUT bool &bAutoPay)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetVIPPoint" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryGetVIPPoint] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetVIPPoint(%I64d,?,?,?,?)}", biCharacterDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
TIMESTAMP_STRUCT StartDate = {0,}, EndDate = {0,};
|
||
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nVIPTotalPoint, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, sizeof(TIMESTAMP_STRUCT), 0, &StartDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, sizeof(TIMESTAMP_STRUCT), 0, &EndDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_BIT, SQL_BIT, sizeof(bool), 0, &bAutoPay, sizeof(bool), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
CTimeParamSet EndTime(&QueryTimeLog, tVIPEndDate, EndDate, 0, 0, biCharacterDBID);
|
||
if (!EndTime.IsValid()) return ERROR_DB;
|
||
}
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModVIPAutoPayFlag(INT64 biCharacterDBID, bool bAutoPay)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModVIPAutoPayFlag" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModVIPAutoPayFlag(%I64d,%d)}", biCharacterDBID, bAutoPay);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryAddBanOfSale(int nItemSN)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddBanOfSale" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddBanOfSale(%d)}", nItemSN);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetListBanOfSale(std::vector<int> &VecProhibitList)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetListBanOfSale" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryGetListBanOfSale] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListBanOfSale}");
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
int nItemSN = 0;
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nItemSN, sizeof(int), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetListBanOfSale");
|
||
while(1)
|
||
{
|
||
nItemSN = 0;
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
VecProhibitList.push_back(nItemSN);
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetPetalBalance(int nAccountDBID, OUT int &nPetalBalance)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetPetalBalance" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryGetPetalBalance] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetPetalBalance(%d,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nPetalBalance, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryPurchaseItemByPetal(INT64 biCharacterDBID, bool bPCBang, std::vector<string> &VecItemString, int nTotalPrice, char *pIp, OUT INT64 &biPurchaseOrderID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_PurchaseItemByPetal" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryPurchaseItemByPetal] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_PurchaseItemByPetal(%I64d,%d,'%S','%S','%S','%S',%d,'%S',?,'%S','%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(), nTotalPrice, pIp, VecItemString[Append_Option].c_str(), VecItemString[Append_QuantityLimited].c_str());
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_PurchaseItemByPetal(%I64d,%d,'%S','%S','%S','%S',%d,'%S',?,'%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(), nTotalPrice, pIp, VecItemString[Append_Option].c_str());
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
if (nResult == ERROR_NONE && atoi(VecItemString[Append_QuantityLimited].c_str()) > 0)
|
||
QueryGetLimitedItem();
|
||
#endif //#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryRollbackPurchaseItemByPetal(INT64 biOrderID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_RollbackPurchaseItemByPetal" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_RollbackPurchaseItemByPetal(%I64d)}", biOrderID);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryAddPetalIncome(INT64 biCharacterDBID, INT64 biPurchaseOrderID, int nPetal, OUT int &nTotalPetal, bool bTrade)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddPetalIncome" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryAddPetalIncome] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
if( bTrade )
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPetalIncome(%I64d,%I64d,%d,?, 7)}", biCharacterDBID, biPurchaseOrderID, nPetal); //<2F>ŷ<EFBFBD><C5B7><EFBFBD> <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 7
|
||
else
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPetalIncome(%I64d,%I64d,%d,?)}", biCharacterDBID, biPurchaseOrderID, nPetal);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nTotalPetal, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
#if defined( PRE_PVP_GAMBLEROOM )
|
||
int CDNSQLMembership::QueryAddPetalIncome(INT64 biCharacterDBID, INT64 biPurchaseOrderID, int nPetal, OUT int &nTotalPetal, BYTE cPetalChangeCode, INT64 nGambleDBID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddPetalIncome" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryAddPetalIncome] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPetalIncome(%I64d,?,%d,?,%d,%I64d)}", biCharacterDBID, nPetal, cPetalChangeCode, nGambleDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), SqlLen.GetNull(biPurchaseOrderID <= 0, sizeof(INT64)));
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nTotalPetal, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryUsePetal(INT64 biCharacterDBID, int nPetal, BYTE cPetalChangeCode, INT64 nGambleDBID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_UsePetal" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryAddPetalIncome] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_UsePetal(%I64d,%d,%d,%I64d)}", biCharacterDBID, nPetal, cPetalChangeCode, nGambleDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
#endif
|
||
|
||
#if defined(PRE_ADD_CASH_REFUND)
|
||
int CDNSQLMembership::QueryAddPetalIncomeCashRefund(INT64 biCharacterDBID, INT64 biPurchaseOrderDetailID, int nPetal, OUT int &nTotalPetal)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddPetalIncomeForReward" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryAddPetalIncomeCashRefund] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddPetalIncomeForReward(%I64d,%I64d,%d,?)}", biCharacterDBID, biPurchaseOrderDetailID, nPetal);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nTotalPetal, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
#endif // #if defined(PRE_ADD_CASH_REFUND)
|
||
|
||
int CDNSQLMembership::QueryGetCashBalance(int nAccountDBID, WCHAR *pAccountName, int &nCashBalance)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetCashBalance" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryGetCashBalance] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetCashBalance(%d,?,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_INPUT, SQL_WCHAR, SQL_WVARCHAR, sizeof(WCHAR) * IDLENMAX, 0, pAccountName, sizeof(WCHAR) * IDLENMAX, SqlLen.GetNull(!pAccountName, sizeof(WCHAR) * IDLENMAX));
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nCashBalance, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryDeductCash(int nAccountDBID, INT64 biPurchaseOrderID, int nDelCash, int &nCashOutgoID, int &nCashBalance)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_DeductCash" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryDeductCash] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_DeductCash(%d,%I64d,%d,?,?)}", nAccountDBID, biPurchaseOrderID, nDelCash);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nCashOutgoID, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nCashBalance, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
#if defined( PRE_ADD_NEW_MONEY_SEED )
|
||
int CDNSQLMembership::QueryPurchaseItemBySeed(INT64 biCharacterDBID, bool bPCBang, std::vector<string> &VecItemString, int nTotalPrice, char *pIp, OUT INT64 &biPurchaseOrderID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_PurchaseItemBySeed" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryPurchaseItemBySeed] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_PurchaseItemBySeed(%I64d,%d,'%S','%S','%S','%S',%d,'%S',?,'%S','%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(), nTotalPrice, pIp, VecItemString[Append_Option].c_str(), VecItemString[Append_QuantityLimited].c_str());
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_PurchaseItemBySeed(%I64d,%d,'%S','%S','%S','%S',%d,'%S',?,'%S')}",
|
||
biCharacterDBID, bPCBang, VecItemString[Append_ItemSN].c_str(), VecItemString[Append_Price].c_str(), VecItemString[Append_Limit].c_str(), VecItemString[Append_ItemID].c_str(), nTotalPrice, pIp, VecItemString[Append_Option].c_str());
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
if (nResult == ERROR_NONE && atoi(VecItemString[Append_QuantityLimited].c_str()) > 0)
|
||
QueryGetLimitedItem();
|
||
#endif //#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER)
|
||
|
||
return nResult;
|
||
}
|
||
#endif
|
||
|
||
int CDNSQLMembership::QueryMakeGiftByCoupon(INT64 biCharacterDBID, bool bPCBang, const char *pszItemSNs, const char *pszSelectItemIDs, const char *pszSelectItemOptions, WCHAR *pCoupon, const char *pOrderKey, char *pIp, OUT INT64 &biPurchaseOrderID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_MakeGiftByCoupon" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryMakeGiftByCoupon] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_MakeGiftByCoupon(%I64d,%d,'%S','%S',N'%s','%S','%S',?,%d,'%S')}", biCharacterDBID, bPCBang, pszItemSNs, pszSelectItemIDs, pCoupon, pOrderKey, pIp, false, pszSelectItemOptions);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryMakeGiftByQuest(INT64 biCharacterDBID, bool bPCBang, int nItemSN, const char *pszSelectItemIDs, const char *pszSelectItemOptions, int nQuestID, WCHAR *pMemo, int nLifeSpan, char *pIp, bool bNewFlag, OUT INT64 &biPurchaseOrderID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_MakeGiftByQuest" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryMakeGiftByQuest] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_MakeGiftByQuest(%I64d,%d,%d,'%S',%d,N'%s',%d,'%S',?,%d,'%S')}", biCharacterDBID, bPCBang, nItemSN, pszSelectItemIDs, nQuestID, pMemo, nLifeSpan, pIp, bNewFlag, pszSelectItemOptions);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryMakeGiftByMission(INT64 biCharacterDBID, bool bPCBang, int nItemSN, const char *pszSelectItemIDs, const char *pszSelectItemOptions, int nMissionID, WCHAR *pMemo, int nLifeSpan, char *pIp, bool bNewFlag, OUT INT64 &biPurchaseOrderID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_MakeGiftByMission" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryMakeGiftByMission] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_MakeGiftByMission(%I64d,%d,%d,'%S',%d,N'%s',%d,'%S',?,%d,'%S')}", biCharacterDBID, bPCBang, nItemSN, pszSelectItemIDs, nMissionID, pMemo, nLifeSpan, pIp, bNewFlag, pszSelectItemOptions);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
int CDNSQLMembership::QueryMakeGift(INT64 biCharacterDBID, bool bPCBang, int nItemSN, const char *pszSelectItemIDs, const char *pszSelectItemOptions, const char * pszLimitedQuantityMax, WCHAR *pMemo, int nLifeSpan, int nPayMethodCode, int iOrderKey, char *pIp, bool bNewFlag, OUT INT64 &biPurchaseOrderID)
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
int CDNSQLMembership::QueryMakeGift(INT64 biCharacterDBID, bool bPCBang, int nItemSN, const char *pszSelectItemIDs, const char *pszSelectItemOptions, WCHAR *pMemo, int nLifeSpan, int nPayMethodCode, int iOrderKey, char *pIp, bool bNewFlag, OUT INT64 &biPurchaseOrderID)
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_MakeGift" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryMakeGift] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_MakeGift(%I64d,%d,%d,'%S',N'%s',%d,%d,%d,'%S',?,%d,'%S','%S')}", biCharacterDBID, bPCBang, nItemSN, pszSelectItemIDs, pMemo, nLifeSpan, nPayMethodCode, iOrderKey, pIp, bNewFlag, pszSelectItemOptions, pszLimitedQuantityMax);
|
||
#else //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_MakeGift(%I64d,%d,%d,'%S',N'%s',%d,%d,%d,'%S',?,%d,'%S')}", biCharacterDBID, bPCBang, nItemSN, pszSelectItemIDs, pMemo, nLifeSpan, nPayMethodCode, iOrderKey, pIp, bNewFlag, pszSelectItemOptions);
|
||
#endif //#ifdef PRE_ADD_LIMITED_CASHITEM
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryAddGuildWarMakeGiftQueue(INT64 biCharacterDBID, int nItemSN, const char *pszSelectItemIDs, WCHAR *pMemo, int nLifeSpan, int nPayMethodCode, int nMatchTypeCode , char *pIp, bool bNewFlag)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddGuildWarMakeGiftQueue" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryAddGuildWarMakeGiftQueue] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddGuildWarMakeGiftQueue(%I64d,'0',%d,'%S',N'%s',%d,%d,%d,'%S','0',%d)}", biCharacterDBID, nItemSN, pszSelectItemIDs, pMemo, nLifeSpan, nPayMethodCode, nMatchTypeCode, pIp, bNewFlag);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
return nResult;
|
||
}
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..<2E><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
||
int CDNSQLMembership::QueryAddGiftSendSchedule(const char *pszCharacterDBIDs, int nItemSN, const char *pszSelectItemIDs, WCHAR *pMemo, int nLifeSpan, int nPayMethodCode, char *pIp, bool bNewFlag)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_AddGiftSendSchedule" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryAddGiftSendSchedule] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddGiftSendSchedule('1','%S','',%d,'%S',%d,'%S',N'%s',%d,%d)}", pszCharacterDBIDs, nLifeSpan, pIp, nItemSN, pszSelectItemIDs, pMemo, nPayMethodCode, bNewFlag);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModGiveFailFlag(INT64 biPurchaseOrderID, int nProductSN, int nItemID, bool bItemGiveFail)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModGiveFailFlag" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModGiveFailFlag(%I64d,%d,%d,%d)}", biPurchaseOrderID, nProductSN, nItemID, bItemGiveFail);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModGiveFailFlag2(INT64 biPurchaseOrderDetailID, bool bItemGiveFail)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModGiveFailFlag2" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModGiveFailFlag2(%I64d,%d)}", biPurchaseOrderDetailID, bItemGiveFail);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetListGiveFailItem(INT64 biCharacterDBID, TAGetListGiveFailItem *pA)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetListGiveFailItem" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryGetListGiveFailItem] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
int nVersion = 14;
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListGiveFailItem(%I64d, %d)}", biCharacterDBID, nVersion);
|
||
|
||
pA->nCount = 0;
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
DBPacket::TCashFailItem FailItem = { 0, };
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_C_SBIGINT, &FailItem.biPurchaseOrderID, sizeof(INT64), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_C_SBIGINT, &FailItem.biSenderCharacterDBID, sizeof(INT64), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &FailItem.bGift, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &FailItem.nItemSN, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &FailItem.nItemID, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &FailItem.cItemOption, sizeof(BYTE), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &FailItem.nPaidCashAmount, sizeof(int), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetListGiveFailItem");
|
||
while(1)
|
||
{
|
||
memset(&FailItem, 0, sizeof(FailItem));
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
pA->CashFailItem[pA->nCount] = FailItem;
|
||
pA->nCount++;
|
||
|
||
if (pA->nCount >= CASHINVENTORYDBMAX){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetCountNotReceivedGift(INT64 biCharacterDBID, OUT int &nGiftCount)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetCountNotReceivedGift" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryGetCountNotReceivedGift] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
#if defined(PRE_ADD_GIFT_RETURN)
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetCountNotReceivedGift(%I64d,?,6)}", biCharacterDBID);
|
||
#else
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetCountNotReceivedGift(%I64d,?)}", biCharacterDBID);
|
||
#endif
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nGiftCount, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetListGiftBox(INT64 biCharacterDBID, OUT char &cCount, OUT TGiftInfo *GiftBoxList)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetListGiftBox" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryGetListGiftBox] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
int nVersion = 9;
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListGiftBox(%I64d,%d)}", biCharacterDBID, nVersion);
|
||
|
||
cCount = 0;
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
TGiftInfo Gift = { 0, };
|
||
INT64 biSenderCharacterDBID = 0;
|
||
TIMESTAMP_STRUCT OrderDate = {0,}, GiftExpireDate = {0,};
|
||
WCHAR wszItemID[512] = {0, }, wszItemOptions[512] = {0,};
|
||
bool bGiftReturn;
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &Gift.cPayMethodCode, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_C_SBIGINT, &Gift.nGiftDBID, sizeof(INT64), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_C_SBIGINT, &biSenderCharacterDBID, sizeof(INT64), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, Gift.wszSenderName, sizeof(WCHAR) * MAILNAMELENMAX, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Gift.nItemSN, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, wszItemID, sizeof(WCHAR) * 512, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, wszItemOptions, sizeof(WCHAR) * 512, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &OrderDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, Gift.wszMessage, sizeof(WCHAR) * GIFTMESSAGEMAX, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &GiftExpireDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &bGiftReturn, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &Gift.bNewFlag, sizeof(bool), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetListGiftBox");
|
||
while(1)
|
||
{
|
||
memset(&Gift, 0, sizeof(Gift));
|
||
memset(&OrderDate, 0, sizeof(OrderDate));
|
||
memset(&GiftExpireDate, 0, sizeof(GiftExpireDate));
|
||
memset(&wszItemID, 0, sizeof(wszItemID));
|
||
memset(&wszItemOptions, 0, sizeof(wszItemOptions));
|
||
biSenderCharacterDBID = 0;
|
||
bGiftReturn = false;
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
CTimeParamSet OrderTime(&QueryTimeLog, Gift.tOrderDate, OrderDate, 0, 0, biCharacterDBID);
|
||
if (!OrderTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
CTimeParamSet ExpireTime(&QueryTimeLog, Gift.tGiftExpireDate, GiftExpireDate, 0, 0, biCharacterDBID);
|
||
if (!ExpireTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
|
||
std::vector<std::wstring> IDTokens, OptionTokens;
|
||
TokenizeW(wszItemID, IDTokens, L",");
|
||
int nItemID = 0;
|
||
if (!IDTokens.empty())
|
||
nItemID = _wtoi(IDTokens[0].c_str());
|
||
|
||
TokenizeW(wszItemOptions, OptionTokens, L",");
|
||
int nItemOptions = 0;
|
||
if (!OptionTokens.empty())
|
||
nItemOptions = _wtoi(OptionTokens[0].c_str());
|
||
|
||
Gift.nItemID = nItemID;
|
||
Gift.cItemOption = nItemOptions;
|
||
#if defined(PRE_ADD_GIFT_RETURN)
|
||
Gift.bGiftReturn = bGiftReturn;
|
||
#endif
|
||
GiftBoxList[cCount] = Gift;
|
||
cCount++;
|
||
|
||
if (cCount >= GIFTBOXLISTMAX){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetListItemOfGift(INT64 biPurchaseOrderID, OUT int &nItemSN, OUT int &nItemPrice, OUT std::vector<DBPacket::TItemIDOption> &VecItemList)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetListItemOfGift" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryGetListItemOfGift] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
int nVersion = 2;
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListItemOfGift(%I64d,%d)}", biPurchaseOrderID, nVersion);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
int nNo = 1;
|
||
int nItemID = 0;
|
||
char cOption = -1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nItemSN, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nItemPrice, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nItemID, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &cOption, sizeof(BYTE), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetListItemOfGift");
|
||
while(1)
|
||
{
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA)
|
||
{
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO) )
|
||
break;
|
||
|
||
if (nItemID > 0){
|
||
DBPacket::TItemIDOption IDOption = {0,};
|
||
IDOption.nItemID = nItemID;
|
||
IDOption.cOption = cOption;
|
||
VecItemList.push_back(IDOption);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModGiftReceiveFlag(INT64 biPurchaseOrderID, OUT INT64 &biReplySenderCharacterDBID, OUT WCHAR *pReplyReceiverCharName, OUT INT64 &biGiftSenderCharacterDBID, OUT int &nPaidCashAmount)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModGiftReceiveFlag" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryModGiftReceiveFlag] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModGiftReceiveFlag(%I64d,?,?,?,?)}", biPurchaseOrderID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biReplySenderCharacterDBID, sizeof(INT64), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_WCHAR, SQL_WVARCHAR, sizeof(WCHAR) * NAMELENMAX, 0, pReplyReceiverCharName, sizeof(WCHAR) * NAMELENMAX, &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &biGiftSenderCharacterDBID, sizeof(INT64), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nPaidCashAmount, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
#if defined(PRE_ADD_GIFT_RETURN)
|
||
int CDNSQLMembership::QueryModGiftRejectFlag(INT64 biPurchaseOrderID, TAGiftReturn* pGiftReturn)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModGiftRejectFlag" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, L"[QueryModGiftRejectFlag] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModGiftRejectFlag(%I64d,1,?,?,?)}", biPurchaseOrderID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &pGiftReturn->nReceiverAccountDBID, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 3, SQL_PARAM_OUTPUT, SQL_C_SBIGINT, SQL_BIGINT, sizeof(INT64), 0, &pGiftReturn->biReceiverCharacterDBID, sizeof(INT64), &cblen);
|
||
SQLBindParameter(m_hstmt, 4, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &pGiftReturn->nReceiverTotalMailCount, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
#endif //#if defined(PRE_ADD_GIFT_RETURN)
|
||
|
||
|
||
int CDNSQLMembership::QueryModCharacterName(TQChangeCharacterName* pQ, TAChangeCharacterName* pA)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModCharacterName" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, pQ->cWorldSetID, pQ->nAccountDBID, pQ->nCharacterDBID, 0, L"[QueryModCharacterName] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_ModCharacterName(%I64d,N'%s',%d,%d,%d,%d,?)}",
|
||
pQ->nCharacterDBID,
|
||
pQ->wszCharacterName,
|
||
pQ->btChangeCode,
|
||
10080, // 7<>ϰ<EFBFBD>
|
||
pQ->nReservedPeriodDay,
|
||
pQ->nNextPeriodDay);
|
||
|
||
TIMESTAMP_STRUCT NextDate = {0,};
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_C_TIMESTAMP, SQL_TIMESTAMP, SQL_TIMESTAMP_LEN, 0, &NextDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode( RetCode, L"SQLExecute" );
|
||
CTimeParamSet NextTime(&QueryTimeLog, pA->tNextChangeDate, NextDate, pQ->cWorldSetID, pQ->nAccountDBID, pQ->nCharacterDBID);
|
||
if (!NextTime.IsValid()) return ERROR_DB;
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryIncreaseCharacterMaxCount(UINT nAccountDBID, char cAddCount, char cLimitCount, char &cCharMaxCount)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_IncreaseCharacterMaxCount" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryIncreaseCharacterMaxCount] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_IncreaseCharacterMaxCount(%d,%d,%d,?)}", nAccountDBID, cAddCount, cLimitCount);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cCharMaxCount, sizeof(char), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetCharacterMaxCount(UINT nAccountDBID, char &cCharMaxCount)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetCharacterMaxCount" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryGetCharacterMaxCount] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetCharacterMaxCount(%d,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cCharMaxCount, sizeof(char), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryModCharacterSlotCount(INT64 biCharacterDBID, char cAddCount, char &cCharMaxCount)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModCharacterSlotCount" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, biCharacterDBID, 0, L"[QueryModCharacterSlotCount] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModCharacterSlotCount(%I64d,%d,?)}", biCharacterDBID, cAddCount);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cCharMaxCount, sizeof(char), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetCharacterSlotCount(UINT nAccountDBID, int nWorldID, INT64 biCharacterDBID, char &cCharMaxCount)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetCharacterSlotCount" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, nWorldID, nAccountDBID, biCharacterDBID, 0, L"[QueryGetCharacterSlotCount] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen[2];
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetCharacterSlotCount(%I64d,?,?,?)}", biCharacterDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(char), 0, &cCharMaxCount, sizeof(char), &cblen);
|
||
SQLBindParameter(m_hstmt, 3, SQL_PARAM_INPUT, SQL_INTEGER, SQL_INTEGER, sizeof(UINT), 0, &nAccountDBID, sizeof(UINT), SqlLen[0].GetNull(nAccountDBID <= 0, sizeof(UINT)));
|
||
SQLBindParameter(m_hstmt, 4, SQL_PARAM_INPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nWorldID, sizeof(int), SqlLen[1].GetNull(nWorldID <= 0, sizeof(int)));
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
#if defined(PRE_ADD_PETALTRADE)
|
||
int CDNSQLMembership::QueryPurchaseTradeItemByPetal(INT64 biCharacterDBID, int nPetalPrice)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_PurchaseTradeItemByPetal" );
|
||
|
||
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_PurchaseTradeItemByPetal(%I64d,%d)}", biCharacterDBID, nPetalPrice);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
#endif
|
||
|
||
#if defined(PRE_SPECIALBOX)
|
||
int CDNSQLMembership::QueryAddEventReward(TQAddEventReward *pQ, TAAddEventReward *pA)
|
||
{
|
||
CQueryTimeLog QueryTimeLog("[Membership]P_AddEventReward");
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, pQ->cWorldSetID, pQ->nAccountDBID, pQ->biCharacterDBID, 0, L"[QueryAddEventReward] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
CDNSqlLen SqlLen[2];
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
std::wstring wstrAccountDBID, wstrAccountName, wstrCharacterDBID, wstrCharacterName, wstrItems;
|
||
g_pExtManager->GetXMLAccountDBID(pQ->nAccountDBID, wstrAccountDBID);
|
||
g_pExtManager->GetXMLAccountName(pQ->wszAccountName, wstrAccountName);
|
||
g_pExtManager->GetXMLCharacterDBID(pQ->biCharacterDBID, wstrCharacterDBID);
|
||
g_pExtManager->GetXMLCharacterName(pQ->wszCharacterName, wstrCharacterName);
|
||
g_pExtManager->GetXMLItems(pQ->cCount, pQ->EventRewardItems, wstrItems);
|
||
int nExpirationPeriod = g_pExtManager->GetGlobalWeightIntValue(SpecialBoxKeepPeriod);
|
||
|
||
std::wstring wstrEventName = FormatW(L"%d", pQ->nEventNameUIString);
|
||
std::wstring wstrSenderName = FormatW(L"%d", pQ->nSenderNameUIString);
|
||
std::wstring wstrContent = FormatW(L"%d", pQ->nContentUIString);
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddEventReward(%d,%d,N'%s',N'%s',N'%s',N'%s',%d,%d,%d,%d,%d,N'%s',N'%s',N'%s',%d,N'%s',%d,?)}",
|
||
pQ->cReceiveTypeCode, pQ->cTargetTypeCode, wstrAccountDBID.c_str(), wstrAccountName.c_str(), wstrCharacterDBID.c_str(), wstrCharacterName.c_str(), pQ->cWorldSetID, pQ->cTargetClassCode,
|
||
pQ->cTargetMinLevel, pQ->cTargetMaxLevel, nExpirationPeriod, wstrEventName.c_str(), wstrSenderName.c_str(), wstrContent.c_str(), pQ->nRewardCoin, wstrItems.c_str(), pQ->cEventRewardTypeCode);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
int nNo = 1;
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, nNo++, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &pA->nEventRewardID, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetCountEventReward(int nAccountDBID, INT64 biCharacterDBID, int &nEventTotalCount)
|
||
{
|
||
CQueryTimeLog QueryTimeLog("[Membership]P_GetCountEventReward");
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, biCharacterDBID, 0, L"[QueryGetCountEventReward] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
nEventTotalCount = 0;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetCountEventReward(%d,%I64d)}", nAccountDBID, biCharacterDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nEventTotalCount, sizeof(int), &cblen);
|
||
|
||
CheckColumnCount(nNo, "[Membership]P_GetCountEventReward");
|
||
while(1)
|
||
{
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA)
|
||
{
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO) )
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetListEventReward(TQGetListEventReward *pQ, TAGetListEventReward *pA)
|
||
{
|
||
CQueryTimeLog QueryTimeLog("[Membership]P_GetListEventReward");
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, pQ->cWorldSetID, pQ->nAccountDBID, pQ->biCharacterDBID, 0, L"[QueryGetListEventReward] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListEventReward(%d,%I64d,%d,%d,%d)}", pQ->nAccountDBID, pQ->biCharacterDBID, pQ->cWorldSetID, pQ->cClassCode, pQ->nLevel);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
int nNo = 1;
|
||
TSpecialBoxInfo BoxInfo = {0,};
|
||
TIMESTAMP_STRUCT ReserveDate, ExpirationDate;
|
||
WCHAR wszEventName[MAILTITLELENMAX];
|
||
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &BoxInfo.nEventRewardID, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxInfo.cReceiveTypeCode, sizeof(BYTE), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxInfo.cTargetTypeCode, sizeof(BYTE), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxInfo.cWorldID, sizeof(BYTE), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxInfo.cTargetClassCode, sizeof(BYTE), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxInfo.cTargetMinLevel, sizeof(BYTE), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxInfo.cTargetMaxLevel, sizeof(BYTE), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &ReserveDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &ExpirationDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, wszEventName, sizeof(WCHAR) * MAILTITLELENMAX, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, BoxInfo.wszSenderName, sizeof(WCHAR) * NAMELENMAX, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_WCHAR, BoxInfo.wszContent, sizeof(WCHAR) * MAILTEXTLENMAX, &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_C_SBIGINT, &BoxInfo.biRewardCoin, sizeof(INT64), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxInfo.bSystemSendFlag, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxInfo.cEventRewardTypeCode, sizeof(char), &cblen);
|
||
|
||
CheckColumnCount(nNo, "[Membership]P_GetListEventReward");
|
||
while(1)
|
||
{
|
||
memset(&BoxInfo, 0, sizeof(BoxInfo));
|
||
memset(&ReserveDate, 0, sizeof(ReserveDate));
|
||
memset(&ExpirationDate, 0, sizeof(ExpirationDate));
|
||
memset(&wszEventName, 0, sizeof(wszEventName));
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA)
|
||
{
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO) )
|
||
break;
|
||
|
||
CTimeParamSet ReserveTime(&QueryTimeLog, BoxInfo.tReserveSendDate, ReserveDate, pQ->cWorldSetID, pQ->nAccountDBID, pQ->biCharacterDBID);
|
||
CTimeParamSet ExpirationTime(&QueryTimeLog, BoxInfo.tExpirationDate, ExpirationDate, pQ->cWorldSetID, pQ->nAccountDBID, pQ->biCharacterDBID);
|
||
|
||
if (!ReserveTime.IsValid()){
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
if (!ExpirationTime.IsValid()){
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
|
||
pA->SpecialBoxInfo[pA->cCount] = BoxInfo;
|
||
pA->cCount++;
|
||
|
||
if (pA->cCount >= SpecialBox::Common::ListMax){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetListEventRewardItem(TQGetListEventRewardItem *pQ, TAGetListEventRewardItem *pA)
|
||
{
|
||
CQueryTimeLog QueryTimeLog("[Membership]P_GetListEventRewardItem");
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, pQ->cWorldSetID, pQ->nAccountDBID, 0, 0, L"[QueryGetListEventRewardItem] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListEventRewardItem(%d)}", pQ->nEventRewardID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE){
|
||
int nNo = 1;
|
||
TSpecialBoxItemInfo BoxItemInfo = {0,};
|
||
TIMESTAMP_STRUCT ExpireDate;
|
||
INT64 biItemID = 0;
|
||
int nIndex = 0;
|
||
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nIndex, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &BoxItemInfo.bCashItem, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_C_SBIGINT, &biItemID, sizeof(INT64), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_SMALLINT, &BoxItemInfo.RewardItem.wCount, sizeof(short), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_SMALLINT, &BoxItemInfo.RewardItem.wDur, sizeof(USHORT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &BoxItemInfo.RewardItem.nRandomSeed, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxItemInfo.RewardItem.cLevel, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxItemInfo.RewardItem.cPotential, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &BoxItemInfo.RewardItem.bSoulbound, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxItemInfo.RewardItem.cSealCount, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &BoxItemInfo.RewardItem.cOption, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &BoxItemInfo.RewardItem.nLifespan, sizeof(int), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_BIT, &BoxItemInfo.RewardItem.bEternity, sizeof(bool), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TIMESTAMP, &ExpireDate, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
|
||
CheckColumnCount(nNo, "[Membership]P_GetListEventRewardItem");
|
||
while(1)
|
||
{
|
||
memset(&BoxItemInfo, 0, sizeof(BoxItemInfo));
|
||
memset(&ExpireDate, 0, sizeof(ExpireDate));
|
||
biItemID = 0;
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA)
|
||
{
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO) )
|
||
break;
|
||
|
||
if(!BoxItemInfo.RewardItem.bEternity)
|
||
{
|
||
CTimeParamSet ExpireTime(&QueryTimeLog, BoxItemInfo.RewardItem.tExpireDate, ExpireDate, pQ->cWorldSetID, pQ->nAccountDBID, 0);
|
||
if (!ExpireTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
BoxItemInfo.RewardItem.tExpireDate = 0;
|
||
|
||
BoxItemInfo.RewardItem.nItemID = (int)biItemID;
|
||
|
||
pA->SpecialBoxItem[pA->cCount] = BoxItemInfo;
|
||
pA->cCount++;
|
||
|
||
if (pA->cCount >= SpecialBox::Common::RewardSelectMax){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryAddEventRewardReceiver(int nAccountDBID, INT64 biCharacterDBID, int nEventRewardID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog("[Membership]P_AddEventRewardReceiver");
|
||
|
||
memset(m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_AddEventRewardReceiver(%d,%d,%I64d)}", nEventRewardID, nAccountDBID, biCharacterDBID);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
#endif // #if defined(PRE_SPECIALBOX)
|
||
|
||
#ifdef PRE_ADD_DOORS
|
||
int CDNSQLMembership::QueryGetAuthenticationFlag(UINT nAccountDBID, bool &bFlag)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership] P_DRS_GetMobileAuthenticationFlag" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryGetAuthenticationFlag] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
char szAuthKey[Doors::Common::AuthenticationKey_LenMax];
|
||
memset(szAuthKey, 0, sizeof(szAuthKey));
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_DRS_GetMobileAuthenticationFlag(%d,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_C_BIT, SQL_BIT, sizeof(bool), 0, &bFlag, sizeof(bool), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetDoorsAuthentication(UINT nAccountDBID, char * pszAuthKey)
|
||
{
|
||
if (pszAuthKey == NULL)
|
||
return ERROR_DB;
|
||
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_DRS_IssueAccountAuthenticationKey" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryGetDoorsAuthentication] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
char szAuthKey[Doors::Common::AuthenticationKey_LenMax];
|
||
memset(szAuthKey, 0, sizeof(szAuthKey));
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_DRS_IssueAccountAuthenticationKey(%d,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_CHAR, SQL_VARCHAR, sizeof(szAuthKey), 0, szAuthKey, sizeof(szAuthKey), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
_strcpy(pszAuthKey, Doors::Common::AuthenticationKey_LenMax, szAuthKey, Doors::Common::AuthenticationKey_LenMax);
|
||
return nResult;
|
||
}
|
||
|
||
int CDNSQLMembership::QueryCancelDoorsAuthentication(UINT nAccountDBID)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_DRS_DelAccountAuthentication" );
|
||
|
||
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_DRS_DelAccountAuthentication(%d)}", nAccountDBID);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
#endif //#ifdef PRE_ADD_DOORS
|
||
|
||
int CDNSQLMembership::QueryModCharacterSortCode(UINT nAccountDBID, BYTE cCharacterSortCode)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModCharacterSortCode" );
|
||
|
||
memset(m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_ModCharacterSortCode(%d,%d)}", nAccountDBID, cCharacterSortCode);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
|
||
int CDNSQLMembership::QueryGetCharacterSortCode(UINT nAccountDBID, BYTE &cCharacterSortCode)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetCharacterSortCode" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, nAccountDBID, 0, 0, L"[QueryGetCharacterSortCode] Check Connect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetCharacterSortCode(%d,?)}", nAccountDBID);
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE){
|
||
SQLBindParameter(m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen);
|
||
SQLBindParameter(m_hstmt, 2, SQL_PARAM_OUTPUT, SQL_TINYINT, SQL_TINYINT, sizeof(BYTE), 0, &cCharacterSortCode, sizeof(BYTE), &cblen);
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
CheckRetCode(RetCode, L"SQLExecute");
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
#if defined(PRE_ADD_GAMEQUIT_REWARD)
|
||
int CDNSQLMembership::QueryModNewbieRewardFlag(UINT nAccountDBID, bool bRewardFlag)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModNewbieRewardFlag" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModNewbieRewardFlag(%d,%d)}", nAccountDBID, bRewardFlag);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
#endif // #if defined(PRE_ADD_GAMEQUIT_REWARD)
|
||
|
||
#if defined(PRE_ADD_HEARTBEAT_TO_SQL)
|
||
int CDNSQLMembership::QueryHeartbeat()
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_HeartBeat" );
|
||
|
||
memset( m_wszQuery, 0, sizeof(m_wszQuery) );
|
||
swprintf( m_wszQuery, L"{?=CALL dbo.P_HeartBeat}");
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
#endif //#if defined(PRE_ADD_HEARTBEAT_TO_SQL)
|
||
|
||
#if defined(PRE_ADD_WORLD_EVENT)
|
||
int CDNSQLMembership::QueryEventList(TQEventList * pQ, TAEventList * pA)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "P_GetListEventStatus" );
|
||
|
||
if(CheckConnect() < 0)
|
||
{
|
||
g_Log.Log(LogType::_ERROR, pQ->cWorldSetID, pQ->nAccountDBID, 0, 0, L"[QueryEventList] Check Connect Fail\r\n");
|
||
pA->nRetCode = ERROR_DB;
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
int nResult = ERROR_DB;
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
|
||
swprintf(m_wszQuery, L"{CALL dbo.P_GetListDNEvent}");
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if(CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if(CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
TEventInfo Info;
|
||
memset(&Info, 0, sizeof(Info));
|
||
|
||
TIMESTAMP_STRUCT beginTime = {0, }, endTime = {0, };
|
||
memset(&beginTime, 0, sizeof(TIMESTAMP_STRUCT));
|
||
memset(&endTime, 0, sizeof(TIMESTAMP_STRUCT));
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.EventID, sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.WroldID, sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TYPE_TIMESTAMP, &beginTime, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TYPE_TIMESTAMP, &endTime, sizeof(TIMESTAMP_STRUCT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.EventType[0], sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.EventType[1], sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.EventType[2], sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.Att[0], sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.Att[1], sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.Att[2], sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.Att[3], sizeof(UINT), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &Info.Att[4], sizeof(UINT), &cblen);
|
||
CheckColumnCount(nNo, "P_GetListDNEvent");
|
||
while(1)
|
||
{
|
||
memset(&Info, 0, sizeof(Info));
|
||
memset(&beginTime, 0, sizeof(beginTime));
|
||
memset(&endTime, 0, sizeof(endTime));
|
||
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if(RetCode == SQL_NO_DATA || pA->cCount >= EVENTLISTMAX)
|
||
{
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
if((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
CTimeParamSet BeginTime(&QueryTimeLog, Info._tBeginTime, beginTime, pQ->cWorldSetID, pQ->nAccountDBID);
|
||
if (!BeginTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
|
||
CTimeParamSet EndTime(&QueryTimeLog, Info._tEndTime, endTime, pQ->cWorldSetID, pQ->nAccountDBID);
|
||
if (!EndTime.IsValid())
|
||
{
|
||
nResult = ERROR_DB;
|
||
break;
|
||
}
|
||
|
||
if( pQ->cWorldSetID == 0 || Info.WroldID == 0 || pQ->cWorldSetID == Info.WroldID )
|
||
{
|
||
memcpy(&pA->EventList[pA->cCount], &Info, sizeof(Info));
|
||
pA->cCount++;
|
||
}
|
||
|
||
if(pA->cCount >= EVENTLISTMAX){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
}
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
}
|
||
}
|
||
return ERROR_NONE;
|
||
}
|
||
#endif //#if defined(PRE_ADD_WORLD_EVENT)
|
||
|
||
#if defined( PRE_ADD_NEWCOMEBACK )
|
||
int CDNSQLMembership::QueryModComebackFlag(UINT nAccountDBID, bool bRewardComeback)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_ModReturnRewardFalg" );
|
||
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_ModReturnRewardFalg(%d,%d)}", nAccountDBID, bRewardComeback);
|
||
|
||
return CommonReturnValueQuery(m_wszQuery);
|
||
}
|
||
#endif
|
||
|
||
#if defined( PRE_WORLDCOMBINE_PVP )
|
||
int CDNSQLMembership::QueryUpdateWorldPvPRoom(TQUpdateWorldPvPRoom* pQ, TAUpdateWorldPvPRoom *pA)
|
||
{
|
||
CQueryTimeLog QueryTimeLog( "[Membership]P_GetListSimpleConfigValue" );
|
||
|
||
if (CheckConnect() < ERROR_NONE){
|
||
g_Log.Log(LogType::_ERROR, 0, 0, 0, 0, L"[QueryUpdateWorldPvPRoom] CheckConnect Fail\r\n");
|
||
return ERROR_DB;
|
||
}
|
||
|
||
SQLRETURN RetCode;
|
||
SQLLEN cblen;
|
||
|
||
int nResult = ERROR_DB;
|
||
memset(&m_wszQuery, 0, sizeof(m_wszQuery));
|
||
swprintf(m_wszQuery, L"{?=CALL dbo.P_GetListSimpleConfigValue(2)}");
|
||
|
||
RetCode = SQLPrepare(m_hstmt, m_wszQuery, SQL_NTSL);
|
||
if (CheckRetCode(RetCode, L"SQLPrepare") == ERROR_NONE)
|
||
{
|
||
SQLBindParameter( m_hstmt, 1, SQL_PARAM_OUTPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &nResult, sizeof(int), &cblen );
|
||
|
||
RetCode = SQLExecute(m_hstmt);
|
||
if (CheckRetCode(RetCode, L"SQLExecute") == ERROR_NONE)
|
||
{
|
||
char cCode = 0;
|
||
int nValue = 0;
|
||
|
||
int nNo = 1;
|
||
SQLBindCol(m_hstmt, nNo++, SQL_TINYINT, &cCode, sizeof(char), &cblen);
|
||
SQLBindCol(m_hstmt, nNo++, SQL_INTEGER, &nValue, sizeof(int), &cblen);
|
||
CheckColumnCount(nNo, "[Membership]P_GetListSimpleConfigValue");
|
||
while(1)
|
||
{
|
||
RetCode = SQLFetch(m_hstmt);
|
||
if (RetCode == SQL_NO_DATA){
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
|
||
if ((CheckRetCode(RetCode, L"SQLFetch") < ERROR_NONE) &&(RetCode != SQL_SUCCESS_WITH_INFO)) break;
|
||
|
||
if( cCode == 2 )
|
||
{
|
||
pA->bFlag = nValue > 0 ? true : false;;
|
||
nResult = ERROR_NONE;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SQLCloseCursor(m_hstmt);
|
||
return nResult;
|
||
};
|
||
#endif |