// 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_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_lModifyCount = 0; memset( &m_UserReq , 0 , sizeof(m_UserReq) ); m_pUserData = NULL; m_bModify = true; m_pUserDlg = (CUserDlg*)pParent; m_pUserModify = 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 DDX_Control(pDX, IDC_CORP_USER_TOTAL_S, m_S_Total_S); } 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 ON_BN_CLICKED(IDOK, &DLG_Corp_User::OnBnClickedOk) 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_User User, ANS_Corp_UserData *pUserData,BOOL bModify) { m_UserReq = User; m_pUserData = pUserData; m_bModify = bModify; } 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; 子签名,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]; long lUserUsedTotal = 0; for ( int i = 0 ; i< m_UserReq.lCount ; i++ ) { ANS_Corp_UserData * pData = new ANS_Corp_UserData; *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->szCM2); m_wndList.SetItemText( i , 5 , pData->szSMSNum ); #if !defined(MANAGER_VER_YWY) && !defined(MANAGER_VER_HF) //业务员不显示联系信息 m_wndList.SetItemText( i , 6 , pData->szJob ); m_wndList.SetItemText( i , 7 , pData->szTel ); m_wndList.SetItemText( i , 8 , pData->szMobile ); #endif if (pData->lSMSUsed == -100) { _stprintf(Buf, _T("%s"), _T("无限制")); } else { _stprintf(Buf, _T("%8d"), pData->lSMSUsed); lUserUsedTotal += pData->lSMSUsed; } m_wndList.SetItemText( i , 9 , Buf ); _stprintf( Buf , _T("%10d") , pData->lSMSSendAll); m_wndList.SetItemText( i , 10 , Buf ); _stprintf( Buf , _T("%8d") , pData->lLoginCount); m_wndList.SetItemText( i , 11 , 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 , 12 , Buf ); } if ( !m_bModify ) //不允许修改 { GetDlgItem(IDC_CORP_USER_ADD)->EnableWindow(false); GetDlgItem(IDC_CORP_USER_SEE)->EnableWindow(false); GetDlgItem(IDC_CORP_USER_DEL)->EnableWindow(false); GetDlgItem(IDC_CORP_USER_RESETPASSWD)->EnableWindow(false); GetDlgItem(IDC_CORP_USER_SDK)->EnableWindow(false); } if ( !(m_pUserDlg->m_pMainFrame->m_bYJ & AGENT_YJ) ) { GetDlgItem(IDC_CORP_USER_SENDMSG)->ShowWindow(SW_HIDE); } #if defined(MANAGER_VER_YWY) || defined(MANAGER_VER_HF) //业务员不显示联系信息 GetDlgItem(IDC_CORP_USER_ADD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_CORP_USER_SEE)->ShowWindow(SW_HIDE); GetDlgItem(IDC_CORP_USER_DEL)->ShowWindow(SW_HIDE); GetDlgItem(IDC_CORP_USER_RESETPASSWD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_CORP_USER_SDK)->ShowWindow(SW_HIDE); m_S_Total_S.SetWindowText(_T("分配余额")); m_strTotal.Format(_T("%d"), lUserUsedTotal); this->UpdateData(false); #endif m_tooltip.Create(this); m_tooltip.AddTool(GetDlgItem(IDC_CORP_USER_RESETPASSWD), _T("重置的新密码必须要确认后才生效!")); 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() { /* if ( !m_bModify ) //不允许修改 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) { DLG_Corp_User_Modify dlg(this); m_pUserModify = &dlg; dlg.SetParam(m_pUserDlg->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 DLG_Corp_User::OnCorpUserAdd() { if ( !m_bModify ) //不允许修改 return ; ANS_Corp_UserData user={0}; user.lCorpID = m_UserReq.lCorpID; user.szUserType[0]='1'; //用户类型 user.lCorpID=m_UserReq.lCorpID; user.bSDK = false; user.ulPurviewType = PURVIEWTYPE_ADMIN; user.ulPurview =-1; user.lSMSUsed = -100; //分配的是无限制的短信量 DLG_Corp_User_Add dlg(this); dlg.SetParam( user,0,m_UserReq.lCorpID,true,false); if ( dlg.DoModal() == IDOK ) { ANS_Corp_UserData * pUser = new ANS_Corp_UserData; *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 ); m_wndList.SetItemText( lCount , 3 , pUser->szName ); if ( pUser->bSDK ) m_wndList.SetItemText( lCount , 2 , _T("是") ); else m_wndList.SetItemText( lCount , 2 , _T("否") ); } } void DLG_Corp_User::OnCorpUserResetpasswd() { if ( !m_bModify ) //不允许修改 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) { DLG_Corp_User_Add dlg(this); dlg.SetParam( *pData,pos2,m_UserReq.lCorpID,false,false); if ( dlg.DoModal() == IDOK ) { *pData = dlg.GetParam(); m_wndList.SetItemText( lItem , 1 , pData->szLoginName ); m_wndList.SetItemText( lItem , 3 , pData->szName ); if ( pData->bSDK ) m_wndList.SetItemText( lItem , 2 , _T("是") ); else m_wndList.SetItemText( lItem , 2 , _T("否") ); if ( pData->ucStatus == 0 ) { pData->ucStatus = CORP_USER_MODIFY; //需要修改 m_lModifyCount ++; //需要修改的记录增加 } } } } BOOL DLG_Corp_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 DLG_Corp_User::OnCorpUserSdk() { if ( !m_bModify ) //不允许修改 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) { 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() { if ( !m_bModify ) return ; 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_UserData * pData = m_User.GetNext( pos ); if (pData) { if (pData->ucStatus == 0) { pData->ucStatus = CORP_LXR_DEL; m_lModifyCount ++; //需要修改的记录增加 } else { pData->ucStatus = 0; m_lModifyCount --; //因为修改增加时会加1 } } } delete lDel; } 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_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; } void DLG_Corp_User::OnCorpUserSendmsg() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; if ( !m_pUserDlg || !m_pUserDlg->m_pMainFrame ) return; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_UserData * pData = m_User.GetNext( pos ); if (pData) { ANS_BBS_SeeData See={0}; See.lSCorpID = 0; //管理员发的 See.lSUserID = m_pUserDlg->m_pMainFrame->m_lUserID; //管理员ID _tcscpy(See.szSCorpName,_T("管理员")); _tcscpy(See.szSLoginName , m_pUserDlg->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_pUserDlg->m_pMainFrame->SendFrame( SMSFUNC_BBS_SEND , pModifyData , lSize ); } } } void DLG_Corp_User::OnBnClickedOk() { #if defined(MANAGER_VER_YWY) || defined(MANAGER_VER_HF) //业务员不显示联系信息 CDialog::OnCancel(); #else CDialog::OnOK(); #endif } BOOL DLG_Corp_User::PreTranslateMessage(MSG* pMsg) { m_tooltip.RelayEvent(pMsg); return CDialog::PreTranslateMessage(pMsg); } BOOL DLG_Corp_User::ProcessSocket(Socket_Head* pHead) { if (pHead->lFuncType == SMSFUNC_SIGNNAME_ADD || pHead->lFuncType == SMSFUNC_CORP_FILE) { if (m_pUserModify) { m_pUserModify->ProcessSocket(pHead); } return true; } return false; } BOOL DLG_Corp_User::ProcessSocket(Socket_Head_Add* pHead, BYTE* pFrame) { if (pHead->lFuncType == SMSFUNC_SIGNNAME_ADD || pHead->lFuncType == SMSFUNC_CORP_FILE) { if (m_pUserModify) { m_pUserModify->ProcessSocket(pHead, pFrame); } return true; } return false; }