SmsManager/ListMmsDlg.cpp

1212 lines
31 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.

// ListMmsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "ListMmsDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CListMmsDlg 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 "DLG_CheckUp_Mms_See.h"
CListMmsDlg::CListMmsDlg(CWnd* pParent /*=NULL*/)
: CDialog(CListMmsDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CListMmsDlg)
m_lCorp = -1;
m_tBegin = COleDateTime::GetCurrentTime();
m_tEnd = COleDateTime::GetCurrentTime();
m_lMobileType = -1;
m_bOld = FALSE;
m_lMsgType = -1;
m_bJF = FALSE;
m_lTop = -1;
m_strMobile = _T("");
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
// m_bProcess = false;
m_lQueryCorpID = 0;
//取彩信
m_bProcess = false;
m_pMmsBuf = NULL;
m_lMmsSize= 0;
m_tBegin2 = COleDateTime::GetCurrentTime();
m_tEnd2 = COleDateTime::GetCurrentTime();
}
void CListMmsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CListMmsDlg)
DDX_Control(pDX, IDC_LIST_MOBILE, m_E_Mobile);
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_MOBILETYPE, m_lMobileType);
DDX_Check(pDX, IDC_LIST_OLD, m_bOld);
DDX_CBIndex(pDX, IDC_LIST_MSGYTYPE, m_lMsgType);
DDX_Check(pDX, IDC_LIST_JF, m_bJF);
DDX_CBIndex(pDX, IDC_LIST_TOP, m_lTop);
DDX_Text(pDX, IDC_LIST_MOBILE, m_strMobile);
DDV_MaxChars(pDX, m_strMobile, 15);
//}}AFX_DATA_MAP
DDX_DateTimeCtrl(pDX, IDC_LIST_TBEGIN2, m_tBegin2);
DDX_DateTimeCtrl(pDX, IDC_LIST_TEND2, m_tEnd2);
}
BEGIN_MESSAGE_MAP(CListMmsDlg, CDialog)
//{{AFX_MSG_MAP(CListMmsDlg)
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_CORPOFF , On_User_CorpOFF )
ON_COMMAND(MENU_LIST_EXPORT , On_User_Export )
ON_COMMAND(MENU_LIST_COPY , On_User_Copy )
ON_COMMAND(MENU_LIST_SEEMMS , On_User_SeeMms)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_LIST, &CListMmsDlg::OnLvnItemchangedListList)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CListMmsDlg message handlers
BOOL CListMmsDlg::ReShow(BOOL bRefresh)
{
#ifdef SMSMANAGER_KF
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
{
GetDlgItem(IDC_LIST_OLD)->ShowWindow(SW_HIDE);
m_bOld = false;
}
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
{
GetDlgItem(IDC_LIST_TOP)->EnableWindow(false);
GetDlgItem(IDC_LIST_TBEGIN)->EnableWindow(false);
GetDlgItem(IDC_LIST_TEND)->EnableWindow(false);
GetDlgItem(IDC_LIST_TBEGIN2)->EnableWindow(false);
GetDlgItem(IDC_LIST_TEND2)->EnableWindow(false);
}
#endif
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CListMmsDlg::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CListMmsDlg::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return false;
}
m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);
return true;
}
BOOL CListMmsDlg::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;i<pCorp->lCount;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;
}
if (pHead->lFuncType == SMSFUNC_BACK_ADD)
{
ANS_Back_Add * pBack = (ANS_Back_Add *)pHead->pFrame;
CString str;
if ( pBack->bOK )
{
str.Format( _T("黑名单添加成功,%d->%s!"),pBack->lCorpID , pBack->szMobile );
MessageBox( str , _T("提示") , MB_ICONINFORMATION );
}
else
{
str.Format( _T("黑名单添加失败,请检查!"));
MessageBox( str , _T("提示") , MB_ICONINFORMATION );
}
return true;
}
return false;
}
BOOL CListMmsDlg::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;
#ifdef SMSMANAGER_KF
GetDlgItem(IDC_LIST_S1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_CORP)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_QUERY2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_CORPID)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_OLD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_JF)->ShowWindow(SW_HIDE);
//GetDlgItem(IDC_LIST_S2)->ShowWindow(SW_HIDE);
//GetDlgItem(IDC_LIST_MOBILETYPE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_MSGYTYPE)->ShowWindow(SW_HIDE);
#endif
//初始化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;状态,50;企业ID,60;发送人,70; 发送号码,130; 接收人,70; 接收号码,130;运营商,70; 提交时间,150; 发送时间,150; 接收时间,150; 定时时间,150; 彩信标题,150;彩信大小,70; 备注,400;"));
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 );//结束
*/
SYSTEMTIME t; ::GetLocalTime(&t);
m_tBegin.SetDate( t.wYear,t.wMonth,t.wDay ); //起始
m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//结束
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
{
COleDateTime tP = COleDateTime::GetCurrentTime() - COleDateTimeSpan(2, 0, 0, 0);
m_tBegin.SetDate(tP.GetYear(), tP.GetMonth(), tP.GetDay()); //起始
}
t.wHour=0;
t.wMinute=0;
t.wSecond=0;
m_tBegin2.SetTime(t.wHour,t.wMinute,t.wSecond);
t.wHour=23;
t.wMinute=59;
t.wSecond=59;
m_tEnd2.SetTime(t.wHour,t.wMinute,t.wSecond);
m_lMobileType = 0; //默认查询所有号码
m_lMsgType=0; //默认查询所有类型的短信
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 CListMmsDlg::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 CListMmsDlg::Close()
{
Close_Corp();
Close_ListData();
}
void CListMmsDlg::OnListQuery()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
UpdateData(true);
m_tBegin.SetDateTime(m_tBegin.GetYear(),m_tBegin.GetMonth(),m_tBegin.GetDay(),m_tBegin2.GetHour(),m_tBegin2.GetMinute(),m_tBegin2.GetSecond());
m_tEnd.SetDateTime(m_tEnd.GetYear(),m_tEnd.GetMonth(),m_tEnd.GetDay(),m_tEnd2.GetHour(),m_tEnd2.GetMinute(),m_tEnd2.GetSecond());
if ( m_tEnd < m_tBegin )
{
MessageBox( _T("查询结束时间不能小于起始时间,请改正!") , _T("错误") , MB_ICONWARNING );
return ;
}
REQ_ListMms * pList = new REQ_ListMms;memset(pList,0,sizeof(REQ_ListMms));
if ( m_strMobile.GetLength()>8 )
_tcscpy(pList->szMobile , m_strMobile );
// m_E_Mobile.SetWindowText( _T("") );
#ifdef SMSMANAGER_KF
if ( m_lQueryCorpID )
{
pList->lCorpID = m_lQueryCorpID;
pList->lMsgType = -1; //查询所有的记录
m_lQueryCorpID = 0;
_tcscpy(pList->szMobile, _T(""));
}
else
{
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
{
if (m_strMobile.GetLength() < 8)
{
MessageBox(_T("必须输入手机号码查询清单!"), _T("错误"), MB_ICONWARNING);
GetDlgItem(IDC_LIST_MOBILE)->SetFocus();
return;
}
}
pList->lCorpID = -1;
pList->lMsgType = 4; //查询接收的记录
}
m_tBegin.GetAsSystemTime( pList->tBegin );
m_tEnd.GetAsSystemTime( pList->tEnd );
pList->lMobileType = m_lMobileType-1; //手机类型
pList->bOld = false; //是否查询旧数据
pList->bJF = false; //是否仅查询计费的
if ( _tcslen(pList->szMobile)>8 )
{
pList->lCorpID = -1;
pList->lMsgType = -1; //查询所有的记录
pList->lMobileType = -1; //手机类型
}
#else
if ( m_lQueryCorpID )
{
pList->lCorpID = m_lQueryCorpID;
pList->lMsgType = -1; //查询所有的记录
m_lQueryCorpID = 0;
_tcscpy(pList->szMobile, _T(""));
}
else
{
if ( m_lCorp <= 0 ) //选了所有企业
{
pList->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)
{
pList->lCorpID = pData->lCorpID;
}
else
{
return;
}
}
pList->lMobileType = m_lMobileType-1; //手机类型
pList->lMsgType = m_lMsgType-1; //短信类型
pList->bOld = m_bOld; //是否查询旧数据
pList->bJF = m_bJF; //是否仅查询计费的
}
m_tBegin.GetAsSystemTime( pList->tBegin );
m_tEnd.GetAsSystemTime( pList->tEnd );
#endif
switch ( m_lTop )
{
case 1:
pList->lTop = 200;
break;
case 2:
pList->lTop = 500;
break;
case 3:
pList->lTop = 1000;
break;
case 4:
pList->lTop = 2000;
break;
case 5:
pList->lTop = 5000;
break;
case 0:
default:
pList->lTop = -1;
break;
}
this->Close_ListData(); //关闭原队列
m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度
m_wndList.DeleteAllItems(); //先删除所有记录
m_pMainFrame->SendFrame(SMSFUNC_LISTMMS,(BYTE*)pList,sizeof(REQ_ListMms));
// m_bProcess = true;
// m_Process.DoModal();
// m_bProcess = false;
m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度
m_S_S1.SetWindowText( _T("查询企业") );
#ifdef SMSCENTER_NX
GetDlgItem(IDC_LIST_QUERY)->EnableWindow(false);
#endif
return ;
}
void CListMmsDlg::OnDblclkListList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CListMmsDlg::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<lCount ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
return ;
}
}
for ( i=0 ; i<lSel ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
return ;
}
}
}
void CListMmsDlg::OnRclickListList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CListMmsDlg::ShowRMenu()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
#if defined(SMSCENTER_NX) && !defined(SMSCENTER_GDDX)
//农信版本,根据不同权限划分客服与查帐两个版本
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_RESETPASSWD,false) ) //最小权限
{
return ;
}
#endif
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_SEEMMS , _T(" 查彩信内容 ") );
menu.AppendMenu(MF_SEPARATOR );
if (m_pMainFrame->GetUserPurview(PURVIEW_LIST, false))
{
menu.AppendMenu(MF_STRING, MENU_LIST_CORPLIST, _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(" 发送黑名单屏蔽通知 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_SEE , _T(" 查基本资料 ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_SEEMMS , _T(" 查彩信内容 ") );
menu.AppendMenu(MF_SEPARATOR );
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(" 复 制 ") );
#ifndef SMSMANAGER_KF
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_LIST_EXPORT , _T(" 导 出 ") );
#endif
//显示菜单
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
long CListMmsDlg::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CListMmsDlg::On_User_See()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_ListMmsData * pData = m_ListData.GetNext( pos );
if (!pData)
return ;
SMS_See sms={0};
_stprintf(sms.szCorpID, _T("%d"), pData->lCorpID);
CString strType = _T("未知");
switch (pData->lSmsType)
{
case SMSTYPE_SEND:
strType = _T("下行短信");
break;
case SMSTYPE_ZF:
strType = _T("转发短信");
break;
case SMSTYPE_ALARM:
strType = _T("日程提醒");
break;
case SMSTYPE_EMAIL:
strType = _T("邮件通知");
break;
case SMSTYPE_RECV:
strType = _T("回复短信");
break;
case SMSTYPE_SP:
strType = _T("增值业务");
break;
case SMSTYPE_SWT:
strType = _T("商务通");
break;
}
CString strStatus = _T("未知");
switch (pData->lStatus)
{
case SMSTYPE_SEND:
strStatus = _T("提交成功");
break;
case SEND_STATUS_SUB_FILT:
strStatus = _T("审核中");
break;
case SEND_STATUS_SUB_ERROR:
case SEND_STATUS_SUB_USERNOSMS:
case SEND_STATUS_SUB_CORPNOSMS:
case SEND_STATUS_SUB_CORPOVRDATE:
case SEND_STATUS_SUB_NUMNOSUP:
case SEND_STATUS_OVERCOUNT:
case SEND_STATUS_NOSY:
strStatus = _T("提交失败");
break;
case SEND_STATUS_FILT_ERROR:
strStatus = _T("审核失败");
break;
case SEND_STATUS_SEND_OK:
strStatus = _T("发送成功");
break;
case SEND_STATUS_SEND_ERROR:
strStatus = _T("发送失败");
break;
case SEND_STATUS_RECV_OK:
strStatus = _T("接收成功");
break;
case SEND_STATUS_RECV_ERROR:
strStatus = _T("接收失败");
break;
}
_stprintf(sms.szStatus, _T("%d - %s - %s"), pData->lStatus, strStatus, strType);
if ( _tcslen(pData->szSender))
_stprintf( sms.szSender , _T("%s-%s") , pData->szSender,pData->szSendNum);
else
_stprintf( sms.szSender , _T("%s") , pData->szSendNum );
TCHAR szBuf[32] = { 0 };
_tcscpy(szBuf, pData->szRecvNum);
#ifdef SMSMANAGER_KF
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB, false))
{
szBuf[4] = '*'; szBuf[5] = '*'; szBuf[6] = '*';
}
#endif
if ( _tcslen(pData->szRecver))
_stprintf( sms.szRecver , _T("%s-%s") , pData->szRecver, szBuf);
else
_stprintf( sms.szRecver , _T("%s") , szBuf);
_stprintf( sms.szSendTime , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tSendTime.wYear, pData->tSendTime.wMonth,pData->tSendTime.wDay,pData->tSendTime.wHour,pData->tSendTime.wMinute,pData->tSendTime.wSecond );
_stprintf( sms.szRecvTime , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tRecvTime.wYear,pData->tRecvTime.wMonth,pData->tRecvTime.wDay,pData->tRecvTime.wHour,pData->tRecvTime.wMinute,pData->tRecvTime.wSecond );
_stprintf( sms.szMsg , _T("(%.2fk) %s") , (float)pData->lmmSize/1024.0f,pData->szTitle );
CString str;
str.Format(_T("%-32s;%-4d;%s") , pData->szMsgID,pData->lSendRet,pData->szRecvStatus);
str.TrimLeft();
str.TrimRight();
_tcscpy(sms.szAdd,str);
DLG_SmsLogSee dlg(this);
dlg.SetParam(sms);
dlg.DoModal();
}
void CListMmsDlg::On_User_SeeMms()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_ListMmsData * pData = m_ListData.GetNext( pos );
if (!pData)
return ;
if (m_pMmsBuf )
{
delete m_pMmsBuf;
m_pMmsBuf = NULL;
m_lMmsSize= 0;
}
m_bProcess = true;
REQ_Mms_GetFile * pGet = new REQ_Mms_GetFile;
memset(pGet , 0 , sizeof(REQ_Mms_GetFile));
pGet->lCorpID = pData->lCorpID;
pGet->lUserID = pData->lUserID;
pGet->lFileID = pData->lFileID;
m_pMainFrame->SendFrame(SMSFUNC_MMS_GETFILE2 , (BYTE*)pGet , sizeof(REQ_Mms_GetFile) );
m_Process.DoModal();
m_bProcess = false;
if ( m_pMmsBuf && m_lMmsSize>0 )
{
int i=0;
}
}
void CListMmsDlg::On_User_AddBack()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_ListMmsData * 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->szTitle;
str.Format( _T("真的要添加以下内容到黑名单:\r\n号码:%s\r\n内容:(%.2fk) %s\r\n"),strMobile2,(float)pData->lmmSize/1024.0f,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 CListMmsDlg::On_User_SendBBS()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_ListMmsData * 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 CListMmsDlg::On_User_Export()
{
//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 CListMmsDlg::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<lCol ; i++ )
{
LVCOLUMN lmn={0};
TCHAR szBuf[256]={0};
lmn.mask = LVCF_TEXT;
lmn.pszText = szBuf;
lmn.cchTextMax = sizeof(szBuf);
m_wndList.GetColumn(i , &lmn);
str += CString(lmn.pszText );
str += CString(_T("\t"));
}
str += _T("\r\n");
lItem = -1;
for ( i=0 ; i<lCount ; i++ )
{
lItem = m_wndList.GetFirstSelectedItem(lItem);
if ( lItem >=0 )
{
CString str1;
for ( int j=0 ; j<lCol; j++ )
{
str1=m_wndList.GetItemText(lItem,j);
#ifdef SMSMANAGER_KF
if ( j == 12 )
str1 = _T("");
#endif
str1.TrimLeft();str1.TrimRight();str1.Replace( _T("\t") , _T("") );str1.Replace( _T("\r") , _T("") );str1.Replace( _T("\n") , _T("") );
strTemp.Format(_T("%s\t"),str1);
str += strTemp;
}
str += _T("\r\n");
}
}
hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (str.GetLength()+1)*sizeof(TCHAR));
if (hglbCopy == NULL)
{
CloseClipboard();
return ;
}
lptstrCopy = (LPTSTR)GlobalLock(hglbCopy);
_tcscpy(lptstrCopy,str);
GlobalUnlock(hglbCopy);
#ifdef _UNICODE
::SetClipboardData(CF_UNICODETEXT, hglbCopy);
#else
::SetClipboardData(CF_TEXT, hglbCopy);
#endif
CloseClipboard();
return ;
}
void CListMmsDlg::Close_Corp()
{
//清除队列中的内容
while (!m_Corp.IsEmpty())
{
ANS_Corp_NameData * pData = m_Corp.GetHead();
m_Corp.RemoveHead();
delete pData;
}
}
void CListMmsDlg::Close_ListData()
{
//清除队列中的内容
while (!m_ListData.IsEmpty())
{
ANS_ListMmsData * pData = m_ListData.GetHead();
m_ListData.RemoveHead();
delete pData;
}
}
void CListMmsDlg::On_User_CorpList()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_ListMmsData * pData = m_ListData.GetNext( pos );
if (!pData)
return ;
m_lQueryCorpID = pData->lCorpID;
OnListQuery();
}
void CListMmsDlg::On_User_CorpOFF()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) )
{
return ;
}
long lItem = m_wndList.GetFirstSelectedItem();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_ListMmsData * 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));
}
}
BOOL CListMmsDlg::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
//取清单
if (pHead->lFuncType == SMSFUNC_LISTMMS)
{
#ifdef SMSCENTER_NX
GetDlgItem(IDC_LIST_QUERY)->EnableWindow(true);
#endif
ANS_ListMms * pList = (ANS_ListMms *)pFrame;
ANS_ListMmsData * pData = (ANS_ListMmsData *)(pFrame+sizeof(ANS_ListMms));
CString str,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};
for ( int i = 0 ; i< pList->lCount;i++)
{
ANS_ListMmsData * pNewData = new ANS_ListMmsData;
*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);
_tcscpy( szBuf , _T("未知") );
switch( pData->lSmsType )
{
case SMSTYPE_SEND:
_tcscpy(szBuf , _T("发 送") );
break;
case SMSTYPE_ZF:
_tcscpy(szBuf , _T("转 发") );
break;
case SMSTYPE_ALARM:
_tcscpy(szBuf , _T("日程提醒") );
break;
case SMSTYPE_EMAIL:
_tcscpy(szBuf , _T("邮件通知") );
break;
case SMSTYPE_RECV:
_tcscpy(szBuf , _T("接 收") );
break;
case SMSTYPE_SP:
_tcscpy(szBuf , _T("增值业务") );
break;
case SMSTYPE_SWT:
_tcscpy(szBuf , _T("商务通") );
break;
}
m_wndList.SetItemText(lCount+i,1,szBuf);
#ifdef SMSMANAGER_KF
_tcscpy( szBuf , _T("未知") );
switch( pData->lStatus )
{
case 0:
_tcscpy(szBuf , _T("未发"));
break;
case 1:
_tcscpy(szBuf , _T("审核"));
break;
case 7:
_tcscpy(szBuf , _T("审核失败"));
break;
case 10:
case 12:
_tcscpy(szBuf , _T("发送成功"));
break;
case 11:
case 13:
_tcscpy(szBuf , _T("发送失败"));
break;
}
m_wndList.SetItemText(lCount+i,2,szBuf);
#else
_stprintf(szBuf , _T("%4d") , pData->lStatus );
m_wndList.SetItemText(lCount+i,2,szBuf);
#endif
_stprintf(szBuf , _T("%d") , pData->lCorpID );
m_wndList.SetItemText(lCount+i,3,szBuf);
m_wndList.SetItemText(lCount+i,4,pData->szSender);
_tcscpy(szBuf , pData->szSendNum );
#ifdef SMSMANAGER_KF
//szBuf[4]='*';szBuf[5]='*';szBuf[6]='*';
#endif
m_wndList.SetItemText(lCount+i,5,szBuf);
m_wndList.SetItemText(lCount+i,6,pData->szRecver);
_tcscpy(szBuf , pData->szRecvNum );
#ifdef SMSMANAGER_KF
szBuf[4]='*';szBuf[5]='*';szBuf[6]='*';
#endif
m_wndList.SetItemText(lCount+i,7,szBuf);
switch (pData->lRecvNumType)
{
case 0:
str = _T("移动");
break;
case 1:
str = _T("联通");
break;
case 2:
str = _T("小灵通");
break;
case 3:
str = _T("电信");
break;
case 4:
str = _T("国际");
break;
default:
str = _T("");
break;
}
m_wndList.SetItemText(lCount + i, 8, str);
_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tSubTime.wYear, pData->tSubTime.wMonth,pData->tSubTime.wDay,pData->tSubTime.wHour,pData->tSubTime.wMinute,pData->tSubTime.wSecond );
m_wndList.SetItemText(lCount+i,9,szBuf);
_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tSendTime.wYear, pData->tSendTime.wMonth,pData->tSendTime.wDay,pData->tSendTime.wHour,pData->tSendTime.wMinute,pData->tSendTime.wSecond );
m_wndList.SetItemText(lCount+i,10,szBuf);
_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tRecvTime.wYear,pData->tRecvTime.wMonth,pData->tRecvTime.wDay,pData->tRecvTime.wHour,pData->tRecvTime.wMinute,pData->tRecvTime.wSecond );
m_wndList.SetItemText(lCount+i,11,szBuf);
_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tTimerTime.wYear,pData->tTimerTime.wMonth,pData->tTimerTime.wDay,pData->tTimerTime.wHour,pData->tTimerTime.wMinute,pData->tTimerTime.wSecond );
m_wndList.SetItemText(lCount+i,12,szBuf);
m_wndList.SetItemText(lCount+i,13,pData->szTitle);
_stprintf( szBuf , _T("%.2fk") , (float)pData->lmmSize/1024.0f);
m_wndList.SetItemText(lCount+i,14,szBuf);
_stprintf(szBuf,_T("%-32s;%-4d;%s") , pData->szMsgID,pData->lSendRet,pData->szRecvStatus);
m_wndList.SetItemText(lCount+i,15,szBuf);
m_wndList.SetItemData(lCount+i,(DWORD_PTR)(pos) );
pData++;
}
// if ( m_bProcess ) //是导入用户,需要显示进度条,并导入下一条
// {
// m_Process.SetProcess( pList->lPageAll , pList->lPageCount );
// }
return true;
}
//取彩信
if (pHead->lFuncType == SMSFUNC_MMS_GETFILE2)
{
ANS_REQ_Mms_GetFile2 * pGet = (ANS_REQ_Mms_GetFile2 *)pFrame;
BYTE * pData = (BYTE *)(pFrame+sizeof(ANS_REQ_Mms_GetFile2));
if ( pGet->lStatus <=0 )
{
CString str;
str.Format(_T("取彩信附件错误,错误代码:%d") , pGet->lStatus );
MessageBox(str , _T("错误") , MB_ICONWARNING );
if ( m_bProcess ) //是导入用户,需要显示进度条,并导入下一条
{
m_Process.SetProcess( 1 , 1 );
}
if (m_pMmsBuf )
{
delete m_pMmsBuf;
m_pMmsBuf = NULL;
m_lMmsSize= 0;
}
}
else
{
if ( pGet->lDownSize == pGet->lSize ) //第一个包
{
if (m_pMmsBuf )
{
delete m_pMmsBuf;
m_pMmsBuf = NULL;
m_lMmsSize= 0;
}
m_lMmsSize = pGet->lAllSize;
m_pMmsBuf = new BYTE[m_lMmsSize];
memset(m_pMmsBuf , 0 , m_lMmsSize );
}
if ( m_pMmsBuf )
{
memcpy(m_pMmsBuf+(pGet->lDownSize-pGet->lSize) ,pData, pGet->lSize );
}
if ( m_bProcess ) //是导入用户,需要显示进度条,并导入下一条
{
m_Process.SetProcess( pGet->lAllSize , pGet->lDownSize );
}
if ( pGet->lAllSize == pGet->lDownSize &&
m_pMmsBuf && m_lMmsSize>0 )
{
DLG_CheckUp_Mms_See dlg(this);
dlg.SetParam(*pGet , m_pMmsBuf , m_lMmsSize , this->m_pMainFrame);
dlg.DoModal();
if (m_pMmsBuf )
{
delete m_pMmsBuf;
m_pMmsBuf = NULL;
m_lMmsSize= 0;
}
}
}
return true;
}
return false;
}
void CListMmsDlg::OnLvnItemchangedListList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}