点卡充值(1)

来源:互联网 发布:网络高清解码矩阵 编辑:程序博客网 时间:2024/05/17 09:22


//////gameplaza.rc添加菜单

POPUP "充值"
    BEGIN
        MENUITEM "网银充值",                    IDM_MenuEBankRecharge
        MENUITEM "支付宝充值",                  IDM_MenuAlipayRecharge
        MENUITEM "点卡充值",                    IDM_MenuDiankaRecharge
    END


////////////resource.h

#define IDM_MenuEBankRecharge           253
#define IDM_MenuAlipayRecharge          254
#define IDM_MenuDiankaRecharge          255



///////////////CPlatformFrame.OnCommand

case IDC_NAVIGATION+2:  //充值
{
//by caoyongrong 5/4/2015
//构造菜单
CSkinMenu UserInfoMenu;
UserInfoMenu.CreateMenu();


UserInfoMenu.AppendMenu(IDM_MenuEBankRecharge,TEXT("网银充值"));
UserInfoMenu.AppendMenu(IDM_MenuAlipayRecharge,TEXT("支付宝充值"));
UserInfoMenu.AppendMenu(IDM_MenuDiankaRecharge,TEXT("点卡充值"));
UserInfoMenu.TrackPopupMenu(this);
return TRUE;
}


///////////////CPlatformFrame.OnCommand 菜单相应部分

case IDM_MenuEBankRecharge://网上银行网页
{

//变量定义
ASSERT(CParameterGlobal::GetInstance()!=NULL);
CParameterGlobal * pParameterGlobal=CParameterGlobal::GetInstance();


//构造地址
TCHAR szNavigation[256]=TEXT("");
if(m_sLastIp.Find(_T("192."))>=0)
_sntprintf(szNavigation,CountArray(szNavigation),TEXT("http://%s/Pay/PayChinaBank.aspx"),m_sLastIp.GetBuffer(0));
else
_sntprintf(szNavigation,CountArray(szNavigation),TEXT("%s/Pay/PayChinaBank.aspx"),szPlatformLink);
//连接地址
ShellExecute(NULL,TEXT("OPEN"),szNavigation,NULL,NULL,SW_NORMAL);
WebBrowse(szNavigation,true);
}
case IDM_MenuAlipayRecharge://支付宝网页
{
//变量定义
ASSERT(CParameterGlobal::GetInstance()!=NULL);
CParameterGlobal * pParameterGlobal=CParameterGlobal::GetInstance();


//构造地址
TCHAR szNavigation[256]=TEXT("");
if(m_sLastIp.Find(_T("192."))>=0)
_sntprintf(szNavigation,CountArray(szNavigation),TEXT("http://%s/Pay/PayZFB.aspx"),m_sLastIp.GetBuffer(0));
else
_sntprintf(szNavigation,CountArray(szNavigation),TEXT("%s/Pay/PayZFB.aspx"),szPlatformLink);
//连接地址
ShellExecute(NULL,TEXT("OPEN"),szNavigation,NULL,NULL,SW_NORMAL);
WebBrowse(szNavigation,true);
}
case IDM_MenuDiankaRecharge://讨厌做对话框,做成网页的多好呀,哎,没办法,跟上头协商了无果
{
CDlgDiankaView *pDlgDiankaView=new CDlgDiankaView;
pDlgDiankaView->Create(IDD_DLGDIANKAVIEW);
pDlgDiankaView->ShowWindow(SW_SHOW);
pDlgDiankaView->CenterWindow();


}

case IDM_MenuDiankaRecharge://点卡充值对话框
{
CDlgDiankaView *pDlgDiankaView=new CDlgDiankaView;
pDlgDiankaView->Create(IDD_DLGDIANKAVIEW);
pDlgDiankaView->ShowWindow(SW_SHOW);
pDlgDiankaView->CenterWindow();
return TRUE;
}

---------------------------------------------------------------------------------------------------------------

------------------------------------------添加对话框的类------------------------------------------------

////////////添加图片资源 系统模块\客户端组件\游戏广场\Res\PLATFORM_FRAME

DIANKA_BACK_VIEW.png

BT_MORE_RECHARGE.bmp


-------------png------------

DIANKA_BACK_VIEW        PNG                     "Res\\PLATFORM_FRAME\\DIANKA_BACK_VIEW.png"

-------------bitmap------------

IDB_BT_MORE_RECHARGE    BITMAP                  "res\\PLATFORM_FRAME\\BT_MORE_RECHARGE.bmp"

//////要修改对话框style

//////////对话框添加控件

IDD_DLGDIANKAVIEW DIALOG  0, 0, 316, 233
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU


FONT 9, "宋体"
BEGIN
    PUSHBUTTON      "",IDC_OK,25,42,24,13
    PUSHBUTTON      "",IDC_CANCEL,60,42,24,13  
    PUSHBUTTON      "",IDC_CLOSE,0,42,24,13  
    EDITTEXT        IDC_EDIT_ACCOUNT,46,25,170,20,SS_CENTERIMAGE|ES_AUTOHSCROLL | 
                    ES_NOHIDESEL | NOT WS_BORDER
    EDITTEXT        IDC_EDIT_COMFIRM_ACCOUNT,46,57,170,20,ES_AUTOHSCROLL | 
                    ES_NOHIDESEL | NOT WS_BORDER
    EDITTEXT        IDC_EDIT_DIANKA,46,89,170,20,ES_AUTOHSCROLL | 
                    ES_NOHIDESEL | NOT WS_BORDER
    EDITTEXT        IDC_EDIT_PASS,46,121,170,20,ES_PASSWORD|ES_AUTOHSCROLL | 
                    ES_NOHIDESEL | NOT WS_BORDER
END
///////////////添加对应的控件id

///////////////////////////resource.h

#define IDC_CLOSE 3053
#define IDC_OK 3054
#define IDC_CANCEL 3055
#define IDC_EDIT_ACCOUNT 3056
#define IDC_EDIT_COMFIRM_ACCOUNT 3057
#define IDC_EDIT_DIANKA 3058
#define IDC_EDIT_PASS 3059 

///////////////////////对应的控件变量

///////////////////////

private:
//控件变量
CPngImage m_ImageBackView;//背景
CBitImage m_ImageMoreRecharge;
CSkinButton m_btClose;
CSkinButton m_btOk;
CSkinButton m_btCancel;
CSkinEdit   m_editAccount;//用户账号
CSkinEdit   m_editComfirmAccount;//用户确认账号
CSkinEdit   m_editDianka;//点卡账号
CSkinEdit   m_editPass;



///////////////////绑定控件id与控件变量

void CDlgDiankaView::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX,IDC_CLOSE,m_btClose);
DDX_Control(pDX,IDC_OK,m_btOk);
DDX_Control(pDX,IDC_CANCEL,m_btCancel);
DDX_Control(pDX, IDC_EDIT_ACCOUNT, m_editAccount);
DDX_Control(pDX, IDC_EDIT_COMFIRM_ACCOUNT, m_editComfirmAccount);
DDX_Control(pDX, IDC_EDIT_DIANKA, m_editDianka);
DDX_Control(pDX, IDC_EDIT_PASS, m_editPass);

}


BEGIN_MESSAGE_MAP(CDlgDiankaView, CDialog)
ON_WM_ERASEBKGND()/////对应onerase()函数
ON_WM_NCHITTEST()
ON_WM_CREATE()
//ON_BN_CLICKED(IDC_CLOSE, OnBnClickedClose)
ON_BN_CLICKED(IDC_OK, OnBnClickedOk)
ON_BN_CLICKED(IDC_CANCEL, OnBnClickedCancel)
ON_EN_CHANGE(IDC_EDIT_ACCOUNT,OnEnChangeAccount)///当编辑框文本改变时,对应的函数映射
ON_EN_CHANGE(IDC_EDIT_COMFIRM_ACCOUNT,OnEnChangeConfirmAccount)
ON_EN_CHANGE(IDC_EDIT_DIANKA,OnEnChangeDianka)
ON_EN_CHANGE(IDC_EDIT_PASS,OnEnChangePass)
END_MESSAGE_MAP()


//////////////////////声明函数

VOID OnEnChangeAccount();
VOID OnEnChangeConfirmAccount();
VOID OnEnChangeDianka();
VOID OnEnChangePass();


//状态变量
bool m_bChangeAccount;//账号是否改变
bool m_bChangeConfirmAccount;//确认账号是否改变
bool m_bChangeDianka;//点卡账号是否改变
bool m_bChangePass;//密码是否改变


TCHAR m_szAccount[LEN_ACCOUNTS];

TCHAR m_szConfirmAccount[LEN_ACCOUNTS];
TCHAR m_szDianka[LEN_DIANKA];
TCHAR m_szPass[LEN_PASSWORD];

/////相应使用点卡

void CDlgDiankaView::OnBnClickedOk()
{
if (GetInformation()==false)
{
Invalidate(TRUE);
return;
}


//隐藏窗口
ShowWindow(SW_HIDE);


CWHEncrypt::MD5Encrypt(m_szPass,m_szInsurePass);



//查询保险柜密码是否正确
m_dwLinkType = 1;  
if (m_MissionManager.AvtiveMissionItem(this,false)==false)  
{


return;
}
}

////////////////////////////CDlgInsureSavePassword 

CMissionManager m_MissionManager;//任务管理

DWORD           m_dwLinkType;

//连接事件
virtual bool OnEventMissionLink(INT nErrorCode);
//关闭事件
virtual bool OnEventMissionShut(BYTE cbShutReason);
//读取事件
virtual bool OnEventMissionRead(TCP_Command Command, VOID * pData, WORD wDataSize);


//////////////////构造函数

m_dwLinkType = 0;
//任务组件
m_MissionManager.InsertMissionItem(this);

void CDlgDiankaView::OnBnClickedOk()
{
if (GetInformation()==false)
{
Invalidate(TRUE);
return;
}


//隐藏窗口
ShowWindow(SW_HIDE);


CWHEncrypt::MD5Encrypt(m_szPass,m_szInsurePass);



//查询保险柜密码是否正确
m_dwLinkType = 1;  
if (m_MissionManager.AvtiveMissionItem(this,false)==false)  
{


return;
}
}


bool CDlgDiankaView::OnEventMissionLink(INT nErrorCode)
{
//错误处理
if (nErrorCode!=0L)
{


//显示提示
CInformation Information(this);
Information.ShowMessageBox(TEXT("尝试了所有的服务器都无法成功连接服务器,请留意网站维护公告!"),MB_ICONERROR);
__super::OnCancel();
}
else if(m_dwLinkType ==1)
{
//变量定义
CMD_GP_DiankaUse    DiankaUse;
ZeroMemory(&DiankaUse,sizeof(DiankaUse));
m_bIsPasswordRight = false;
lstrcpyn(DiankaUse.szAccount,m_szAccount,CountArray(DiankaUse.szAccount));
lstrcpyn(DiankaUse.szDianka,m_szDianka,CountArray(DiankaUse.szDianka));
lstrcpyn(DiankaUse.szPassword,m_szInsurePass,CountArray(DiankaUse.szPassword));
/////发送socket
m_MissionManager.SendData(MDM_GP_USER_SERVICE,SUB_GP_USER_DIANKA_USE,&DiankaUse,sizeof(DiankaUse));


}


return true;
}


//读取事件
bool CDlgDiankaView::OnEventMissionRead(TCP_Command Command, VOID * pData, WORD wDataSize)
{
//关闭连接这很重要
m_MissionManager.ConcludeMissionItem(this,false);


//命令处理
if (Command.wMainCmdID==MDM_GP_USER_SERVICE)
{
switch (Command.wSubCmdID)
{

case SUB_GP_USER_DIANKA_USE_SUCCESS:
{
//CDlgInsurePlaza DlgInsurePlaza;
//CDlgInsureSave *pDlgInsureSave = CDlgInsureSave::GetInstance();
CDialog::OnCancel();
CMD_GP_DiankaUseResult *pDiankaUseResult = (CMD_GP_DiankaUseResult *)pData;
TCHAR szStr[200];
ZeroMemory(szStr,sizeof(szStr));
_sntprintf(szStr,CountArray(szStr),TEXT("充值成功!\n\n获得金币数:%d\n\n赠送:蓝钻%d天\n%s"),pDiankaUseResult->nCardGold,pDiankaUseResult->nMemberDays,pDiankaUseResult->szCardPrize);
//提示信息
CInformation Information(this);
Information.ShowMessageBox(szStr,MB_ICONINFORMATION);
//if (pDlgInsureSave)
//{
// pDlgInsureSave->OnPassWordMessage(m_szInsurePass);
//}
return true;
}
case SUB_GP_USER_DIANKA_USE_FAILURE:
{
//CDlgInsurePlaza DlgInsurePlaza;
//CDlgInsureSave *pDlgInsureSave = CDlgInsureSave::GetInstance();
CDialog::OnCancel();
TCHAR *pszErrorDescrip = (TCHAR *)pData;
//提示信息
CInformation Information(this);
Information.ShowMessageBox(pszErrorDescrip,MB_ICONERROR);
//if (pDlgInsureSave)
//{
// pDlgInsureSave->OnPassWordMessage(m_szInsurePass);
//}
return true;
}
}
}


//错误断言
ASSERT(FALSE);


return true;
}





//使用点卡
#define SUB_GP_USER_DIANKA_USE 1300
#define SUB_GP_USER_DIANKA_USE_FAILURE 1301
#define SUB_GP_USER_DIANKA_USE_SUCCESS 1302


//////////////////CAttemperEngineSink.OnTCPNetworkMainPCUserService

/////////////////抛给数据库处理

case SUB_GP_USER_DIANKA_USE:
{
//cyrlog 
{
FILE *log;       
log = fopen("c:\\log20.txt","a");  
fprintf(log,"SUB_GP_USER_DIANKA_USE111\n");  
fclose(log);  
}
//cyrlog
ASSERT(wDataSize==sizeof(CMD_GP_DiankaUse));
if (wDataSize!=sizeof(CMD_GP_DiankaUse)) return false;
CMD_GP_DiankaUse *pDiankaUse = (CMD_GP_DiankaUse*)pData;

//指针判断
ASSERT(pDiankaUse != NULL);
if(pDiankaUse == NULL) return false;

pDiankaUse->szAccount[CountArray(pDiankaUse->szAccount)-1]=0;
pDiankaUse->szDianka[CountArray(pDiankaUse->szDianka)-1]=0;
pDiankaUse->szPassword[CountArray(pDiankaUse->szPassword)-1]=0;
CMD_GP_DiankaUse DiankaUse;
ZeroMemory(&DiankaUse,sizeof(DiankaUse));


lstrcpyn(DiankaUse.szAccount,pDiankaUse->szAccount,CountArray(DiankaUse.szAccount));
lstrcpyn(DiankaUse.szDianka,pDiankaUse->szDianka,CountArray(DiankaUse.szDianka));
lstrcpyn(DiankaUse.szPassword,pDiankaUse->szPassword,CountArray(DiankaUse.szPassword));
//cyrlog 
{
char szAccount1[LEN_ACCOUNTS],szDianka[LEN_DIANKA],szPass[LEN_MD5];
WideCharToMultiByte(CP_ACP,0,pDiankaUse->szAccount,-1,szAccount1,sizeof(szAccount1),NULL,NULL);
WideCharToMultiByte(CP_ACP,0,pDiankaUse->szDianka,-1,szDianka,sizeof(szDianka),NULL,NULL);
WideCharToMultiByte(CP_ACP,0,pDiankaUse->szPassword,-1,szPass,sizeof(szPass),NULL,NULL);


FILE *log;       
log = fopen("c:\\log20.txt","a");  
fprintf(log,"accountninini:%s dianka:%s pa:%s\n",szAccount1,szDianka,szPass);  
fclose(log);  
}
//cyrlog
////cyrlog 
//{
// FILE *log;       
// log = fopen("c:\\log20.txt","a");  
// fprintf(log,"account2:%s %s %s\n",CW2A(pDiankaUse->szAccount),CW2A(pDiankaUse->szDianka),CW2A(pDiankaUse->szPassword));  
// fclose(log);  
//}
////cyrlog
if (pDiankaUse)
{
{
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GR_DIANKA_USE,dwSocketID,&DiankaUse,sizeof(DiankaUse));
}


}
return true;
}

///系统模块\服务组件\登录服务器/DataBasePacket.h 

//点卡使用
#define DBR_GR_DIANKA_USE               1300                
#define DBO_GP_DIANKA_USE_FAILURE        1301               
#define DBO_GP_DIANKA_USE_SUCCESS        1302     


////CDataBaseEngineSink.OnDataBaseEngineRequest.switch 

case DBR_GR_DIANKA_USE:
{
return OnRequestUserDiankaUse(dwContextID,pData,wDataSize);
}


//点卡使用
bool CDataBaseEngineSink::OnRequestUserDiankaUse(DWORD dwContextID, VOID * pData, WORD wDataSize)
{


try
{
//效验参数
ASSERT(wDataSize==sizeof(CMD_GP_DiankaUse));
if (wDataSize!=sizeof(CMD_GP_DiankaUse)) return false;


//请求处理
CMD_GP_DiankaUse * pDiankaUse=(CMD_GP_DiankaUse *)pData;
//cyrlog 
{
char szAccount1[LEN_ACCOUNTS],szDianka[LEN_DIANKA],szPass[LEN_MD5];
WideCharToMultiByte(CP_ACP,0,pDiankaUse->szAccount,-1,szAccount1,sizeof(szAccount1),NULL,NULL);
WideCharToMultiByte(CP_ACP,0,pDiankaUse->szDianka,-1,szDianka,sizeof(szDianka),NULL,NULL);
WideCharToMultiByte(CP_ACP,0,pDiankaUse->szPassword,-1,szPass,sizeof(szPass),NULL,NULL);


FILE *log;       
log = fopen("c:\\log20.txt","a");  
fprintf(log,"accountrequest:%s dianka:%s pa:%s\n",szAccount1,szDianka,szPass);  
fclose(log);  
}
//cyrlog
//指针判断
ASSERT(pDiankaUse != NULL);
if(pDiankaUse == NULL) return false;



//构造参数
m_TreasureDBAide.ResetParameter();
m_TreasureDBAide.AddParameter(TEXT("@strAccount"),pDiankaUse->szAccount);
m_TreasureDBAide.AddParameter(TEXT("@strDianka"),pDiankaUse->szDianka);
m_TreasureDBAide.AddParameter(TEXT("@strPassword"),pDiankaUse->szPassword);
//输出参数
TCHAR szDescribeString[128]=TEXT("");
m_TreasureDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);


//执行查询
LONG lResultCode=m_TreasureDBAide.ExecuteProcess(TEXT("GSP_GR_DiankaUse"),true);


//结果处理
CDBVarValue DBVarValue;
m_TreasureDBModule->GetParameter(TEXT("@strErrorDescribe"),DBVarValue);
//cyrlog 
{
FILE *log;       
log = fopen("c:\\log20.txt","a");  
fprintf(log,"strErrorDescribe:%s\n",CW2A(CW2CT(DBVarValue.bstrVal)));  
fclose(log);  
}
//cyrlog
if(lResultCode == DB_SUCCESS)
{
CMD_GP_DiankaUseResult DiankaUseResult;
ZeroMemory(&DiankaUseResult,sizeof(DiankaUseResult));
DiankaUseResult.nMemberOrder = m_TreasureDBAide.GetValue_INT(TEXT("MemberOrder"));
DiankaUseResult.nMemberDays = m_TreasureDBAide.GetValue_INT(TEXT("MemberDays"));
DiankaUseResult.nCardGold = m_TreasureDBAide.GetValue_INT(TEXT("CardGold"));
//////cyrlog
{
CStdioFile filelog(_T("c:\\log30.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
filelog.SeekToEnd();//先定位到文件尾部
CString strTmp;
strTmp.Format(_T("nMemberDays:%d gold:%d\r\n"),DiankaUseResult.nMemberDays,DiankaUseResult.nCardGold);
filelog.WriteString(strTmp);
filelog.Close;
}
//////cyrlog
m_TreasureDBAide.GetValue_String(TEXT("CardPrice"),DiankaUseResult.szCardPrize,sizeof(DiankaUseResult.szCardPrize));
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_DIANKA_USE_SUCCESS,dwContextID,&DiankaUseResult,sizeof(DiankaUseResult));
}
else
{
TCHAR szDescribeString[200];
ZeroMemory(&szDescribeString,sizeof(szDescribeString));
lstrcpyn(szDescribeString,CW2CT(DBVarValue.bstrVal),CountArray(szDescribeString));
//cyrlog 
{
char szStr[200];
WideCharToMultiByte(CP_ACP,0,szDescribeString,-1,szStr,sizeof(szStr),NULL,NULL);



FILE *log;       
log = fopen("c:\\log30.txt","a");  
fprintf(log,"szDescribeString-3:%s \n",szStr);  
fclose(log);  
}
//cyrlog
m_pIDataBaseEngineEvent->OnEventDataBaseResult(DBO_GP_DIANKA_USE_FAILURE,dwContextID,szDescribeString,sizeof(szDescribeString));
}




return true;
}
catch (IDataBaseException * pIException)
{
//错误信息
CTraceService::TraceString(pIException->GetExceptionDescribe(),TraceLevel_Exception);


//错误处理
OnInsureDisposeResult(dwContextID,DB_ERROR,TEXT("由于数据库操作异常,请您稍后重试!"),false);


return false;
}


return true;
}




0 0
原创粉丝点击