SmsManager/K_CJCard.cpp

447 lines
11 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// K_CJCard.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "K_CJCard.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CK_CJCard dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_CJCard_Add.h"
#include "DLG_KHCard_Agent.h"
CK_CJCard::CK_CJCard(CWnd* pParent /*=NULL*/)
: CDialog(CK_CJCard::IDD, pParent)
{
//{{AFX_DATA_INIT(CK_CJCard)
m_strBegin = _T("");
m_strEnd = _T("");
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
}
void CK_CJCard::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CK_CJCard)
DDX_Control(pDX, IDC_CJCARD_S1, m_S_S1);
DDX_Control(pDX, IDC_CJCARD_AGENT, m_L_Agent);
DDX_Control(pDX, IDC_CJCARD_LIST, m_wndList);
DDX_Text(pDX, IDC_CJCARD_BEGIN, m_strBegin);
DDV_MaxChars(pDX, m_strBegin, 16);
DDX_Text(pDX, IDC_CJCARD_END, m_strEnd);
DDV_MaxChars(pDX, m_strEnd, 16);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CK_CJCard, CDialog)
//{{AFX_MSG_MAP(CK_CJCard)
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_CJCARD_LIST, OnDblclkCjcardList)
ON_NOTIFY(NM_RCLICK, IDC_CJCARD_LIST, OnRclickCjcardList)
ON_NOTIFY(LVN_KEYDOWN, IDC_CJCARD_LIST, OnKeydownCjcardList)
ON_BN_CLICKED(IDC_CJCARD_QUERY, OnCjcardQuery)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_CJCARD_ADD , On_CJCard_Add )
ON_COMMAND( MENU_CJCARD_AGENT , On_CJCard_Agent )
ON_COMMAND( MENU_CJCARD_EXPORT , On_CJCard_Export )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CK_CJCard message handlers
BOOL CK_CJCard::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
{
return false;
}
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) )
{
return false;
}
return m_pMainFrame->SendFrame(SMSFUNC_AGENT_NAME,NULL,0);
}
void CK_CJCard::Close()
{
//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
while (!m_Agent.IsEmpty())
{
ANS_Agent_NameData * pData = m_Agent.GetHead();
m_Agent.RemoveHead();
delete pData;
}
}
BOOL CK_CJCard::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CK_CJCard::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CK_CJCard::OnInitDialog()
{
CDialog::OnInitDialog();
//È¡µÃ¹²ÓòÎÊý
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_AGENT) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_AGENT_DISABLE) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) ); m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,40; ¿¨ ºÅ,100; ÃÜ Âë,150; ¼Û ¸ñ,80;´úÀíÉÌ,60;ÆôÓÃÓû§,80;ÆôÓÃʱ¼ä,150; ÆôÓÃIP,150;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CK_CJCard::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
CRect rect;
m_S_S1.GetWindowRect(&rect);
m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5);
}
}
BOOL CK_CJCard::ProcessSocket(Socket_Head *pHead)
{
//È¡´úÀíÉÌÃû×Ö
if (pHead->lFuncType == SMSFUNC_AGENT_NAME)
{
m_bRefresh = true; //ÒѾ­Ë¢Ð¹ý
ANS_Agent_Name * pAgent = (ANS_Agent_Name *)pHead->pFrame;
ANS_Agent_NameData * pData = (ANS_Agent_NameData *)(pHead->pFrame+sizeof(ANS_Agent_Name));
m_L_Agent.ResetContent(); //ɾ³ýÔ­ÒÑÓÐµÄÆóÒµ
m_L_Agent.AddString( _T("ËùÓдúÀíÉÌ") );
this->Close(); //¹Ø±ÕÔ­¶ÓÁÐ
for ( int i=0;i<pAgent->lCount;i++ )
{
ANS_Agent_NameData * pNewData = new ANS_Agent_NameData;
*pNewData = *pData;
POSITION pos = m_Agent.AddTail(pNewData);
long lItem = m_L_Agent.AddString( pData->szAgentName );
m_L_Agent.SetItemData( lItem , (DWORD_PTR)pos);
pData ++;
}
m_L_Agent.SetCurSel(0);
return true;
}
if ( pHead->lFuncType == SMSFUNC_CJCARD_ADD )
{
ANS_CJCard_Add * pAdd = (ANS_CJCard_Add *)pHead->pFrame;
CString str;
str.Format( _T("Éú³É³äÖµ¿¨³É¹¦£¬¹²Éú³É%d¸ö£¬ºÅ¶ÎΪ%d-%d"),pAdd->lCount,pAdd->lABegin,pAdd->lAEnd );
MessageBox(str,_T("³äÖµ¿¨"),MB_ICONINFORMATION );
return true;
}
if ( pHead->lFuncType == SMSFUNC_CJCARD_SEE )
{
ANS_CJCard_See * pSee = (ANS_CJCard_See *)pHead->pFrame;
ANS_CJCard_SeeData * pData = (ANS_CJCard_SeeData *)(pHead->pFrame+sizeof(ANS_CJCard_See));
m_wndList.ShowWindow( SW_HIDE );
m_wndList.DeleteAllItems();
TCHAR szBuf[32];
//m_wndList.SetHeadings(_T("ÐòºÅ,40; ¿¨ ºÅ,80; ÃÜ Âë,120; ¼Û ¸ñ,80;´úÀíÉÌ,120; ÆôÓÃʱ¼ä,120; ÆôÓÃIP,100;"));
for ( int i=0 ; i< pSee->lCount ; i++ )
{
m_wndList.InsertItem( i , _itot(i+1,szBuf,10),pData->lStatus);
m_wndList.SetItemText(i,1,pData->szCardNum );
m_wndList.SetItemText(i,2,pData->szPasswd );
_stprintf( szBuf , _T("%4d.00") , pData->lPrice );
m_wndList.SetItemText(i,3,szBuf);
_stprintf( szBuf , _T("%d") , pData->lAgentID );
m_wndList.SetItemText(i,4,szBuf );
_stprintf( szBuf , _T("%d") , pData->lUserID );
m_wndList.SetItemText(i,5,szBuf );
_stprintf(szBuf , _T("%04d.%02d.%02d %02d:%02d") , pData->tUse.wYear,pData->tUse.wMonth,pData->tUse.wDay,pData->tUse.wHour,pData->tUse.wMinute );
m_wndList.SetItemText(i,6,szBuf );
m_wndList.SetItemText(i,7,pData->szUseIP );
m_wndList.SetItemData(i,pData->lCardID );
pData++;
}
m_wndList.ShowWindow( SW_SHOW );
return true;
}
if ( pHead->lFuncType == SMSFUNC_CJCARD_AGENT )
{
ANS_CJCard_Agent * pAgent = (ANS_CJCard_Agent *)pHead->pFrame;
ANS_CJCard_AgentData * pData = (ANS_CJCard_AgentData *)(pHead->pFrame+sizeof(ANS_CJCard_Agent));
CString str;
str.Format( _T("%d") , pAgent->lAgentID );
for ( int i=0 ; i<pAgent->lCount ; i++ )
{
m_wndList.SetItemText( pData->lItem ,4, str );
pData ++;
}
return true;
}
return false;
}
long CK_CJCard::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CK_CJCard::OnDblclkCjcardList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CK_CJCard::OnRclickCjcardList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CK_CJCard::OnKeydownCjcardList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CK_CJCard::ShowRMenu()
{
if (!m_pMainFrame->GetUserPurview(PURVIEW_FILT,false)) //ûÓв鿴ȨÏÞ
return ;
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE,false) )
{
return ;
}
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
if ( lItem >= 0 )
bLock = isLockItem( lItem , false ); //È¡µÃÊÇ·ñÕýÔÚËø¶¨
//Ìí¼Ó
menu.AppendMenu(MF_STRING , MENU_CJCARD_ADD, _T(" Ìí ¼Ó ") );
//ÐÞ¸Ä
if ( lItem >=0 && !bLock)
{
menu.AppendMenu(MF_STRING , MENU_CJCARD_AGENT, _T(" ¸ü¸Ä´úÀíÉÌ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_CJCARD_AGENT , _T(" ¸ü¸Ä´úÀíÉÌ") );
}
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_CJCARD_EXPORT, _T(" µ¼ ³ö ") );
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
void CK_CJCard::On_CJCard_Add()
{
DLG_CJCard_Add dlg(this);
dlg.SetParam(&m_Agent);
if ( dlg.DoModal()==IDOK )
{
REQ_CJCard_Add * pAdd= new REQ_CJCard_Add;
pAdd->lAgentID = dlg.m_lAgentID;
pAdd->lCount = dlg.m_lCount;
pAdd->lPrice = dlg.m_lPrice;
m_pMainFrame->SendFrame(SMSFUNC_CJCARD_ADD,(BYTE *)pAdd,sizeof(REQ_CJCard_Add));
}
}
void CK_CJCard::On_CJCard_Export()
{
//È¡±£´æÎļþÃû
static TCHAR BASED_CODE szFilter[] = _T("TXT Files (*.txt)|*.txt||");
CFileDialog dlg(false,_T("txt"),NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if (dlg.DoModal() != IDOK)
return ;
CString strName = dlg.GetPathName();
CFile file;
if ( !file.Open( strName , CFile::modeCreate|CFile::modeWrite ) )
{
MessageBox( _T("´ò¿ªÎļþ´íÎó£¬Çë¼ì²é!") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
long lCount = m_wndList.GetItemCount();
CString strTemp;
CString strWrite;
for ( int i=0 ; i<lCount ; i++ )
{
strTemp = m_wndList.GetItemText(i,1);
strWrite = strTemp+_T(",");
strTemp = m_wndList.GetItemText(i,2);
strWrite += strTemp+_T(",");
strTemp = m_wndList.GetItemText(i,3);
strWrite += strTemp;
strWrite += _T("\r\n");
file.Write( strWrite , strWrite.GetLength());
}
file.Close();
MessageBox( _T("µ¼³öÎļþ³É¹¦£¡") );
}
void CK_CJCard::On_CJCard_Agent()
{
//ȡѡÖÐÐèÒªÐ޸ĵÄÊýÁ¿
long lSelCount = m_wndList.GetSelectedCount();
ANS_CJCard_AgentData * pModify = new ANS_CJCard_AgentData[lSelCount];
memset(pModify,0,sizeof(ANS_CJCard_AgentData)*lSelCount);
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
long lIndex=0;
while(pos)
{
pModify[lIndex].lItem =m_wndList.GetNextSelectedItem(pos);
if ( m_wndList.GetIconIndex(pModify[lIndex].lItem) == 0 ) //δÆôÓõIJÅÄÜÐÞ¸Ä
{
pModify[lIndex].lCardID=m_wndList.GetItemData(pModify[lIndex].lItem);
lIndex++;
}
}
DLG_KHCard_Agent dlg(this);
dlg.SetParam(&m_Agent,lIndex);
if ( dlg.DoModal()==IDOK )
{
long lSize = sizeof(REQ_CJCard_Agent)+sizeof(ANS_CJCard_AgentData)*lIndex;
BYTE * pData = new BYTE[lSize];
memset(pData,0,lSize);
REQ_CJCard_Agent * pAgent=(REQ_CJCard_Agent *)pData;
ANS_CJCard_AgentData * pSend = (ANS_CJCard_AgentData *)(pData+sizeof(REQ_CJCard_Agent));
pAgent->lCount = lIndex;
pAgent->lAgentID = dlg.m_lAgentID;
memcpy( pSend , pModify , sizeof(ANS_CJCard_AgentData)*lIndex);
m_pMainFrame->SendFrame(SMSFUNC_CJCARD_AGENT,(BYTE *)pData,lSize);
}
delete pModify;
}
void CK_CJCard::OnCjcardQuery()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) )
{
return ;
}
if ( !UpdateData(true))
return ;
LONGLONG m_lBegin = _ttoi64(m_strBegin);
LONGLONG m_lEnd = _ttoi64(m_strEnd);
if ( m_lEnd>0 || m_lBegin>0 )
{
if ( m_lEnd < 10010000000 )
m_lEnd += 10010000000;
if ( m_lBegin < 10010000000 )
m_lBegin += 10010000000;
UpdateData(false);
if ( m_lEnd<m_lBegin )
{
MessageBox( _T("²éѯµÄÆðʼºÅÂë²»ÄÜ´óÓÚ½áÊøºÅÂ룡") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
}
else
{
m_lEnd=0;
m_lBegin=0;
}
REQ_CJCard_See * pSee= new REQ_CJCard_See;
long lAgent = m_L_Agent.GetCurSel();
if ( lAgent == 0 ) //Ñ¡ÁËËùÓÐÆóÒµ
{
pSee->lAgentID = -1;
}
else
{
POSITION pos = (POSITION)m_L_Agent.GetItemData(lAgent);
POSITION pos2 = pos;
ANS_Agent_NameData * pData = m_Agent.GetNext( pos );
if (pData)
{
pSee->lAgentID = pData->lAgentID;
}
else
{
return;
}
}
pSee->lABegin = m_lBegin;;
pSee->lAEnd = m_lEnd;
m_pMainFrame->SendFrame(SMSFUNC_CJCARD_SEE,(BYTE *)pSee,sizeof(REQ_CJCard_See));
}
BOOL CK_CJCard::isLockItem(long lItem, BOOL bShowWarning)
{
BOOL b = (m_wndList.GetIconIndex(lItem) == 2);
if ( b && bShowWarning )
{
MessageBox( _T("Õý¼±»Ëø¶¨£¬ÇëµÈ´ý·þÎñÆ÷·µ»ØºóÔÙ²Ù×÷!") , _T("Ëø¶¨ÖÐ") , MB_ICONINFORMATION );
}
return b;
}
void CK_CJCard::SetLockItem(long lItem, BOOL bLock)
{
if ( bLock )
m_wndList.SetIconIndex( lItem , 2 );
else
m_wndList.SetIconIndex( lItem , 0 );
}