// DLG_Corp_User.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "DLG_Corp_User.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_Corp_User dialog #include "MainFrm.h" #include "UserDlg.h" #include "DLG_Corp_User_Modify.h" #include "DLG_Corp_User_Add.h" #include "DLG_User_Modify.h" #include "DLG_BBS_Send.h" DLG_Corp_User::DLG_Corp_User(CWnd* pParent /*=NULL*/) : CDialog(DLG_Corp_User::IDD, pParent) { //{{AFX_DATA_INIT(DLG_Corp_User) m_strSMSNum = _T(""); m_strSMSUsed = _T(""); m_strTotal = _T(""); m_strCorpName = _T(""); //}}AFX_DATA_INIT m_pDlg = (CUserDlg *)pParent; m_lModifyCount = 0; memset( &m_UserReq , 0 , sizeof(m_UserReq) ); m_pUserData = NULL; } void DLG_Corp_User::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_Corp_User) DDX_Control(pDX, IDC_CORP_USER_FINDMSG, m_E_FindMsg); DDX_Control(pDX, IDC_CORP_USER_LIST, m_wndList); DDX_Text(pDX, IDC_CORP_USER_SMSNUM, m_strSMSNum); DDX_Text(pDX, IDC_CORP_USER_SMSUSED, m_strSMSUsed); DDX_Text(pDX, IDC_CORP_USER_TOTAL, m_strTotal); DDX_Text(pDX, IDC_CORP_USER_CORPNAME, m_strCorpName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_Corp_User, CDialog) //{{AFX_MSG_MAP(DLG_Corp_User) ON_NOTIFY(NM_DBLCLK, IDC_CORP_USER_LIST, OnDblclkCorpUserList) ON_BN_CLICKED(IDC_CORP_USER_SEE, OnCorpUserSee) ON_BN_CLICKED(IDC_CORP_USER_ADD, OnCorpUserAdd) ON_BN_CLICKED(IDC_CORP_USER_RESETPASSWD, OnCorpUserResetpasswd) ON_BN_CLICKED(IDC_CORP_USER_SDK, OnCorpUserSdk) ON_BN_CLICKED(IDC_CORP_USER_FIND, OnCorpUserFind) ON_BN_CLICKED(IDC_CORP_USER_DEL, OnCorpUserDel) ON_BN_CLICKED(IDC_CORP_USER_SENDMSG, OnCorpUserSendmsg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_Corp_User message handlers long DLG_Corp_User::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void DLG_Corp_User::SetParam(ANS_Corp_User2 User, ANS_Corp_UserData2 *pUserData) { m_UserReq = User; m_pUserData = pUserData; } BOOL DLG_Corp_User::OnInitDialog() { CDialog::OnInitDialog(); m_strCorpName = m_UserReq.szCorpName; m_strSMSNum = m_UserReq.szSMSNum; m_strSMSUsed.Format( _T("%d") , m_UserReq.lSmsUsed ); m_strTotal.Format( _T("%.2f") , m_UserReq.fTotal ); this->UpdateData(false); //初始化List m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,50; 登录名,80;SDK,40; 姓名,80;特服号,60; 职位,80; 电话,80; 手机,80; 可用,80; 已发,90;登录次数,80;登录时间,120")); m_wndList.SetGridLines(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); POSITION pos; TCHAR Buf[32]; for ( int i = 0 ; i< m_UserReq.lCount ; i++ ) { ANS_Corp_UserData2 * pData = new ANS_Corp_UserData2; *pData = m_pUserData[i]; pos = m_User.AddTail( pData ); _stprintf( Buf , _T("%d") , i+1 ); m_wndList.InsertItem( i , Buf , 0 ); m_wndList.SetItemData( i , (DWORD)pos); m_wndList.SetItemText( i , 1 , pData->szLoginName ); if ( pData->bSDK ) m_wndList.SetItemText( i , 2 , _T("是") ); else m_wndList.SetItemText( i , 2 , _T("否") ); m_wndList.SetItemText( i , 3 , pData->szName ); m_wndList.SetItemText( i , 4 , pData->szSMSNum ); m_wndList.SetItemText( i , 5 , pData->szJob ); m_wndList.SetItemText( i , 6 , pData->szTel ); m_wndList.SetItemText( i , 7 , pData->szMobile ); if ( pData->lSMSUsed == -100 ) _stprintf( Buf , _T("%s") , _T("无限制")); else _stprintf( Buf , _T("%8d") , pData->lSMSUsed); m_wndList.SetItemText( i , 8 , Buf ); _stprintf( Buf , _T("%10d") , pData->lSMSSendAll); m_wndList.SetItemText( i , 9 , Buf ); _stprintf( Buf , _T("%8d") , pData->lLoginCount); m_wndList.SetItemText( i , 10 , 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 , 11 , Buf ); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_Corp_User::OnDblclkCorpUserList(NMHDR* pNMHDR, LRESULT* pResult) { OnCorpUserSee(); *pResult = 0; } void DLG_Corp_User::OnCorpUserSee() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_UserData2 * pData = m_User.GetNext( pos ); if (pData) { DLG_Corp_User_Modify dlg(this); dlg.SetParam( *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 ++; //需要修改的记录增加 } */ } } } void DLG_Corp_User::OnCorpUserAdd() { ANS_Corp_UserData2 user={0}; user.szUserType[0]='1'; //用户类型 user.lCorpID=m_UserReq.lCorpID; user.bSDK = false; user.ulPurviewType = PURVIEWTYPE_ADMIN; user.ulPurview =-1; user.lSMSUsed = -100; user.lMmsUsed = -100; DLG_User_Modify dlg(this); #ifdef SMSCENTER_ONE dlg.SetParam(user,0,-1,m_UserReq.lCorpID,0,DEFAULT_SERVER,0,m_UserReq.dwSDK,true); #endif #ifdef SMSCENTER_TWO dlg.SetParam(user,0,-1,m_UserReq.lCorpID,0,DEFAULT_SERVER2,0,m_UserReq.dwSDK,true); #endif #ifdef SMSCENTER_THREE dlg.SetParam(user,0,-1,m_UserReq.lCorpID,0,DEFAULT_SERVER3,0,m_UserReq.dwSDK,true); #endif #ifdef SMSCENTER_ADC dlg.SetParam(user,0,-1,m_UserReq.lCorpID,0,DEFAULT_SERVERA,0,m_UserReq.dwSDK,true); #endif #ifdef SMSCENTER_TZY dlg.SetParam(user,0,-1,m_UserReq.lCorpID,0,DEFAULT_SERVER,0,m_UserReq.dwSDK,true); #endif #ifdef SMSCENTER_NX CString strServer=DEFAULT_SERVERNX; #ifdef SMSCENTER_GDDX strServer=DEFAULT_SERVERGDDX; #endif #ifdef SMSCENTER_GDYD_ADC strServer=DEFAULT_SERVERGDYD_ADC; #endif #ifdef SMSCENTER_DGSB strServer=DEFAULT_SERVERDGSB; #endif dlg.SetParam(user,0,-1,m_UserReq.lCorpID,0,(TCHAR *)(const TCHAR *)strServer,0,m_UserReq.dwSDK,true); #endif if ( dlg.DoModal() == IDOK ) { ANS_Corp_UserData2 * pUser = new ANS_Corp_UserData2; *pUser = dlg.GetParam(); ::GetLocalTime( &pUser->tCreateTime ); pUser->ucStatus = CORP_USER_ADD; m_lModifyCount ++; //需要修改的记录增加 POSITION pos = m_User.AddTail( pUser ); long lCount = m_wndList.GetItemCount(); TCHAR Buf[32]; _stprintf( Buf, _T("%d") , lCount +1 ); //设置新的数据 m_wndList.InsertItem( lCount , Buf , 0); m_wndList.SetItemData( lCount, (DWORD)pos ); m_wndList.SetItemText( lCount , 1 , pUser->szLoginName ); if ( pUser->bSDK ) m_wndList.SetItemText( lCount , 2 , _T("是") ); else m_wndList.SetItemText( lCount , 2 , _T("否") ); m_wndList.SetItemText( lCount , 3 , pUser->szName ); m_wndList.SetItemText( lCount , 4 , pUser->szSMSNum ); m_wndList.SetItemText( lCount , 5 , pUser->szJob ); m_wndList.SetItemText( lCount , 6 , pUser->szTel ); m_wndList.SetItemText( lCount , 7 , pUser->szMobile ); if ( pUser->lSMSUsed == -100 ) _stprintf( Buf , _T("%s") , _T("无限制")); else _stprintf( Buf , _T("%8d") , pUser->lSMSUsed); m_wndList.SetItemText( lCount , 8 , Buf ); _stprintf( Buf , _T("%10d") , pUser->lSMSSendAll); m_wndList.SetItemText( lCount , 9 , Buf ); _stprintf( Buf , _T("%8d") , pUser->lLoginCount); m_wndList.SetItemText( lCount , 10 , Buf ); _stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pUser->tLoginTime.wYear,pUser->tLoginTime.wMonth,pUser->tLoginTime.wDay,pUser->tLoginTime.wHour,pUser->tLoginTime.wMinute); m_wndList.SetItemText( lCount , 11 , Buf ); } } void DLG_Corp_User::OnCorpUserResetpasswd() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_UserData2 * pData = m_User.GetNext( pos ); if (pData) { ANS_Corp_UserData2 user={0}; user = *pData; DLG_User_Modify dlg(this); #ifdef SMSCENTER_ONE dlg.SetParam(user,PURVIEWTYPE_ADMIN,-1,m_UserReq.lCorpID,user.lUserID,DEFAULT_SERVER,pos,m_UserReq.dwSDK,false); #endif #ifdef SMSCENTER_TWO dlg.SetParam(user,PURVIEWTYPE_ADMIN,-1,m_UserReq.lCorpID,user.lUserID,DEFAULT_SERVER2,pos2,m_UserReq.dwSDK,false); #endif #ifdef SMSCENTER_THREE dlg.SetParam(user,PURVIEWTYPE_ADMIN,-1,m_UserReq.lCorpID,user.lUserID,DEFAULT_SERVER3,pos2,m_UserReq.dwSDK,false); #endif #ifdef SMSCENTER_ADC dlg.SetParam(user,PURVIEWTYPE_ADMIN,-1,m_UserReq.lCorpID,user.lUserID,DEFAULT_SERVERA,pos2,m_UserReq.dwSDK,false); #endif #ifdef SMSCENTER_TZY dlg.SetParam(user,PURVIEWTYPE_ADMIN,-1,m_UserReq.lCorpID,user.lUserID,DEFAULT_SERVER,pos2,m_UserReq.dwSDK,false); #endif #ifdef SMSCENTER_NX CString strServer=DEFAULT_SERVERNX; #ifdef SMSCENTER_GDDX strServer=DEFAULT_SERVERGDDX; #endif #ifdef SMSCENTER_GDYD_ADC strServer=DEFAULT_SERVERGDYD_ADC; #endif #ifdef SMSCENTER_DGSB strServer=DEFAULT_SERVERDGSB; #endif dlg.SetParam(user,PURVIEWTYPE_ADMIN,-1,m_UserReq.lCorpID,user.lUserID,strServer,pos2,m_UserReq.dwSDK,false); #endif if ( dlg.DoModal() == IDOK ) { *pData = dlg.GetParam(); if ( pData->ucStatus == 0 ) { pData->ucStatus = CORP_USER_MODIFY; //需要修改 m_lModifyCount ++; //需要修改的记录增加 } TCHAR Buf[32]={0}; m_wndList.SetItemText( lItem , 1 , pData->szLoginName ); if ( pData->bSDK ) m_wndList.SetItemText( lItem , 2 , _T("是") ); else m_wndList.SetItemText( lItem , 2 , _T("否") ); m_wndList.SetItemText( lItem , 3 , pData->szName ); m_wndList.SetItemText( lItem , 4 , pData->szSMSNum ); m_wndList.SetItemText( lItem , 5 , pData->szJob ); m_wndList.SetItemText( lItem , 6 , pData->szTel ); m_wndList.SetItemText( lItem , 7 , pData->szMobile ); if ( pData->lSMSUsed == -100 ) _stprintf( Buf , _T("%s") , _T("无限制")); else _stprintf( Buf , _T("%8d") , pData->lSMSUsed); m_wndList.SetItemText( lItem , 8 , Buf ); _stprintf( Buf , _T("%10d") , pData->lSMSSendAll); m_wndList.SetItemText( lItem , 9 , Buf ); _stprintf( Buf , _T("%8d") , pData->lLoginCount); m_wndList.SetItemText( lItem , 10 , 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( lItem , 11 , Buf ); } } } BOOL DLG_Corp_User::FindLoginName(const TCHAR *pLoginName, POSITION exPos) { POSITION pos = m_User.GetHeadPosition(); POSITION pos2; while (pos) { pos2 = pos; ANS_Corp_UserData2 * pData = m_User.GetNext( pos ); if ( pos2 != exPos ) { if ( !_tcscmp( pData->szLoginName , pLoginName ) ) return true; } } return false; } void DLG_Corp_User::OnCorpUserSdk() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_UserData2 * pData = m_User.GetNext( pos ); if (pData) { pData->bSDK = !pData->bSDK; if (pData->bSDK) m_wndList.SetItemText( lItem , 2 , _T("是") ); else m_wndList.SetItemText( lItem , 2 , _T("否") ); if ( pData->ucStatus == 0 ) { pData->ucStatus = CORP_USER_SDK; //需要修改 m_lModifyCount ++; //需要修改的记录增加 } } } void DLG_Corp_User::OnCorpUserFind() { //m_wndList.SetHeadings(_T("序号,50; 登录名,80;SDK,40; 姓名,80; 职位,80; 电话,80; 手机,80; 可用,80; 已发,90;登录次数,80;登录时间,120")); CString strFind; m_E_FindMsg.GetWindowText(strFind); strFind.MakeUpper(); 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); return ; } } for ( i=0 ; i=0 || str2.Find(strFind)>=0) { m_wndList.SelectItem(i); m_wndList.EnsureVisible(i,true); return ; } } } } void DLG_Corp_User::OnCorpUserDel() { long lCount = m_wndList.GetSelectedCount(); if ( lCount <= 0 ) return ; long lRet = MessageBox( _T("此操作将会删除帐号,是否继续?") , _T("提问") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2); if ( lRet != IDYES ) return; long * lDel = new long[lCount]; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i=0; while ( pos ) { lDel[i] = m_wndList.GetNextSelectedItem(pos); i++; } for ( i = lCount-1 ; i>=0 ; i-- ) //倒转删除 { long lItem = lDel[i]; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); m_wndList.DeleteItem( lItem ); //删除 POSITION pos2 = pos; ANS_Corp_UserData2 * pData = m_User.GetNext( pos ); if (pData) { if (pData->ucStatus == 0) { pData->ucStatus = CORP_USER_DEL; m_lModifyCount ++; //需要修改的记录增加 } else { pData->ucStatus = 0; m_lModifyCount --; //因为修改增加时会加1 } } } delete lDel; } BOOL DLG_Corp_User::FindUserName(const TCHAR *pName, POSITION exPos) { POSITION pos = m_User.GetHeadPosition(); POSITION pos2; while (pos) { pos2 = pos; ANS_Corp_UserData2 * pData = m_User.GetNext( pos ); if ( pos2 != exPos ) { if ( _tcslen(pData->szName)>0 && !_tcscmp(pData->szName , pName ) ) return true; } } return false; } BOOL DLG_Corp_User::FindSMSNum(const TCHAR *pSMSNum, POSITION exPos) { POSITION pos = m_User.GetHeadPosition(); POSITION pos2; while (pos) { pos2 = pos; ANS_Corp_UserData2 * pData = m_User.GetNext( pos ); if ( pos2 != exPos ) { if ( _tcslen(pData->szSMSNum)>0 && !_tcscmp( pData->szSMSNum , pSMSNum ) ) return true; } } return false; } long DLG_Corp_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_UserData2 * 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; } void DLG_Corp_User::OnCorpUserSendmsg() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; if ( !m_pDlg || !m_pDlg->m_pMainFrame ) return; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_UserData2 * pData = m_User.GetNext( pos ); if (pData) { ANS_BBS_SeeData See={0}; See.lSCorpID = 0; //管理员发的 See.lSUserID = m_pDlg->m_pMainFrame->m_lUserID; //管理员ID _tcscpy(See.szSCorpName,_T("管理员")); _tcscpy(See.szSLoginName , m_pDlg->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_pDlg->m_pMainFrame->SendFrame( SMSFUNC_BBS_SEND , pModifyData , lSize ); } } }