// K_SmsTask.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "K_SmsTask.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CK_SmsTask dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_SmsLogSee.h" #include "DLG_HZB_Export.h" #include "DLG_Corp_Oper_Open.h" #include "DLG_BBS_Send.h" #include "SmsManagerDoc.h" #include "UserView.h" #include "DLG_CheckupSee.h" #include "DLG_SmsTask_Modify.h" CK_SmsTask::CK_SmsTask(CWnd* pParent /*=NULL*/) : CDialog(CK_SmsTask::IDD, pParent) { //{{AFX_DATA_INIT(CK_SmsTask) m_lCorp = -1; m_tBegin = COleDateTime::GetCurrentTime(); m_tEnd = COleDateTime::GetCurrentTime(); m_lTop = -1; m_lStatus = -1; //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; // m_bProcess = false; m_lQueryCorpID = 0; m_lCheckCount=0; //需要审核的数量 } void CK_SmsTask::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CK_SmsTask) DDX_Control(pDX, IDC_LIST_CORPID, m_E_CorpID); DDX_Control(pDX, IDC_LIST_S1, m_S_S1); DDX_Control(pDX, IDC_LIST_CORP, m_L_Corp); DDX_Control(pDX, IDC_LIST_LIST, m_wndList); DDX_CBIndex(pDX, IDC_LIST_CORP, m_lCorp); DDX_DateTimeCtrl(pDX, IDC_LIST_TBEGIN, m_tBegin); DDX_DateTimeCtrl(pDX, IDC_LIST_TEND, m_tEnd); DDX_CBIndex(pDX, IDC_LIST_TOP, m_lTop); DDX_CBIndex(pDX, IDC_LIST_STATUS, m_lStatus); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CK_SmsTask, CDialog) //{{AFX_MSG_MAP(CK_SmsTask) ON_WM_SIZE() ON_BN_CLICKED(IDC_LIST_QUERY, OnListQuery) ON_NOTIFY(NM_DBLCLK, IDC_LIST_LIST, OnDblclkListList) ON_BN_CLICKED(IDC_LIST_QUERY2, OnListQuery2) ON_NOTIFY(NM_RCLICK, IDC_LIST_LIST, OnRclickListList) //}}AFX_MSG_MAP ON_COMMAND(MENU_LIST_SEE , On_User_See ) ON_COMMAND(MENU_LIST_ADDBACK , On_User_AddBack ) ON_COMMAND(MENU_LIST_SENDBBS , On_User_SendBBS ) ON_COMMAND(MENU_LIST_CORPLIST , On_User_CorpList ) ON_COMMAND(MENU_LIST_SMSLIST , On_User_SmsList) ON_COMMAND(MENU_LIST_CORPOFF , On_User_CorpOFF ) ON_COMMAND(MENU_LIST_EXPORT , On_User_Export ) ON_COMMAND(MENU_LIST_COPY , On_User_Copy ) ON_COMMAND( MENU_SMSTASK_PASS , On_Task_Pass ) ON_COMMAND( MENU_SMSTASK_NOPASS , On_Task_NoPass ) ON_COMMAND( MENU_SMSTASK_STOP , On_Task_Stop ) ON_COMMAND( MENU_SMSTASK_RESEND , On_Task_ReSend ) ON_WM_TIMER() END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CK_SmsTask message handlers BOOL CK_SmsTask::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CK_SmsTask::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CK_SmsTask::RefreshInfo() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) ) { return false; } if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST,false) ) { GetDlgItem(IDC_LIST_TBEGIN)->EnableWindow(false); } m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0); OnListQuery(); //查询审核中的数据 return true; } BOOL CK_SmsTask::ProcessSocket(Socket_Head_Add *pHead,BYTE* pFrame) { CString str; //取清单 if (pHead->lFuncType == SMSFUNC_PLTASKSMS_SEE) { ANS_PLTaskSms_See * pList = (ANS_PLTaskSms_See *)pFrame; ANS_PLTaskSms_SeeData * pData = (ANS_PLTaskSms_SeeData *)(pFrame+sizeof(ANS_PLTaskSms_See)); //CString strTemp; //strTemp.Format( _T("查询企业 (%d/%d)") , pList->lPageCount,pList->lPageAll ); //m_S_S1.SetWindowText( strTemp ); //添加到List long lCount = m_wndList.GetItemCount(); TCHAR szBuf[512]={0}; CString str; CString strTemp; m_lCheckCount = 0; for ( int i = 0 ; i< pList->lCount;i++) { ANS_PLTaskSms_SeeData * pNewData = new ANS_PLTaskSms_SeeData; *pNewData = *pData; POSITION pos = m_ListData.AddTail(pNewData); //m_wndList.SetHeadings(_T("序号,40; 类 型,80;状态,50;企业ID,60;发送人,70; 发送号码,120; 接收人,70; 接收号码,120; 提交时间,150; 发送时间,150; 接收时间,150; 短信内容,1000; 信息ID,120;")); m_wndList.InsertItem( lCount+i,_itot(lCount+i+1,szBuf,10),0); long lIcon; switch(pNewData->lStatus) { case 0: default: strTemp = _T("正在上传"); break; case 1: strTemp = _T("待发送"); lIcon = 0; break; case 2: strTemp = _T("审核中"); lIcon = 0; m_lCheckCount++; break; case 3: strTemp = _T("审核失败"); lIcon = 2; break; case 4: strTemp = _T("正在发送"); lIcon = 1; break; case 5: strTemp = _T("余额不足"); lIcon = 2; break; case 6: strTemp = _T("强制停止"); lIcon = 2; break; case 7: strTemp = _T("发送完成"); lIcon = 3; break; case 8: strTemp = _T("用户审核"); lIcon = 0; break; case 9: strTemp = _T("用户审核2"); //此模式下用户审核了后,再需要管理员审 lIcon = 0; break; case 10: strTemp = _T("用户审核失败"); lIcon = 2; break; } long lTemp=1; ////0-正在上传,1-待发送,2-审核,3-审核失败,4-正在发送,5-余额不足,6-强制停止,7-发送完成 m_wndList.SetItemText(lCount+i,lTemp++,strTemp); str.Format( _T("%d-%s[%s]") , pNewData->lCorpID,pNewData->szCorpName,pNewData->szCreateUser); m_wndList.SetItemText(lCount+i,lTemp++,str); strTemp.Format(_T("%d") , pNewData->lMobileCount); m_wndList.SetItemText(lCount+i,lTemp++,strTemp); strTemp.Format(_T("%d") , pNewData->lYFMobileCount); m_wndList.SetItemText(lCount+i,lTemp++,strTemp); m_wndList.SetItemText(lCount+i,lTemp++,pNewData->szMsg); strTemp.Format(_T("%04d.%02d.%02d %02d:%02d") , pNewData->tCreateTime.wYear,pNewData->tCreateTime.wMonth,pNewData->tCreateTime.wDay,pNewData->tCreateTime.wHour,pNewData->tCreateTime.wMinute); m_wndList.SetItemText(lCount+i,lTemp++,strTemp); COleDateTime t(pNewData->tTimer); if ( t.GetStatus() == COleDateTime::valid ) { strTemp.Format(_T("%04d.%02d.%02d %02d:%02d") , pNewData->tTimer.wYear,pNewData->tTimer.wMonth,pNewData->tTimer.wDay,pNewData->tTimer.wHour,pNewData->tTimer.wMinute); } else { strTemp =_T(" "); } m_wndList.SetItemText(lCount+i,lTemp++,strTemp); m_wndList.SetItemText(lCount + i, lTemp++, pNewData->szAuditResult); m_wndList.SetItemData(lCount+i,(DWORD_PTR)(pos) ); pData++; } //需要提醒 if (this->m_pMainFrame->m_Setup.Warning_Enable && m_pMainFrame->m_Setup.Warning_Timer > 0) { if (!m_pMainFrame->m_Setup.Warning_OnlyContent) { /* KillTimer(1); m_pMainFrame->m_pUserView->m_dlgCheckup.Warning_Close(); //刷新了,停止报警 #ifdef _DEBUG SetTimer(1, 8 * 1000, NULL); #else SetTimer(1, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000, NULL); #endif */ } else { KillTimer(11); //刷新了,不用超时检测 if (m_lCheckCount > 0) //有数据,需要提醒 { m_pMainFrame->m_pUserView->m_dlgCheckup.Warning_Checkup(_T("有批量需审核")); } else { //本次无数据,同时需判断批量审核是否有数据,如果批量审核也没数据,就不用再提醒了 if (m_pMainFrame->m_pUserView->m_dlgCheckup.m_wndList.GetItemCount() <= 0 && m_pMainFrame->m_pUserView->m_dlgTemplate.m_lCheckCount <= 0 && m_pMainFrame->m_pUserView->m_dlgSignName.m_lCheckCount <= 0) { KillTimer(2); //关掉图标闪动 m_pMainFrame->m_pUserView->m_dlgCheckup.Warning_Close(); //无数据了,停止报警 } #ifdef _DEBUG SetTimer(10, 8 * 1000, NULL); #else SetTimer(10, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000, NULL); //下次自动刷新时间 #endif } } } return true; } if ( pHead->lFuncType == SMSFUNC_PLTASKSMS_MODIFY) //修改用户 { ANS_PLTaskSms_Modify * pSee = (ANS_PLTaskSms_Modify *)pFrame; if ( pSee->bOK ) { ANS_PLTaskSms_SeeData * pSeeData = NULL; if ( m_wndList.GetItemData(pSee->lItem) >0 ) { pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(pSee->lItem)); } if ( pSeeData && pSeeData->lPLTaskSmsID == pSee->lPLTaskSmsID ) { pSeeData->lStatus = pSee->lStatus; CString strTemp; long lIcon; switch(pSee->lStatus) { case 0: default: strTemp = _T("正在上传"); break; case 1: strTemp = _T("待发送"); lIcon = 0; break; case 2: strTemp = _T("审核中"); lIcon = 0; break; case 3: strTemp = _T("审核失败"); lIcon = 2; break; case 4: strTemp = _T("正在发送"); lIcon = 1; break; case 5: strTemp = _T("余额不足"); lIcon = 2; break; case 6: strTemp = _T("强制停止"); lIcon = 2; break; case 7: strTemp = _T("发送完成"); lIcon = 3; break; } m_wndList.SetItemText(pSee->lItem , 1 , strTemp ); } } else { str.Format( _T("修改任务状态失败:%s") , pSee->szErrMsg ); MessageBox(str , _T("错误") , MB_ICONWARNING ); } return true; } if (pHead->lFuncType == SMSFUNC_PLTASKSMS_PLMODIFY) //修改用户 { ANS_PLTaskSms_PLModify* pSee = (ANS_PLTaskSms_PLModify*)pFrame; REQ_PLTaskSms_PLModifyData * pData = (REQ_PLTaskSms_PLModifyData*)(pFrame + sizeof(ANS_PLTaskSms_PLModify)); if (pSee->bOK) { for (int i = 0; i < pSee->lCount; i++) { if (pData[i].lCorpID > 0 && pData[i].lPLTaskSmsID > 0) { ANS_PLTaskSms_SeeData* pSeeData = NULL; if (m_wndList.GetItemData(pData[i].lItem) > 0) { pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(pData[i].lItem)); } if (pSeeData && pSeeData->lPLTaskSmsID == pData[i].lPLTaskSmsID && pData[i].bOK) { pSeeData->lStatus = pData[i].lStatus; CString strTemp; long lIcon; switch (pSeeData->lStatus) { case 0: default: strTemp = _T("正在上传"); break; case 1: strTemp = _T("待发送"); lIcon = 0; break; case 2: strTemp = _T("审核中"); lIcon = 0; break; case 3: strTemp = _T("审核失败"); lIcon = 2; break; case 4: strTemp = _T("正在发送"); lIcon = 1; break; case 5: strTemp = _T("余额不足"); lIcon = 2; break; case 6: strTemp = _T("强制停止"); lIcon = 2; break; case 7: strTemp = _T("发送完成"); lIcon = 3; break; } m_wndList.SetItemText(pData[i].lItem, 1, strTemp); } } } } else { str.Format(_T("修改任务状态失败:%s"), pSee->szErrMsg); MessageBox(str, _T("错误"), MB_ICONWARNING); } return true; } return false; } BOOL CK_SmsTask::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(); //删除原已有的企业 m_L_Corp.AddString( _T("所有企业") ); this->Close_Corp(); //关闭原队列 for ( int i=0;ilCount;i++ ) { 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_PTR)pos); pData ++; } m_L_Corp.SetCurSel(0); return true; } return false; } BOOL CK_SmsTask::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_LIST) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,40;状态,80;提交用户,300; 号码数,60;已发号码,65;短信内容,450;提交时间,150;定时时间,130;审核理由,150;")); m_wndList.SetGridLines(true); // m_wndList.SetImageList(&m_Image,LVSIL_SMALL); m_bInit = true; /* //默认取上月的内容 SYSTEMTIME t; ::GetLocalTime(&t); t.wDay = 1;//从1号起 t.wMonth = t.wMonth-1; if ( t.wMonth <=0 ) { t.wMonth = 12; t.wYear = t.wYear-1; } m_tBegin.SetDate( t.wYear,t.wMonth,t.wDay ); //起始 if ( t.wMonth == 1 || t.wMonth == 3 || t.wMonth == 5 || t.wMonth == 7 || t.wMonth == 8 || t.wMonth == 10 || t.wMonth == 12 ) { t.wDay = 31; } else if (t.wMonth == 2 ) t.wDay = 28; else t.wDay = 30; m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//结束 */ COleDateTime t=COleDateTime::GetCurrentTime(); COleDateTime t2=t-COleDateTimeSpan(3,0,0,0); //默认查3天内数据 m_tBegin = t2; //开始 m_tEnd = t; //结束 m_lStatus=3; m_lTop = 1; //默认显示前200条短信 UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CK_SmsTask::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); } } void CK_SmsTask::Close() { Close_Corp(); Close_ListData(); } void CK_SmsTask::OnListQuery() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) ) { return ; } UpdateData(true); if ( m_tEnd < m_tBegin ) { MessageBox( _T("查询结束日期不能小于起始日期,请改正!") , _T("错误") , MB_ICONWARNING ); return ; } REQ_PLTaskSms_See * pSee = new REQ_PLTaskSms_See; memset(pSee , 0 , sizeof(REQ_PLTaskSms_See)); if ( m_lQueryCorpID ) { pSee->lCorpID = m_lQueryCorpID; pSee->lStatus = -1; //查询所有的记录 m_lQueryCorpID = 0; } else { if ( m_lCorp <= 0 ) //选了所有企业 { pSee->lCorpID = -1; } else { POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp); POSITION pos2 = pos; ANS_Corp_NameData * pData = m_Corp.GetNext( pos ); if (pData) { pSee->lCorpID = pData->lCorpID; } else { return; } } } m_tBegin.GetAsSystemTime( pSee->tBegin ); m_tEnd.GetAsSystemTime( pSee->tEnd ); switch ( m_lTop ) { case 1: pSee->lTop = 200; break; case 2: pSee->lTop = 500; break; case 3: pSee->lTop = 1000; break; case 4: pSee->lTop = 2000; break; case 5: pSee->lTop = 5000; break; case 0: default: pSee->lTop = -1; break; } pSee->lStatus = m_lStatus-1; //查询状态。 this->Close_ListData(); //关闭原队列 m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 m_wndList.DeleteAllItems(); //先删除所有记录 m_pMainFrame->SendFrame(SMSFUNC_PLTASKSMS_SEE,(BYTE*)pSee,sizeof(REQ_PLTaskSms_See)); m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 return ; } void CK_SmsTask::OnDblclkListList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_User_See(); } void CK_SmsTask::OnListQuery2() { CString strTemp; CString strFind; m_E_CorpID.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=0 ) { m_L_Corp.SetCurSel(i); return ; } } for ( i=0 ; i=0 ) { m_L_Corp.SetCurSel(i); return ; } } } void CK_SmsTask::OnRclickListList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } void CK_SmsTask::ShowRMenu() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) ) { return ; } if (m_lQueryCorpID == -100) return; CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); //添加 if ( lItem>=0 ) { //menu.AppendMenu(MF_STRING , MENU_LIST_SEE , _T(" 查 看 ") ); menu.AppendMenu(MF_STRING , MENU_LIST_CORPLIST, _T(" 查询此企业清单 ") ); menu.AppendMenu(MF_STRING , MENU_LIST_SMSLIST, _T(" 查询文件与内容 ")); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_LIST_CORPOFF , _T(" 禁用此企业 ") ); menu.AppendMenu(MF_SEPARATOR ); //menu.AppendMenu(MF_STRING , MENU_LIST_ADDBACK, _T(" 添加到黑名单 ") ); //menu.AppendMenu(MF_SEPARATOR ); //menu.AppendMenu(MF_STRING , MENU_LIST_SENDBBS, _T(" 发送黑名单屏蔽通知 ") ); ANS_PLTaskSms_SeeData * pSeeData = NULL; if ( m_wndList.GetItemData(lItem) >0 ) { pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem)); } if ( pSeeData ) { //0-正在上传,1-待发送,2-审核,3-审核失败,4-正在发送,5-余额不足,6-强制停止,7-发送完成 switch(pSeeData->lStatus) { case 1: //待发送 case 2: //审核中 case 4: //正在发送 case 5: //余额不足 case 8: //用户审核 case 9: //用户审核2 if (pSeeData->lStatus==2) //审核中 { menu.AppendMenu(MF_STRING , MENU_SMSTASK_PASS , _T(" 选中的审核通过 ") ); menu.AppendMenu(MF_STRING , MENU_SMSTASK_NOPASS , _T(" 选中的审核失败 ") ); menu.AppendMenu(MF_SEPARATOR ); } menu.AppendMenu(MF_STRING , MENU_SMSTASK_STOP , _T(" 强制停止任务 ") ); break; } if ( m_pMainFrame->GetUserPurview(PURVIEW_FILT,false) ) { switch(pSeeData->lStatus) { case 5: //余额不足 case 6: //强制停止 case 7: //已发送完成 { BOOL bReSend=true; if ( pSeeData->lStatus==7 || pSeeData->lStatus==6 ) //发送完成的,如果已发数量小于任务数量,允许重启任务 { if ( pSeeData->lYFMobileCount >= pSeeData->lMobileCount ) { bReSend = false; } } if ( bReSend ) { menu.AppendMenu(MF_STRING , MENU_SMSTASK_RESEND , _T(" 重启任务 ") ); } } break; } } } } else { //menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_SEE , _T(" 查 看 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_CORPLIST, _T(" 查询此企业清单 ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_CORPOFF , _T(" 禁用此企业 ") ); menu.AppendMenu(MF_SEPARATOR ); //menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_ADDBACK, _T(" 添加到黑名单 ") ); //menu.AppendMenu(MF_SEPARATOR ); //menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_SENDBBS, _T(" 发送黑名单屏蔽通知 ") ); } menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_LIST_COPY , _T(" 复 制 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } long CK_SmsTask::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CK_SmsTask::On_Task_Pass() { SmsCheckup(true); /* long lRet = MessageBox( _T("确实要将此任务审核成功?"),_T("提问"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2); if ( lRet != IDYES ) return ; long lItem = this->GetCurrentSelected(); if ( lItem<0 ) return ; ANS_PLTaskSms_SeeData * pSeeData = NULL; if ( m_wndList.GetItemData(lItem) >0 ) { pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem)); } if ( !pSeeData ) return ; REQ_PLTaskSms_Modify * pModify = new REQ_PLTaskSms_Modify; memset(pModify , 0 , sizeof(REQ_PLTaskSms_Modify) ); pModify->lCorpID = pSeeData->lCorpID; pModify->lUserID = pSeeData->lUserID; pModify->lPLTaskSmsID = pSeeData->lPLTaskSmsID; pModify->lItem = lItem; pModify->lOldStatus = pSeeData->lStatus; pModify->lStatus = 1; //启动任务,审核成功,相当于启动任务 pModify->tMaxDelayTime = pSeeData->tCreateTime; //创建时间 _tcscpy(pModify->szMsg, pSeeData->szMsg); pModify->lNotifyMobiles = pSeeData->lNotifyMobiles; //是否需要通知手机 m_pMainFrame->SendFrame( SMSFUNC_PLTASKSMS_MODIFY , (BYTE*)pModify , sizeof(REQ_PLTaskSms_Modify) ); */ } void CK_SmsTask::On_Task_NoPass() { SmsCheckup(false); /* long lItem = this->GetCurrentSelected(); if (lItem < 0) return; ANS_PLTaskSms_SeeData * pSeeData = NULL; if (m_wndList.GetItemData(lItem) > 0) { pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem)); } if (!pSeeData) return; CString strReason; if (pSeeData->lNotifyMobiles) //有通知号码的,需要写失败原因 { DLG_SmsTask_Modify dlg(this); dlg.SetParam(pSeeData); if (dlg.DoModal() != IDOK) return; strReason = dlg.m_strReason; } else { long lRet = MessageBox(_T("确实要将此任务审核失败?"), _T("提问"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2); if (lRet != IDYES) return; } REQ_PLTaskSms_Modify * pModify = new REQ_PLTaskSms_Modify; memset(pModify , 0 , sizeof(REQ_PLTaskSms_Modify) ); pModify->lCorpID = pSeeData->lCorpID; pModify->lUserID = pSeeData->lUserID; pModify->lPLTaskSmsID = pSeeData->lPLTaskSmsID; pModify->lItem = lItem; pModify->lOldStatus = pSeeData->lStatus; pModify->lStatus = 3; //审核失败 pModify->tMaxDelayTime = pSeeData->tCreateTime; //创建时间 _tcscpy(pModify->szMsg, pSeeData->szMsg); pModify->lNotifyMobiles = pSeeData->lNotifyMobiles; //是否需要通知手机 _tcscpy(pModify->szReason, strReason); //审核失败原因 m_pMainFrame->SendFrame( SMSFUNC_PLTASKSMS_MODIFY , (BYTE*)pModify , sizeof(REQ_PLTaskSms_Modify) ); */ } void CK_SmsTask::SmsCheckup(BOOL bPass, BOOL bAllSelect) { //bPass 是否审核通过。 //bAllSelect 是否操作所有选择的,否-只操作选择的第一条 if (!m_pMainFrame->GetUserPurview(PURVIEW_FILT)) { return; } long lCount = m_wndList.GetSelectedCount(); if (lCount <= 0) return; if (lCount > 9) { MessageBox(_T("每次最多只可以操作9条记录,请减少选择范围。"), _T("警告"), MB_ICONWARNING); return; } long lSize = sizeof(REQ_PLTaskSms_PLModify) + sizeof(REQ_PLTaskSms_PLModifyData) * lCount; BYTE* pCheckupSend = new BYTE[lSize]; memset(pCheckupSend, 0, lSize); BOOL bGetFirst = false; REQ_PLTaskSms_PLModify* pCheckup = (REQ_PLTaskSms_PLModify*)pCheckupSend; //头 REQ_PLTaskSms_PLModifyData* pCheckupData = (REQ_PLTaskSms_PLModifyData*)(pCheckupSend + sizeof(REQ_PLTaskSms_PLModify)); pCheckup->lCount = lCount; pCheckup->lUserID = this->m_pMainFrame->m_lUserID; if (bPass) pCheckup->lStatus = 1; //审核通过 else pCheckup->lStatus = 3; //审核失败 POSITION pos = m_wndList.GetFirstSelectedItemPosition(); ANS_PLTaskSms_SeeData* pSeeData; COleDateTime tMaxDelayTime = COleDateTime::GetCurrentTime(); //取最长时间的短信 CString strMaxDelayMsg; long lMaxDelayCorpID = 0; long lMaxDelayUserID = 0; BOOL bNotifyMobiles = false; POSITION pos2; while (pos) { long lItem = m_wndList.GetNextSelectedItem(pos); pos2 = (POSITION)m_wndList.GetItemData(lItem); pSeeData = m_ListData.GetNext(pos2); //取得列表中的pos if (pSeeData && pSeeData->lStatus == 2) //只有状态为2的才需要审核 { pCheckupData->lCorpID = pSeeData->lCorpID; pCheckupData->lUserID = pSeeData->lUserID; pCheckupData->lPLTaskSmsID = pSeeData->lPLTaskSmsID; pCheckupData->lStatus = bPass; pCheckupData->lItem = lItem; pCheckupData->lOldStatus = pSeeData->lStatus; pCheckupData->lStatus = pCheckup->lStatus; _tcscpy(pCheckupData->szMsg, pSeeData->szMsg); pCheckupData->lNotifyMobiles = pSeeData->lNotifyMobiles; //是否需要通知手机 if (pCheckupData->lNotifyMobiles) bNotifyMobiles = true; if (COleDateTime(pSeeData->tCreateTime) < tMaxDelayTime) //取最长时间的短信 { tMaxDelayTime = pSeeData->tCreateTime; strMaxDelayMsg = pSeeData->szMsg; lMaxDelayCorpID = pSeeData->lCorpID; lMaxDelayUserID = pSeeData->lUserID; } } if (!bGetFirst) { bGetFirst = true; pCheckup->lCorpID = pSeeData->lCorpID; } if (!bAllSelect) //如果不是处理全部选择的,第一条后退出。 break; pCheckupData++; } if (strMaxDelayMsg.GetLength() > 0) { _tcscpy(pCheckup->szDelayMsg, strMaxDelayMsg); pCheckup->lDelayCorpID = lMaxDelayCorpID; tMaxDelayTime.GetAsSystemTime(pCheckup->tMaxDelayTime); } if (bPass == false && bNotifyMobiles) { DLG_SmsTask_Modify dlg(this); dlg.SetParam(pSeeData,0,lCount); if (dlg.DoModal() != IDOK) { delete [] pCheckupSend; return; } _tcscpy(pCheckup->szReason, dlg.m_strReason); } else { CString strTip = _T("确实要将此任务审核失败?"); if (bPass) { strTip = _T("确实要将此任务审核通过?"); } if (lCount > 1) strTip.Append(_T("\r\n注意:你已选择多条记录,此为批量操作!")); long lRet = MessageBox(strTip, _T("提问"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2); if (lRet != IDYES) { delete[] pCheckupSend; return; } } m_pMainFrame->SendFrame(SMSFUNC_PLTASKSMS_PLMODIFY, pCheckupSend, lSize); } void CK_SmsTask::On_Task_Stop() { // long lRet = MessageBox( _T("确实要强制停止此任务吗?"),_T("提问"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2); // if ( lRet != IDYES ) // return ; long lItem = this->GetCurrentSelected(); if ( lItem<0 ) return ; ANS_PLTaskSms_SeeData * pSeeData = NULL; if ( m_wndList.GetItemData(lItem) >0 ) { pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem)); } if ( !pSeeData ) return ; DLG_SmsTask_Modify dlg(this); dlg.SetParam(pSeeData,1); //强制停止 if (dlg.DoModal() != IDOK) return; CString strReason = dlg.m_strReason; REQ_PLTaskSms_Modify * pModify = new REQ_PLTaskSms_Modify; memset(pModify , 0 , sizeof(REQ_PLTaskSms_Modify) ); pModify->lCorpID = pSeeData->lCorpID; pModify->lUserID = pSeeData->lUserID; pModify->lPLTaskSmsID = pSeeData->lPLTaskSmsID; pModify->lItem = lItem; pModify->lOldStatus = pSeeData->lStatus; pModify->lStatus = 6; //强制停止 _tcscpy(pModify->szReason, strReason);//停止原因 m_pMainFrame->SendFrame( SMSFUNC_PLTASKSMS_MODIFY , (BYTE*)pModify , sizeof(REQ_PLTaskSms_Modify) ); } void CK_SmsTask::On_Task_ReSend() { // long lRet = MessageBox( _T("确实要重新启动此任务吗?"),_T("提问"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2); // if ( lRet != IDYES ) // return ; long lItem = this->GetCurrentSelected(); if ( lItem<0 ) return ; ANS_PLTaskSms_SeeData * pSeeData = NULL; if ( m_wndList.GetItemData(lItem) >0 ) { pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem)); } if ( !pSeeData ) return ; DLG_SmsTask_Modify dlg(this); dlg.SetParam(pSeeData, 2); //重启任务 if (dlg.DoModal() != IDOK) return; CString strReason = dlg.m_strReason; REQ_PLTaskSms_Modify * pModify = new REQ_PLTaskSms_Modify; memset(pModify , 0 , sizeof(REQ_PLTaskSms_Modify) ); pModify->lCorpID = pSeeData->lCorpID; pModify->lUserID = pSeeData->lUserID; pModify->lPLTaskSmsID = pSeeData->lPLTaskSmsID; pModify->lItem = lItem; pModify->lOldStatus = pSeeData->lStatus; pModify->lStatus = 1; //重新启动 _tcscpy(pModify->szReason, strReason);//重启原因 m_pMainFrame->SendFrame( SMSFUNC_PLTASKSMS_MODIFY , (BYTE*)pModify , sizeof(REQ_PLTaskSms_Modify) ); } void CK_SmsTask::On_User_See() { if (!m_pMainFrame->GetUserPurview(PURVIEW_FILT)) { return; } ANS_PLTaskSms_SeeData * pSeeData = NULL; long lItem = GetCurrentSelected(); if (lItem < 0) return; if (m_wndList.GetItemData(lItem) > 0) { pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem)); } if (!pSeeData) return; DLG_CheckupSee dlg(this); dlg.SetParam2(*pSeeData); dlg.DoModal(); } void CK_SmsTask::On_User_AddBack() { /* if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) ) { return ; } long lItem = m_wndList.GetFirstSelectedItem(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_PLTaskSms_SeeData * pData = m_ListData.GetNext( pos ); if (!pData) return ; CString strTemp; CString strMobile; CString strMobile2; CString strMsg; CString str; if ( pData->lSmsType == 4 ) { strMobile = pData->szSendNum; } else { strMobile = pData->szRecvNum; } strMobile2 = strMobile; #ifdef SMSMANAGER_KF if ( strMobile2.GetLength()>7 ) { strMobile2.SetAt(4,'*'); strMobile2.SetAt(5,'*'); strMobile2.SetAt(6,'*'); } pData->szSendNum[4]='*';pData->szSendNum[5]='*';pData->szSendNum[6]='*'; #endif strMsg = pData->szMsg; str.Format( _T("真的要添加以下内容到黑名单:\r\n号码:%s\r\n内容:%s\r\n"),strMobile2,strMsg ); int iRet = MessageBox( str , _T("提问") , MB_ICONQUESTION|MB_YESNO ); if ( iRet !=IDYES ) return ; REQ_Back_Add * pAdd = new REQ_Back_Add; memset(pAdd , 0 ,sizeof(REQ_Back_Add)); pAdd->lCorpID = pData->lCorpID; pAdd->lUserID = -1; _tcscpy(pAdd->szMobile , strMobile ); _stprintf( pAdd->szBZ , _T("后台添加:%s") , strMsg ); m_pMainFrame->SendFrame(SMSFUNC_BACK_ADD,(BYTE*)pAdd,sizeof(REQ_Back_Add)); */ } void CK_SmsTask::On_User_SendBBS() { /* if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) ) { return ; } long lItem = m_wndList.GetFirstSelectedItem(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_ListData * pData = m_ListData.GetNext( pos ); if (!pData) return ; //向用户发送消息 ANS_BBS_SeeData See={0}; See.lBBSID = 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; DLG_BBS_Send dlg(this); dlg.SetParam( See , 3 ); 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 = lItem; pModify->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_BBS_SEND , pModifyData , lSize ); } return ; */ } void CK_SmsTask::On_User_Export() { m_wndList.CopyToClipboard(); /* //m_wndList.SetHeadings(_T("序号,40; 类 型,80;状态,50;企业ID,60;发送人,70; 发送号码,120; 接收人,70; 接收号码,120; 提交时间,150; 发送时间,150; 接收时间,150; 定时时间,150; 短信内容,1000; 信息ID,150;")); SortItem item[32]={0}; _tcscpy(item[0].szItem,_T("类 型")); _tcscpy(item[1].szItem,_T("状态")); _tcscpy(item[2].szItem,_T("企业ID")); _tcscpy(item[3].szItem,_T("发送人")); _tcscpy(item[4].szItem,_T("发送号码")); _tcscpy(item[5].szItem,_T("接收人")); _tcscpy(item[6].szItem,_T("接收号码")); _tcscpy(item[7].szItem,_T("提交时间")); _tcscpy(item[8].szItem,_T("发送时间")); _tcscpy(item[9].szItem,_T("接收时间")); _tcscpy(item[10].szItem,_T("定时时间")); _tcscpy(item[11].szItem,_T("短信内容")); _tcscpy(item[12].szItem,_T("状态报告")); DLG_HZB_Export dlg(this); dlg.SetParam( &m_wndList ); dlg.SetListItem(item,13,-2); dlg.DoModal(); */ } void CK_SmsTask::On_User_Copy() { long lItem = m_wndList.GetFirstSelectedItem(); if ( lItem < 0 ) return ; HGLOBAL hglbCopy; LPTSTR lptstrCopy; if (!OpenClipboard()) return ; EmptyClipboard(); CString str,strTemp; long lCol = m_wndList.GetColumnCount(); long lCount = m_wndList.GetSelectedItemCount(); for ( int i=0 ; i=0 ) { CString str1; for ( int j=0 ; jGetUserPurview(PURVIEW_FILT)) { return; } */ long lItem = m_wndList.GetFirstSelectedItem(); if (lItem < 0) return; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_PLTaskSms_SeeData * pData = m_ListData.GetNext(pos); if (!pData) return; REQ_PLTaskSms_See * pSee = new REQ_PLTaskSms_See; memset(pSee, 0, sizeof(REQ_PLTaskSms_See)); pSee->lCorpID = pData->lPLTaskSmsID; pSee->lStatus = -100; //查询所有的记录 m_lQueryCorpID = -100; switch (m_lTop) { case 1: pSee->lTop = 200; break; case 2: pSee->lTop = 500; break; case 3: pSee->lTop = 1000; break; case 4: pSee->lTop = 2000; break; case 5: pSee->lTop = 5000; break; case 0: default: pSee->lTop = -1; break; } this->Close_ListData(); //关闭原队列 m_wndList.ShowWindow(SW_HIDE); //为了加快显示速度 m_wndList.DeleteAllItems(); //先删除所有记录 m_pMainFrame->SendFrame(SMSFUNC_PLTASKSMS_SEE, (BYTE*)pSee, sizeof(REQ_PLTaskSms_See)); m_wndList.ShowWindow(SW_SHOW); //为了加快显示速度 } void CK_SmsTask::On_User_CorpList() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) ) { return ; } long lItem = m_wndList.GetFirstSelectedItem(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_PLTaskSms_SeeData * pData = m_ListData.GetNext( pos ); if (!pData) return ; this->m_pMainFrame->ShowFuncDlg(FUNC_LIST); this->m_pMainFrame->m_pUserView->m_dlgList.m_lQueryCorpID = pData->lCorpID; this->m_pMainFrame->m_pUserView->m_dlgList.OnListQuery(); /* m_lQueryCorpID = pData->lCorpID; OnListQuery(); */ } void CK_SmsTask::On_User_CorpOFF() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) ) { return ; } long lItem = m_wndList.GetFirstSelectedItem(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_PLTaskSms_SeeData * pData = m_ListData.GetNext( pos ); if (!pData) return ; // CString str; // str.Format( _T("是否要禁用此企业ID:%d?\r\n禁用后此企业将不能登录!"),pData->lCorpID ); // if ( MessageBox(str , _T("提问") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2) != IDYES ) // return ; ANS_Corp_SeeData data={0}; data.lCorpID = pData->lCorpID; DLG_Corp_Oper_Open dlg(this); dlg.SetParam(&data,false,this->m_pMainFrame->m_Setup.szUser); if ( dlg.DoModal() == IDOK ) { REQ_CorpOFF * pCorp = new REQ_CorpOFF;memset(pCorp,0,sizeof(REQ_CorpOFF)); pCorp->lCorpID = pData->lCorpID; pCorp->lStatus = 0; //0为禁用,1为启用 _tcscpy(pCorp->szBZ , dlg.m_strBZ ); _tcscpy(pCorp->szOper , dlg.m_strOperName ); m_pMainFrame->SendFrame(SMSFUNC_CORPOFF,(BYTE*)pCorp,sizeof(REQ_CorpOFF)); } } void CK_SmsTask::OnTimer(UINT_PTR nIDEvent) { CDialog::OnTimer(nIDEvent); if (nIDEvent == 10) //刷新数据 { KillTimer(10); #ifdef _DEBUG SetTimer(11, 5000, NULL); //40秒刷新超时 #else SetTimer(11, 40000, NULL); //40秒刷新超时 #endif OnListQuery(); } if (nIDEvent == 11) //刷新超时 { KillTimer(nIDEvent); m_pMainFrame->m_pUserView->m_dlgCheckup.Warning_Checkup(_T("短信刷新超时")); #ifdef _DEBUG SetTimer(10, 8 * 1000, NULL); #else SetTimer(10, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000 /2, NULL); //超时后再次刷新 #endif } }