点卡充值(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, 233STYLE 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;
}
- 点卡充值(1)
- 点卡充值(2)
- 点卡充值成功后,游戏大厅用户的金币没有刷新
- 短连接失败(由于当前服务器处理繁忙,点卡充值操作处理失败,请稍后再重试!错误代码:2)
- 1
- 1
- 1
- 1
- 1
- 1
- 1》
- 1
- 1
- 1
- 1
- (1)
- 1
- 1
- 13个小技巧帮你征服Xcode
- PHP安装配置Xdebug模块详解(转)
- [前端] canvas绘制视频
- 范数的理解
- [Leetcode 204, Easy] Count Primes
- 点卡充值(1)
- IBM预言,5年内智能电脑将具备人类味觉等五种感觉
- .h头文件 .lib动态链接库文件 .dll 动态链接库
- 智能硬件创业,要注意哪些关键问题?
- swith 引起的: expected expression before 'XXX'的 error
- SAP常见问题与解决办法
- 进阶_线程(AsyncTask)_150504
- leetcode || 142、Linked List Cycle II
- 面试题60:把二叉树打印成多行