// C_User.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "C_User.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CC_User dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_Corp_User_Modify.h" #include "DLG_Corp_User_Add.h" #include "DLG_User_Pay.h" #include "DLG_User_Modify.h" #include "DLG_Bill.h" #include "DLG_BBS_Send.h" CC_User::CC_User(CWnd* pParent /*=NULL*/) : CDialog(CC_User::IDD, pParent) { //{{AFX_DATA_INIT(CC_User) m_lCorp = -1; //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; memset(&m_MUser,0,sizeof(m_MUser)); m_pDLGBill = NULL; m_pDlgUserModify = NULL; m_pUserModify = NULL; } void CC_User::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CC_User) DDX_Control(pDX, IDC_C_USER_SMSUSED2, m_S_SmsUsed2); DDX_Control(pDX, IDC_C_USER_SMSUSED, m_S_SmsUsed); DDX_Control(pDX, IDC_C_USER_CORPID, m_E_CorpID); DDX_Control(pDX, IDC_C_USER_LIST, m_wndList); DDX_Control(pDX, IDC_C_USER_S1, m_S_S1); DDX_Control(pDX, IDC_C_USER_CORP, m_L_Corp); DDX_CBIndex(pDX, IDC_C_USER_CORP, m_lCorp); //}}AFX_DATA_MAP DDX_Control(pDX, IDC_C_USER_MMSUSED, m_S_MmsUsed); DDX_Control(pDX, IDC_C_USER_MMSUSED2, m_S_MmsUsed2); DDX_Control(pDX, IDC_C_USER_CORPID2, m_E_CorpID2); } BEGIN_MESSAGE_MAP(CC_User, CDialog) //{{AFX_MSG_MAP(CC_User) ON_WM_SIZE() ON_BN_CLICKED(IDC_C_USER_QUERY2, OnCUserQuery2) ON_CBN_SELCHANGE(IDC_C_USER_CORP, OnSelchangeCUserCorp) ON_NOTIFY(NM_DBLCLK, IDC_C_USER_LIST, OnDblclkCUserList) ON_NOTIFY(NM_RCLICK, IDC_C_USER_LIST, OnRclickCUserList) //}}AFX_MSG_MAP ON_COMMAND(MENU_USER2_ADD , On_User_Add ) ON_COMMAND(MENU_USER2_SEE , On_User_See ) ON_COMMAND(MENU_USER2_DEL , On_User_Del ) ON_COMMAND(MENU_USER2_PASSWD , On_User_Passwd ) ON_COMMAND(MENU_USER2_SDK , On_User_SDK ) ON_COMMAND(MENU_USER2_PAY , On_User_Pay ) ON_COMMAND(MENU_USER2_PAYMMS , On_User_PayMms ) ON_COMMAND(MENU_USER2_BILL , On_User_Bill ) ON_COMMAND(MENU_USER2_SENDMSG, On_User_SendMsg) ON_BN_CLICKED(IDC_C_USER_QUERY3, &CC_User::OnBnClickedCUserQuery3) ON_BN_CLICKED(IDC_C_USER_QUERY4, &CC_User::OnBnClickedCUserQuery4) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CC_User message handlers BOOL CC_User::OnInitDialog() { CDialog::OnInitDialog(); //取得共用参数 //CMainFrame * pFrame = static_cast ((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_USER) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,50; 登录名,80;SDK,40;短信可用,75;彩信可用,75; 姓名,80;特服号,60; 职位,80; 电话,100; 手机,120;登录次数,70;登录时间,130")); m_wndList.SetGridLines(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); m_bInit = true; UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CC_User::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 CC_User::RefreshInfo() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) ) { return false; } m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0); return true; } void CC_User::Close() { //清除队列中的内容 while (!m_Corp.IsEmpty()) { ANS_Corp_NameData * pData = m_Corp.GetHead(); m_Corp.RemoveHead(); delete pData; } Close_User(); } BOOL CC_User::ProcessSocket(Socket_Head *pHead) { CString strTemp; //取过滤信息 if (pHead->lFuncType == SMSFUNC_CORP_NAME) { m_bRefresh = true; //已经刷新过 ANS_Corp_Name * pCorp = (ANS_Corp_Name *)pHead->pFrame; ANS_Corp_NameData * pData = (ANS_Corp_NameData *)(pHead->pFrame+sizeof(ANS_Corp_Name)); m_L_Corp.ResetContent(); //删除原已有的企业 this->Close(); //关闭原队列 CString str; for ( int i=0;ilCount;i++ ) { //if ( pData->lAgentID == m_pMainFrame->m_lUserID && // pData->bAgentModify ) //是我的企业 if ( pData->lAgentID == m_pMainFrame->m_lUserID ) { ANS_Corp_NameData * pNewData = new ANS_Corp_NameData; *pNewData = *pData; POSITION pos = m_Corp.AddTail(pNewData); strTemp.Format( _T("%d-%s"),pData->lCorpID,pData->szCorpName); long lItem = m_L_Corp.AddString( strTemp ); m_L_Corp.SetItemData( lItem , (DWORD)pos); } pData ++; } if ( m_L_Corp.GetCount()>0 ) m_L_Corp.SetCurSel(0); RefreshUser(); return true; } //查看用户记录 if (pHead->lFuncType == SMSFUNC_CORP_USER) { ANS_Corp_User * pUser = (ANS_Corp_User *)pHead->pFrame; ANS_Corp_UserData * pDataA= (ANS_Corp_UserData *)(pHead->pFrame+sizeof(ANS_Corp_User)); if ( pUser->lCount < 0 ) //权限不足,返回错误 return true; m_MUser = *pUser; Close_User(); m_wndList.ShowWindow( SW_HIDE ); //加快显示速度 m_wndList.DeleteAllItems(); CString str; str.Format(_T("企业可用短信:%d"), pUser->lSmsUsed); m_S_SmsUsed.SetWindowText(str); str.Format(_T("彩信:%d"), pUser->lMmsUsed); m_S_MmsUsed.SetWindowText(str); POSITION pos; TCHAR Buf[32]={0}; long lSMSCount=0; long lMMSCount=0; for ( int i = 0 ; i< pUser->lCount ; i++ ) { ANS_Corp_UserData * pData = new ANS_Corp_UserData; *pData = pDataA[i]; pos = m_User.AddTail( pData ); _stprintf( Buf , _T("%d") , i+1 ); m_wndList.InsertItem( i , Buf , 0 ); m_wndList.SetItemData( i , (DWORD)pos); long lItem=1; m_wndList.SetItemText( i , lItem++ , pData->szLoginName ); if ( pData->bSDK & SDK_SDK ) m_wndList.SetItemText( i , lItem++ , _T("是") ); else m_wndList.SetItemText( i , lItem++ , _T("否") ); if ( pData->lSMSUsed == -100 ) _stprintf( Buf , _T(" %s") , _T("无限制")); else { _stprintf( Buf , _T("%8d") , pData->lSMSUsed); lSMSCount += pData->lSMSUsed; } m_wndList.SetItemText( i , lItem++ , Buf ); //_stprintf( Buf , _T("%10d") , pData->lSMSSendAll); //m_wndList.SetItemText( i , lItem++ , Buf ); if ( pData->lMmsUsed == -100 ) _stprintf( Buf , _T(" %s") , _T("无限制")); else { _stprintf( Buf , _T("%8d") , pData->lMmsUsed); lMMSCount += pData->lMmsUsed; } m_wndList.SetItemText( i , lItem++ , Buf ); //_stprintf( Buf , _T("%10d") , pData->lMmsSendAll); //m_wndList.SetItemText( i , lItem++ , Buf ); m_wndList.SetItemText( i , lItem++ , pData->szName ); m_wndList.SetItemText( i , lItem++ , pData->szSMSNum ); m_wndList.SetItemText( i , lItem++ , pData->szJob ); m_wndList.SetItemText( i , lItem++ , pData->szTel ); m_wndList.SetItemText( i , lItem++ , pData->szMobile ); _stprintf( Buf , _T("%8d") , pData->lLoginCount); m_wndList.SetItemText( i , lItem++ , Buf ); _stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tLoginTime.wYear,pData->tLoginTime.wMonth,pData->tLoginTime.wDay,pData->tLoginTime.wHour,pData->tLoginTime.wMinute); m_wndList.SetItemText( i , lItem++ , Buf ); } str.Format( _T("已分配可用短信:%d"),lSMSCount ); m_S_SmsUsed2.SetWindowText(str); str.Format( _T("彩信:%d"),lMMSCount ); m_S_MmsUsed2.SetWindowText(str); /* m_wndList.InsertItem(i , _T("") , -1); m_wndList.SetItemData( i , 0 ); i++; m_wndList.InsertItem(i , _T("共") , 0 ); _stprintf( Buf , _T("%8d") , lSMSCount); m_wndList.SetItemText( i , 8 , Buf ); m_wndList.SetItemData( i , 0 ); */ m_wndList.ShowWindow(SW_SHOW ); //加快显示速度 return true; } if ( pHead->lFuncType == SMSFUNC_CORP_USERMODIFY ) { ANS_Corp_UserModify * pUser = (ANS_Corp_UserModify *)pHead->pFrame; ANS_Corp_UserData * pData= (ANS_Corp_UserData *)(pHead->pFrame+sizeof(ANS_Corp_UserModify)+sizeof(ANS_Corp_UserData)*(pUser->lCount-1)); for ( int i=pUser->lCount-1 ; i>=0 ; i-- ) { if ( pData->ucStatus == CORP_USER_ADD ) { ANS_Corp_UserData * pUser2 = new ANS_Corp_UserData; *pUser2 = *pData; POSITION pos = m_User.AddTail( pUser2 ); long lCount = m_wndList.GetItemCount(); TCHAR Buf[32]={0}; _stprintf( Buf, _T("%d") , lCount +1 ); //设置新的数据 m_wndList.InsertItem( lCount , Buf , 0); m_wndList.SetItemData( lCount, (DWORD)pos ); long lItem=1; m_wndList.SetItemText( i , lItem++ , pData->szLoginName ); if ( pData->bSDK & SDK_SDK ) m_wndList.SetItemText( i , lItem++ , _T("是") ); else m_wndList.SetItemText( i , lItem++ , _T("否") ); if ( pData->lSMSUsed == -100 ) _stprintf( Buf , _T(" %s") , _T("无限制")); else { _stprintf( Buf , _T("%8d") , pData->lSMSUsed); } m_wndList.SetItemText( i , lItem++ , Buf ); //_stprintf( Buf , _T("%10d") , pData->lSMSSendAll); //m_wndList.SetItemText( i , lItem++ , Buf ); if ( pData->lMmsUsed == -100 ) _stprintf( Buf , _T(" %s") , _T("无限制")); else { _stprintf( Buf , _T("%8d") , pData->lMmsUsed); } m_wndList.SetItemText( i , lItem++ , Buf ); //_stprintf( Buf , _T("%10d") , pData->lMmsSendAll); //m_wndList.SetItemText( i , lItem++ , Buf ); m_wndList.SetItemText( i , lItem++ , pData->szName ); m_wndList.SetItemText( i , lItem++ , pData->szSMSNum ); m_wndList.SetItemText( i , lItem++ , pData->szJob ); m_wndList.SetItemText( i , lItem++ , pData->szTel ); m_wndList.SetItemText( i , lItem++ , pData->szMobile ); _stprintf( Buf , _T("%8d") , pData->lLoginCount); m_wndList.SetItemText( i , lItem++ , Buf ); _stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tLoginTime.wYear,pData->tLoginTime.wMonth,pData->tLoginTime.wDay,pData->tLoginTime.wHour,pData->tLoginTime.wMinute); m_wndList.SetItemText( i , lItem++ , Buf ); } if ( pData->ucStatus == CORP_USER_MODIFY ) { TCHAR Buf[32]={0}; POSITION pos = (POSITION)m_wndList.GetItemData(pData->lItem); POSITION pos2 = pos; SetLockItem(pData->lItem , false ); ANS_Corp_UserData * pData2 = m_User.GetNext( pos ); *pData2 = *pData; long lItem=1; m_wndList.SetItemText( i , lItem++ , pData->szLoginName ); if ( pData->bSDK & SDK_SDK ) m_wndList.SetItemText( i , lItem++ , _T("是") ); else m_wndList.SetItemText( i , lItem++ , _T("否") ); if ( pData->lSMSUsed == -100 ) _stprintf( Buf , _T(" %s") , _T("无限制")); else { _stprintf( Buf , _T("%8d") , pData->lSMSUsed); } m_wndList.SetItemText( i , lItem++ , Buf ); //_stprintf( Buf , _T("%10d") , pData->lSMSSendAll); //m_wndList.SetItemText( i , lItem++ , Buf ); if ( pData->lMmsUsed == -100 ) _stprintf( Buf , _T(" %s") , _T("无限制")); else { _stprintf( Buf , _T("%8d") , pData->lMmsUsed); } m_wndList.SetItemText( i , lItem++ , Buf ); //_stprintf( Buf , _T("%10d") , pData->lMmsSendAll); //m_wndList.SetItemText( i , lItem++ , Buf ); m_wndList.SetItemText( i , lItem++ , pData->szName ); m_wndList.SetItemText( i , lItem++ , pData->szSMSNum ); m_wndList.SetItemText( i , lItem++ , pData->szJob ); m_wndList.SetItemText( i , lItem++ , pData->szTel ); m_wndList.SetItemText( i , lItem++ , pData->szMobile ); _stprintf( Buf , _T("%8d") , pData->lLoginCount); m_wndList.SetItemText( i , lItem++ , Buf ); _stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tLoginTime.wYear,pData->tLoginTime.wMonth,pData->tLoginTime.wDay,pData->tLoginTime.wHour,pData->tLoginTime.wMinute); m_wndList.SetItemText( i , lItem++ , Buf ); } if ( pData->ucStatus == CORP_USER_DEL ) { POSITION pos = (POSITION)m_wndList.GetItemData(pData->lItem); POSITION pos2 = pos; SetLockItem(pData->lItem , false ); m_User.RemoveAt(pos); m_wndList.DeleteItem(pData->lItem); } pData --; } return true; } //查看支付记录 if (pHead->lFuncType == SMSFUNC_USER_PAY) { ANS_User_Pay * pPay = (ANS_User_Pay *)pHead->pFrame; ANS_User_PayData * pData= (ANS_User_PayData *)(pHead->pFrame+sizeof(ANS_User_Pay)); if ( pPay->lCount < 0 ) //权限不足,返回错误 return true; DLG_User_Pay dlg(this); dlg.SetParam( *pPay , pData,m_MUser.bAgentModify,m_pMainFrame->m_fUsed ); if ( dlg.DoModal() == IDOK && dlg.m_lModifyCount>0 ) { long lSize = sizeof(REQ_User_PayModify) + sizeof(ANS_User_PayData)*dlg.m_lModifyCount; BYTE * pDataSend = new BYTE[lSize];memset( pDataSend , 0 , lSize ); REQ_User_PayModify * pModifySend = (REQ_User_PayModify*)pDataSend; ANS_User_PayData * pPaySend = (ANS_User_PayData *)(pDataSend+sizeof(REQ_User_PayModify)); pModifySend->lUserID = pPay->lUserID; pModifySend->lPayType= pPay->lPayType; pModifySend->lItem = pPay->lItem; pModifySend->lSmsSendAll= dlg.m_PayReq.lSmsSendAll; //取得修改后的总额 pModifySend->lSmsUsed= dlg.m_PayReq.lSmsUsed; pModifySend->lCount = dlg.m_lModifyCount; //清除队列中的内容 ANS_User_PayData * pPayTemp; while (!dlg.m_Pay.IsEmpty()) { pPayTemp = dlg.m_Pay.GetHead(); dlg.m_Pay.RemoveHead(); if (pPayTemp->ucStatus != 0 ) //不为0,需要修改 { *pPaySend = *pPayTemp; pPaySend ++; } delete pPayTemp; } m_pMainFrame->SendFrame( SMSFUNC_USER_PAYMODIFY , pDataSend , lSize ); } else { //清除队列中的内容 ANS_User_PayData * pPayTemp; while (!dlg.m_Pay.IsEmpty()) { pPayTemp = dlg.m_Pay.GetHead(); dlg.m_Pay.RemoveHead(); delete pPayTemp; } } return true; } //缴费记录修改 if (pHead->lFuncType == SMSFUNC_USER_PAYMODIFY) { ANS_User_PayModify* pModify = (ANS_User_PayModify*)pHead->pFrame; ANS_User_PayData * pData = (ANS_User_PayData *)(pHead->pFrame+sizeof(ANS_User_PayModify)); if ( pModify->lItem >= 0 ) { TCHAR Buf[32]; POSITION pos = (POSITION)m_wndList.GetItemData(pModify->lItem); ANS_Corp_UserData * pData2 = m_User.GetNext( pos ); if ( pData2 ) { //pData2->fTotal = pModify->fTotal; //pData2->lTotalSms = pModify->lTotalSms; if ( pData->lPayType == 0 ) { pData2->lSMSUsed = pModify->lSmsUsed; _stprintf( Buf,_T("%8d"),pData2->lSMSUsed ); m_wndList.SetItemText(pModify->lItem,3,Buf); } if ( pData->lPayType == 1 ) { pData2->lMmsUsed = pModify->lSmsUsed; _stprintf( Buf,_T("%8d"),pData2->lMmsUsed ); m_wndList.SetItemText(pModify->lItem,4,Buf); } //_stprintf( Buf,_T("%10.2f"),pData2->fTotal ); //m_wndList.SetItemText(pModify->lItem,6,Buf); } } else { MessageBox(_T("充值异常,请检查后再重试!"), _T("错误"), MB_ICONERROR); } return true; } if (pHead->lFuncType == SMSFUNC_SIGNNAME_ADD || pHead->lFuncType == SMSFUNC_CORP_FILE) { if (m_pDlgUserModify) { m_pDlgUserModify->ProcessSocket(pHead); } if (m_pUserModify) { m_pUserModify->ProcessSocket(pHead); } return true; } return false; } BOOL CC_User::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame) { if (pHead->lFuncType == SMSFUNC_BILL2 || pHead->lFuncType == SMSFUNC_BILL4) { if ( m_pDLGBill ) m_pDLGBill->ProcessSocket(pHead,pFrame); return true; } if (pHead->lFuncType == SMSFUNC_SIGNNAME_ADD || pHead->lFuncType == SMSFUNC_CORP_FILE) { if (m_pDlgUserModify) { m_pDlgUserModify->ProcessSocket(pHead, pFrame); } if (m_pUserModify) { m_pUserModify->ProcessSocket(pHead, pFrame); } return true; } return false; } BOOL CC_User::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CC_User::ReHide() { ShowWindow( SW_HIDE ); return true; } void CC_User::OnCUserQuery2() { CString strFind; m_E_CorpID.GetWindowText(strFind); if ( strFind.GetLength()>0 ) { long lSel = this->GetCurrentSelected(); long lCount = m_wndList.GetItemCount(); m_wndList.UnSelectAllItems(); for ( int i=lSel+1 ; i=0 || str2.Find(strFind)>=0) { m_wndList.SelectItem(i,false); //m_wndList.SelectItem(i); m_wndList.EnsureVisible(i,true); m_wndList.SetFocus(); return ; } } for ( i=0 ; i=0 || str2.Find(strFind)>=0) { m_wndList.SelectItem(i); m_wndList.EnsureVisible(i,true); m_wndList.SetFocus(); return ; } } } } void CC_User::RefreshUser() { memset(&m_MUser,0,sizeof(m_MUser)); if ( !UpdateData(true) ) return ; if (m_lCorp<0) return ; CString str; m_S_SmsUsed.SetWindowText(str); m_S_MmsUsed.SetWindowText(str); REQ_Corp_User * pUser = new REQ_Corp_User; memset( pUser , 0 , sizeof(REQ_Corp_User)); POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp); POSITION pos2 = pos; ANS_Corp_NameData * pData = m_Corp.GetNext( pos ); if (pData) { m_strCorpName = pData->szCorpName; //记录当前企业名称 _tcscpy( pUser->szCorpName , pData->szCorpName ); _tcscpy( pUser->szSMSNum , pData->szSMSNum ); pUser->lSmsUsed = pData->lSMSUsed; pUser->fTotal = pData->fTotal; pUser->lCorpID = pData->lCorpID; pUser->bAgentModify = pData->bAgentModify; pUser->lUserNumLen = pData->lUserNumLen; m_pMainFrame->SendFrame( SMSFUNC_CORP_USER , (BYTE*)pUser , sizeof(REQ_Corp_User) ); //取联系人信息 str.Format( _T("企业可用短信:%d"),pData->lSMSUsed ); m_S_SmsUsed.SetWindowText(str); str.Format( _T("用户已分配可用短信总额:%d"),0 ); m_S_SmsUsed2.SetWindowText(str); str.Format( _T("彩信:%d"),pData->lMMSUsed ); m_S_MmsUsed.SetWindowText(str); str.Format( _T("彩信:%d"),0 ); m_S_MmsUsed2.SetWindowText(str); } else { delete pUser; return; } } void CC_User::Close_User() { //清除队列中的内容 while (!m_User.IsEmpty()) { ANS_Corp_UserData * pData = m_User.GetHead(); m_User.RemoveHead(); delete pData; } } void CC_User::OnSelchangeCUserCorp() { RefreshUser(); } void CC_User::OnDblclkCUserList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_User_See(); } void CC_User::OnRclickCUserList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } long CC_User::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CC_User::ShowRMenu() { if ( m_L_Corp.GetCurSel()< 0 ) return ; CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); if ( lItem >= 0 ) bLock = isLockItem( lItem , false ); //取得是否正在锁定 //添加 if ( m_MUser.bAgentModify ) { menu.AppendMenu(MF_STRING , MENU_USER2_ADD, _T(" 添 加 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_ADD, _T(" 添 加 ") ); } menu.AppendMenu(MF_SEPARATOR ); //查看 if ( lItem >=0 && !bLock ) { menu.AppendMenu(MF_STRING , MENU_USER2_SEE , _T(" 查 看 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_SEE , _T(" 查看 ") ); } //删除 if ( lItem >=0 && !bLock && m_MUser.bAgentModify ) { menu.AppendMenu(MF_STRING , MENU_USER2_PASSWD, _T(" 修 改 ") ); menu.AppendMenu(MF_STRING , MENU_USER2_DEL , _T(" 删 除 ") ); //menu.AppendMenu(MF_STRING , MENU_USER2_SDK , _T(" SDK权限 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_PASSWD, _T(" 修 改 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_DEL , _T(" 删 除 ") ); //menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_SDK , _T(" SDK权限 ") ); } #ifndef SMSCENTER_NX menu.AppendMenu(MF_SEPARATOR ); //Pay if ( lItem >=0 && !bLock ) { menu.AppendMenu(MF_STRING , MENU_USER2_PAY , _T(" 短信充值 ") ); menu.AppendMenu(MF_STRING , MENU_USER2_PAYMMS , _T(" 彩信充值 ") ); #ifndef SMSCENTER_ADC menu.AppendMenu(MF_STRING , MENU_USER2_BILL , _T(" 帐单查询 ") ); #endif } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_PAY , _T(" 短信充值 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_PAYMMS , _T(" 彩信充值 ") ); #ifndef SMSCENTER_ADC menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_BILL , _T(" 帐单查询 ") ); #endif } #endif if ( m_pMainFrame->m_bYJ & AGENT_YJ ) { menu.AppendMenu(MF_SEPARATOR ); //Pay if ( lItem >=0 && !bLock ) { menu.AppendMenu(MF_STRING , MENU_USER2_SENDMSG , _T(" 发送消息 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_USER2_SENDMSG , _T(" 发送消息 ") ); } } //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } BOOL CC_User::isLockItem(long lItem, BOOL bShowWarning) { BOOL b = (m_wndList.GetIconIndex(lItem) == 1); if ( b && bShowWarning ) { MessageBox( _T("正录被锁定,请等待服务器返回后再操作!") , _T("锁定中") , MB_ICONINFORMATION ); } return b; } void CC_User::SetLockItem(long lItem, BOOL bLock) { if ( bLock ) m_wndList.SetIconIndex( lItem , 1 ); else m_wndList.SetIconIndex( lItem , 0 ); } void CC_User::On_User_Add() { if ( !m_MUser.bAgentModify ) //不允许修改 return ; ANS_Corp_UserData user={0}; user.szUserType[0]='1'; //用户类型 user.lCorpID=m_MUser.lCorpID; //user.bSDK = true; //默认不带SDK功能 user.ulPurviewType = PURVIEWTYPE_KF; user.ulPurview =PURVIEW_LOGIN|PURVIEW_SENDG|PURVIEW_SENDP|PURVIEW_RECVP|PURVIEW_GADDRESS_SEE|PURVIEW_PADDRESS|PURVIEW_SMSEMAIL|PURVIEW_CALENDAR|PURVIEW_SMSSP; DLG_User_Modify dlg(this); m_pDlgUserModify = &dlg; dlg.SetParam(user,0,-1,m_MUser.lCorpID, m_MUser.szCorpName,0,this->m_pMainFrame->m_Setup.szIP,0,true); if ( dlg.DoModal() == IDOK ) { ANS_Corp_UserData user2 = dlg.GetParam(); user2.ucStatus = CORP_USER_ADD; ::GetLocalTime( &user2.tCreateTime ); long lSize = sizeof(REQ_Corp_UserModify) + sizeof(ANS_Corp_UserData); BYTE * pDataSend = new BYTE[lSize];memset( pDataSend , 0 , lSize ); REQ_Corp_UserModify * pModifySend = (REQ_Corp_UserModify*)pDataSend; ANS_Corp_UserData * pUserSend = (ANS_Corp_UserData *)(pDataSend+sizeof(REQ_Corp_UserModify)); pModifySend->lCorpID = m_MUser.lCorpID; pModifySend->lCount = 1; *pUserSend = user2; m_pMainFrame->SendFrame( SMSFUNC_CORP_USERMODIFY , pDataSend , lSize ); } m_pDlgUserModify = NULL; } void CC_User::On_User_See() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); if ( pos<=0 ) return ; POSITION pos2 = pos; ANS_Corp_UserData * pData = m_User.GetNext( pos ); if (pData) { DLG_Corp_User_Modify dlg(this); m_pUserModify = &dlg; dlg.SetParam(this->m_pMainFrame,this->m_strCorpName,*pData,pos2); if ( dlg.DoModal() == IDOK ) { /* *pData = dlg.GetParam(); //取得修改过后的值 m_wndList.SetItemText( lItem , 1 , pData->szName ); m_wndList.SetItemText( lItem , 2 , pData->szNickName ); m_wndList.SetItemText( lItem , 3 , pData->szBranch ); m_wndList.SetItemText( lItem , 4 , pData->szTel ); m_wndList.SetItemText( lItem , 5 , pData->szMobile ); if ( pData->ucStatus == 0 ) { pData->ucStatus = CORP_LXR_MODIFY; //需要修改 m_lModifyCount ++; //需要修改的记录增加 } */ } m_pUserModify = NULL; } } void CC_User::On_User_Del() { if ( !m_MUser.bAgentModify ) //不允许修改 return ; long lSelCount = m_wndList.GetSelectedCount(); if ( lSelCount <=0 ) return ; long lRet = MessageBox( _T("此操作将会删除帐号,是否继续?") , _T("提问") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2); if ( lRet != IDYES ) return; long lSize = sizeof(REQ_Corp_UserModify) + sizeof(ANS_Corp_UserData)*lSelCount; BYTE * pDataSend = new BYTE[lSize];memset( pDataSend , 0 , lSize ); REQ_Corp_UserModify * pModifySend = (REQ_Corp_UserModify*)pDataSend; ANS_Corp_UserData * pUserSend = (ANS_Corp_UserData *)(pDataSend+sizeof(REQ_Corp_UserModify)); pModifySend->lCorpID = m_MUser.lCorpID; pModifySend->lCount = lSelCount; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long lItem=0; while ( pos ) { lItem = m_wndList.GetNextSelectedItem(pos); POSITION pos2 = (POSITION)m_wndList.GetItemData(lItem); ANS_Corp_UserData * pData = m_User.GetNext( pos2 ); pUserSend->lUserID = pData->lUserID; pUserSend->ucStatus = CORP_USER_DEL; pUserSend->lItem = lItem; SetLockItem(lItem,true); pUserSend++; } m_pMainFrame->SendFrame( SMSFUNC_CORP_USERMODIFY , pDataSend , lSize ); } void CC_User::On_User_Passwd() { if ( !m_MUser.bAgentModify ) //不允许修改 return ; long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_UserData * pData = m_User.GetNext( pos ); if (pData) { ANS_Corp_UserData user={0}; user = *pData; user.lItem = lItem; DLG_User_Modify dlg(this); m_pDlgUserModify = &dlg; dlg.SetParam(user,0,-1,m_MUser.lCorpID, m_MUser.szCorpName,user.lUserID,this->m_pMainFrame->m_Setup.szIP,pos2,false); if ( dlg.DoModal() == IDOK ) { user = dlg.GetParam(); user.lUserID = pData->lUserID; user.ucStatus = CORP_USER_MODIFY; user.lItem = lItem; SetLockItem(lItem,true); long lSize = sizeof(REQ_Corp_UserModify) + sizeof(ANS_Corp_UserData); BYTE * pDataSend = new BYTE[lSize];memset( pDataSend , 0 , lSize ); REQ_Corp_UserModify * pModifySend = (REQ_Corp_UserModify*)pDataSend; ANS_Corp_UserData * pUserSend = (ANS_Corp_UserData *)(pDataSend+sizeof(REQ_Corp_UserModify)); pModifySend->lCorpID = m_MUser.lCorpID; pModifySend->lCount = 1; *pUserSend = user; m_pMainFrame->SendFrame( SMSFUNC_CORP_USERMODIFY , pDataSend , lSize ); } m_pDlgUserModify = NULL; } } void CC_User::On_User_SDK() { } void CC_User::On_User_Pay() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); ANS_Corp_UserData * pData = m_User.GetNext( pos ); REQ_User_Pay * pPay = new REQ_User_Pay; memset( pPay , 0 , sizeof(REQ_User_Pay)); _tcscpy( pPay->szUserName , pData->szLoginName ); _tcscpy( pPay->szSMSNum , pData->szSMSNum ); pPay->lSmsSendAll = pData->lSMSSendAll; pPay->lSmsUsed = pData->lSMSUsed; pPay->lUserID = pData->lUserID; pPay->lItem = lItem; pPay->lPayType = 0; //短信 m_pMainFrame->SendFrame( SMSFUNC_USER_PAY , (BYTE*)pPay , sizeof(REQ_User_Pay) ); //取联系人信息 } void CC_User::On_User_PayMms() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); ANS_Corp_UserData * pData = m_User.GetNext( pos ); REQ_User_Pay * pPay = new REQ_User_Pay; memset( pPay , 0 , sizeof(REQ_User_Pay)); _tcscpy( pPay->szUserName , pData->szLoginName ); _tcscpy( pPay->szSMSNum , pData->szSMSNum ); pPay->lSmsSendAll = pData->lMmsSendAll; pPay->lSmsUsed = pData->lMmsUsed; pPay->lUserID = pData->lUserID; pPay->lItem = lItem; pPay->lPayType = 1; //彩信 m_pMainFrame->SendFrame( SMSFUNC_USER_PAY , (BYTE*)pPay , sizeof(REQ_User_Pay) ); //取联系人信息 } void CC_User::On_User_Bill() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); ANS_Corp_UserData * pData = m_User.GetNext( pos ); DLG_Bill dlg(this); m_pDLGBill = &dlg; dlg.SetParam(*pData); dlg.DoModal(); m_pDLGBill = NULL; } BOOL CC_User::FindLoginName(const TCHAR *pLoginName, POSITION exPos) { POSITION pos = m_User.GetHeadPosition(); POSITION pos2; while (pos) { pos2 = pos; ANS_Corp_UserData * pData = m_User.GetNext( pos ); if ( pos2 != exPos ) { if ( !_tcscmp( pData->szLoginName , pLoginName ) ) return true; } } return false; } void CC_User::On_User_SendMsg() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); if ( pos<=0 ) return ; POSITION pos2 = pos; ANS_Corp_UserData * pData = m_User.GetNext( pos ); if (pData) { ANS_BBS_SeeData See={0}; See.lSCorpID = 0; //管理员发的 See.lSUserID = m_pMainFrame->m_lUserID; //管理员ID _tcscpy(See.szSCorpName,_T("管理员")); _tcscpy(See.szSLoginName , m_pMainFrame->m_Setup.szUser ); See.lRCorpID = pData->lCorpID; See.lRUserID = pData->lUserID; See.lRAgentID=-1; //为所有 DLG_BBS_Send dlg(this); dlg.SetParam( See ); if ( dlg.DoModal() == IDOK ) { long lSize = sizeof(REQ_BBS_Send)+sizeof(ANS_BBS_SeeData); BYTE * pModifyData = new BYTE[lSize];memset(pModifyData,0,lSize); REQ_BBS_Send * pModify = (REQ_BBS_Send *)pModifyData; //头 ANS_BBS_SeeData * pSPData = (ANS_BBS_SeeData *)(pModifyData+sizeof(REQ_BBS_Send)); *pSPData = dlg.GetParam(); pModify->lItem = 0; pModify->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_BBS_SEND , pModifyData , lSize ); } } } BOOL CC_User::FindUserName(const TCHAR *pName, POSITION exPos) { POSITION pos = m_User.GetHeadPosition(); POSITION pos2; while (pos) { pos2 = pos; ANS_Corp_UserData * pData = m_User.GetNext( pos ); if ( pos2 != exPos ) { if ( _tcslen(pData->szName)>0 && !_tcscmp(pData->szName , pName ) ) return true; } } return false; } BOOL CC_User::FindSMSNum(const TCHAR *pSMSNum, POSITION exPos) { POSITION pos = m_User.GetHeadPosition(); POSITION pos2; while (pos) { pos2 = pos; ANS_Corp_UserData * pData = m_User.GetNext( pos ); if ( pos2 != exPos ) { if ( _tcslen(pData->szSMSNum)>0 && !_tcscmp( pData->szSMSNum , pSMSNum ) ) return true; } } return false; } long CC_User::FindSMSNum() { for ( int i=0 ; i<1003 ; i++ ) { BOOL bFind = false; POSITION pos = m_User.GetHeadPosition(); POSITION pos2; while (pos) { pos2 = pos; ANS_Corp_UserData * pData = m_User.GetNext( pos ); if ( pData ) { if ( _tcslen(pData->szSMSNum)>0 && _ttol(pData->szSMSNum) == i) { bFind = true; break; } } } if ( !bFind ) return i; } return 1000000; } BOOL CC_User::SetRefresh(BOOL bRefresh) { m_bRefresh = bRefresh; return m_bRefresh; } void CC_User::OnBnClickedCUserQuery3() { RefreshUser(); } void CC_User::OnBnClickedCUserQuery4() { CString strTemp; CString strFind; m_E_CorpID2.GetWindowText(strFind); if (strFind.GetLength() <= 0) return; long lSel = m_L_Corp.GetCurSel(); long lCount = m_L_Corp.GetCount(); for (int i = lSel + 1; i < lCount; i++) { m_L_Corp.GetLBText(i, strTemp); if (strTemp.Find(strFind) >= 0) { m_L_Corp.SetCurSel(i); RefreshUser(); return; } } for (i = 0; i < lSel; i++) { m_L_Corp.GetLBText(i, strTemp); if (strTemp.Find(strFind) >= 0) { m_L_Corp.SetCurSel(i); RefreshUser(); return; } } } BOOL CC_User::PreTranslateMessage(MSG* pMsg) { if (WM_KEYDOWN == pMsg->message && VK_RETURN == pMsg->wParam) { if (GetFocus() == GetDlgItem(IDC_C_USER_CORPID2)) { OnBnClickedCUserQuery4(); } if (GetFocus() == GetDlgItem(IDC_C_USER_CORPID)) { OnCUserQuery2(); } return true; } return CDialog::PreTranslateMessage(pMsg); }