// C_White.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "C_White.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CC_White dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_Back_Add.h"

CC_White::CC_White(CWnd* pParent /*=NULL*/)
	: CDialog(CC_White::IDD, pParent)
{
	//{{AFX_DATA_INIT(CC_White)
	m_lCorp = -1;
	m_strMobile = _T("");
	m_lStatus = -1;
	//}}AFX_DATA_INIT
	m_bInit = false;
	m_bRefresh = false;
	m_lQueryWhiteType = 0;  //用户白名单

	m_lInportStatus = 0;  //导入白名单状态
	m_lInportQRType = 0;  //正向确认,1反向确认
	m_lInportCorpID = 100000;  //导入白名单企业ID
}


void CC_White::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CC_White)
	DDX_Control(pDX, IDC_WHITE_CORPID, m_E_CorpID);
	DDX_Control(pDX, IDC_WHITE_S1, m_S_S1);
	DDX_Control(pDX, IDC_WHITE_LIST, m_wndList);
	DDX_Control(pDX, IDC_WHITE_CORP, m_L_Corp);
	DDX_CBIndex(pDX, IDC_WHITE_CORP, m_lCorp);
	DDX_Text(pDX, IDC_WHITE_USERID, m_strMobile);
	DDV_MaxChars(pDX, m_strMobile, 15);
	DDX_CBIndex(pDX, IDC_WHITE_STATUS, m_lStatus);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CC_White, CDialog)
	//{{AFX_MSG_MAP(CC_White)
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_WHITE_QUERY, OnWhiteQuery)
	ON_BN_CLICKED(IDC_WHITE_QUERY2, OnWhiteQuery2)
	ON_NOTIFY(NM_DBLCLK, IDC_WHITE_LIST, OnDblclkWhiteList)
	ON_NOTIFY(NM_RCLICK, IDC_WHITE_LIST, OnRclickWhiteList)
	ON_BN_CLICKED(IDC_WHITE_QUERY3, OnWhiteQuery3)
	//}}AFX_MSG_MAP
	ON_COMMAND( MENU_WHITE_ADD , On_White_Add )
	ON_COMMAND( MENU_WHITE_DEL , On_White_Del )
	ON_COMMAND( MENU_WHITE_TG  , On_White_TG )
	ON_COMMAND( MENU_WHITE_JJ  , On_White_JJ )
	ON_COMMAND( MENU_WHITE_INPORT  , On_White_Inport )
	ON_COMMAND( MENU_WHITE_COPY    , On_White_Copy )
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CC_White message handlers

BOOL CC_White::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;

	//初始化List
	m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_WHITE) );
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("序号,50; 企业ID,100; 用户ID,100;手机号码,100; 加入时间,150;白名单原因,200;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);

	m_bInit = true;

	m_lStatus = 0;

#ifdef SMSMANAGER_KF
	GetDlgItem(IDC_WHITE_QUERY3)->ShowWindow(SW_HIDE);
#endif
#ifdef SMSCENTER_GDYD_ADC
	GetDlgItem(IDC_WHITE_QUERY)->ShowWindow(SW_HIDE);
#endif

	UpdateData(false);	
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CC_White::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 CC_White::Close()
{
	//清除队列中的内容
	while (!m_Corp.IsEmpty())
	{
		ANS_Corp_NameData * pData = m_Corp.GetHead();
		m_Corp.RemoveHead();
		delete pData;
	}

	adoConnect.Close();
	adoRS.Close();
}

long CC_White::GetCurrentSelected()
{
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	if ( pos )
	{
		return m_wndList.GetNextSelectedItem(pos);
	}
	return -1;
}

BOOL CC_White::isLockItem(long lItem, BOOL bShowWarning)
{
	BOOL b = (m_wndList.GetIconIndex(lItem) == 1);
	if ( b && bShowWarning )
	{
		MessageBox( _T("正录被锁定,请等待服务器返回后再操作!") , _T("锁定中") , MB_ICONINFORMATION );
	}
	return b;
}

void CC_White::SetLockItem(long lItem, BOOL bLock)
{
	if ( bLock )
		m_wndList.SetIconIndex( lItem , 1 );
	else
		m_wndList.SetIconIndex( lItem , 0 );
}

void CC_White::ShowRMenu()
{
	if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB,false))  //没有查看权限
		return ;

	CMenu menu;
	menu.CreatePopupMenu();
	BOOL bLock = false;
	long lItem = this->GetCurrentSelected();
	if ( lItem >= 0 )
		bLock = isLockItem( lItem , false );   //取得是否正在锁定


	//添加
	menu.AppendMenu(MF_STRING     , MENU_WHITE_ADD, _T(" 添 加 ") );
	//删除
	if (  lItem >=0 && !bLock )
	{
		menu.AppendMenu(MF_STRING     , MENU_WHITE_DEL, _T(" 删 除 ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_WHITE_DEL , _T(" 删 除 ") );
	}
	if ( m_lQueryWhiteType == 2 )  //企业白名单其它功能
	{
		//审核成功
		if (  lItem >=0 && !bLock )
		{
			menu.AppendMenu(MF_STRING     , MENU_WHITE_TG, _T(" 手工确认通过 ") );
			menu.AppendMenu(MF_STRING     , MENU_WHITE_JJ, _T(" 手工确认拒绝 ") );
		}
		else
		{
			menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_WHITE_TG , _T(" 手工确认通过 ") );
			menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_WHITE_JJ , _T(" 手工确认拒绝 ") );
		}
		
		if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD,false) )  
		{
			menu.AppendMenu(MF_SEPARATOR );
			menu.AppendMenu(MF_STRING     , MENU_WHITE_INPORT, _T(" 导入企业白名单 ") );
		}
		
	}

	if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD,false) )  
	{
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING     , MENU_WHITE_COPY, _T(" 复 制 ") );
	}
	//显示菜单
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

BOOL CC_White::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();              //关闭原队列
		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_WHITE)
	{
		ANS_White * pList = (ANS_White *)pHead->pFrame;
		ANS_WhiteData * pData = (ANS_WhiteData *)(pHead->pFrame+sizeof(ANS_White));

		m_lQueryWhiteType = pList->lWhiteType;  //记录返回类型

		//添加到List
		m_wndList.ShowWindow( SW_HIDE );
		m_wndList.DeleteAllItems();
		long lCount = m_wndList.GetItemCount();
		TCHAR szBuf[32];
		for ( int i = 0 ; i< pList->lCount;i++)
		{
			//m_wndList.SetHeadings(_T("序号,50; 企业ID,100; 用户ID,100;手机号码,100;禁用原因,200;"));
			m_wndList.InsertItem( i,_itot(i+1,szBuf,10),0);
			m_wndList.SetItemData( i,pData->lWhiteID );

			_stprintf(szBuf , _T("%d") , pData->lCorpID );
			m_wndList.SetItemText(i,1,szBuf);
			_stprintf(szBuf , _T("%d") , pData->lUserID );
			m_wndList.SetItemText(i,2,szBuf);
			m_wndList.SetItemText(i,3,pData->szMobile);
			_stprintf(szBuf , _T("%04d.%02d.%02d %02d:%02d") , pData->tAdd.wYear,pData->tAdd.wMonth,pData->tAdd.wDay,pData->tAdd.wHour,pData->tAdd.wMinute);
			m_wndList.SetItemText(i,4,szBuf);
			m_wndList.SetItemText(i,5,pData->szBZ);
			pData++;
		}
		m_wndList.ShowWindow( SW_SHOW );
		return true;
	}
	//添加企业用户
	if (pHead->lFuncType == SMSFUNC_WHITE_ADD)
	{
		ANS_White_Add  * pAdd      = (ANS_White_Add *)pHead->pFrame;
		if ( pAdd->bOK == 1 )  //等于1时表示修改成功
		{
			long lCount = m_wndList.GetItemCount();
			TCHAR szBuf[32];
			_stprintf( szBuf, _T("%d") , lCount +1 );
			//设置新的数据
			m_wndList.InsertItem( lCount , szBuf);
			m_wndList.SetItemData( lCount, (DWORD_PTR)pAdd->lWhiteID );

			_stprintf(szBuf , _T("%d") , pAdd->lCorpID );
			m_wndList.SetItemText(lCount,1,szBuf);
			_stprintf(szBuf , _T("%d") , pAdd->lUserID );
			m_wndList.SetItemText(lCount,2,szBuf);
			m_wndList.SetItemText(lCount,3,pAdd->szMobile);
			m_wndList.SetItemText(lCount,5,pAdd->szBZ);

			if ( pAdd->lWhiteType ==3 )//批量上传白名单
			{
				m_lInportCount += pAdd->lWhiteCount;
				Inport_Next();
			}
		}
		return true;
	}
	//删除企业用户
	if (pHead->lFuncType == SMSFUNC_WHITE_DEL)
	{
		ANS_White_Del     * pDel     = (ANS_White_Del     *)pHead->pFrame;
		ANS_White_DelData * pDelData = (ANS_White_DelData *)(pHead->pFrame+sizeof(ANS_White_Del));
		for ( int i = pDel->lCount-1 ; i>=0 ; i-- )
		{
			if ( pDelData[i].lWhiteID )  //删除成功
			{
				switch( pDelData[i].lWhiteType )
				{
				case 1:
					m_wndList.SetItemText(pDelData[i].lItem,5 , _T("确认通过"));
					break;
				case 2:
					m_wndList.SetItemText(pDelData[i].lItem,5 , _T("确认拒绝"));
					break;
				case 10: //删除企业白名单
					m_wndList.DeleteItem(pDelData[i].lItem); //从ListCtrl中删除
					break;
				default:
					m_wndList.DeleteItem(pDelData[i].lItem); //从ListCtrl中删除
					break;
				}
			}
		}
	}

	return false;
}

BOOL CC_White::RefreshInfo()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
	{
		return false;
	}
	m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);

	return true;
}

BOOL CC_White::ReHide()
{
	ShowWindow( SW_HIDE );
	return true;
}

BOOL CC_White::ReShow(BOOL bRefresh)
{
	ShowWindow( SW_SHOW );
	if ( bRefresh || !m_bRefresh )
	{
		RefreshInfo();
	}
	return true;
}

void CC_White::OnWhiteQuery() 
{
	OnWhiteQueryA(0);  //查询公用通讯录
}

void CC_White::OnWhiteQuery3() 
{
	OnWhiteQueryA(2);  //查询企业白名单
}

void CC_White::OnWhiteQueryA(long lType) 
{
	if ( !UpdateData(true) )
		return ;

	REQ_White * pWhite = new REQ_White;memset(pWhite,0,sizeof(REQ_White));

	if ( m_lCorp <= 0 )  //选了所有企业
	{
		pWhite->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)
		{
			pWhite->lCorpID = pData->lCorpID;
		}
		else
		{
			return;
		}
	}
	pWhite->lWhiteStatus = m_lStatus;
	pWhite->lWhiteType = lType;
	_tcscpy( pWhite->szMobile , m_strMobile );
	m_pMainFrame->SendFrame(SMSFUNC_WHITE,(BYTE*)pWhite,sizeof(REQ_White));

	return ;	
}

void CC_White::OnWhiteQuery2() 
{
	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 CC_White::OnDblclkWhiteList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

void CC_White::OnRclickWhiteList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu();
}

void CC_White::On_White_Add()
{
	DLG_Back_Add dlg(this);
	if ( m_lQueryWhiteType == 0  ) //正常白名单
		dlg.SetParam(1);  //白名单
	else
		dlg.SetParam(2);  //企业白名单
	if ( dlg.DoModal() == IDOK )
	{
		if ( m_lQueryWhiteType == 0  ) //普通白名单
		{
			REQ_White_Add * pAdd = new REQ_White_Add;
			memset(pAdd,0,sizeof(REQ_White_Add));
			pAdd->lCorpID = dlg.m_lCorpID;
			pAdd->lUserID = dlg.m_lUserID;
			_tcscpy( pAdd->szMobile , dlg.m_strMobile );
			_tcscpy( pAdd->szBZ , dlg.m_strBZ );
			pAdd->lWhiteType   = m_lQueryWhiteType;
			m_pMainFrame->SendFrame(SMSFUNC_WHITE_ADD,(BYTE*)pAdd,sizeof(REQ_White_Add));
		}
		else
		{
			long lSize = sizeof(REQ_White_Add) + sizeof(ANS_White_Add_Data);
			BYTE * pData = new BYTE[lSize];
			memset(pData , 0 , lSize );
			REQ_White_Add * pAdd = (REQ_White_Add *)pData;
			ANS_White_Add_Data * pAddData = (ANS_White_Add_Data *)(pData+sizeof(REQ_White_Add));

			pAdd->lCorpID      = dlg.m_lCorpID;
			pAdd->lUserID = 0;
			pAdd->lWhiteType   = m_lQueryWhiteType;
			pAdd->lWhiteCount  = 1;  //只有一条记录
			_tcscpy( pAdd->szMobile , dlg.m_strMobile );

			switch(dlg.m_lStatus)
			{
			case 1:
				_tcscpy( pAdd->szBZ , _T("确认通过"));
				break;
			case 2:
				_tcscpy( pAdd->szBZ , _T("确认拒绝"));
				break;
			case 0:
			default:
				_tcscpy( pAdd->szBZ , _T("未确认"));
				break;
			}

			_tcscpy( pAddData->szMobile , dlg.m_strMobile );
			pAddData->lStatus      = dlg.m_lStatus;
			pAddData->lQRType      = dlg.m_lQR;
			m_pMainFrame->SendFrame(SMSFUNC_WHITE_ADD,(BYTE*)pData,lSize);

		}
	
	}
}

void CC_White::On_White_Del()
{
	long lRet = MessageBox( _T("此操作将会删除白名单用户,是否继续?") , _T("提问") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return;
	long lCount = m_wndList.GetSelectedCount();
	long lSize = sizeof(REQ_White_Del)+sizeof(ANS_White_DelData)*lCount;
	BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize);
	REQ_White_Del     * pDel = (REQ_White_Del *)pDelSend;   //头
	ANS_White_DelData * pDelData = (ANS_White_DelData *)(pDelSend+sizeof(REQ_White_Del));
	pDel->lCount = lCount;
	if ( m_lQueryWhiteType == 0  ) //正常白名单
		pDel->lWhiteType = 0;  //删除
	else
		pDel->lWhiteType = 10;  //删除
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	while(pos)
	{
		pDelData->lItem   = m_wndList.GetNextSelectedItem(pos);
		pDelData->lWhiteID = m_wndList.GetItemData(pDelData->lItem);
		if ( m_lQueryWhiteType == 0  ) //正常白名单
			pDelData->lWhiteType = 0; //删除普通白名单
		else
			pDelData->lWhiteType = 10; //删除企业白名单
		pDelData ++;
	}
	m_pMainFrame->SendFrame( SMSFUNC_WHITE_DEL , pDelSend , lSize );
}

void CC_White::On_White_TG()
{
	On_White_SH(1);
}
void CC_White::On_White_JJ()
{
	On_White_SH(2);
}

void CC_White::On_White_SH(long lType)
{
	long lRet = MessageBox( _T("此操作将会改变白名单状态,是否继续?") , _T("提问") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return;
	long lCount = m_wndList.GetSelectedCount();
	long lSize = sizeof(REQ_White_Del)+sizeof(ANS_White_DelData)*lCount;
	BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize);
	REQ_White_Del     * pDel = (REQ_White_Del *)pDelSend;   //头
	ANS_White_DelData * pDelData = (ANS_White_DelData *)(pDelSend+sizeof(REQ_White_Del));
	pDel->lCount = lCount;
	pDel->lWhiteType = lType;
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	while(pos)
	{
		pDelData->lItem   = m_wndList.GetNextSelectedItem(pos);
		pDelData->lWhiteID = m_wndList.GetItemData(pDelData->lItem);
		pDelData->lWhiteType = lType;
		pDelData ++;
	}
	m_pMainFrame->SendFrame( SMSFUNC_WHITE_DEL , pDelSend , lSize );
}

void CC_White::On_White_Inport()
{

	DLG_Back_Add dlg(this);
	if ( m_lQueryWhiteType == 0  ) //正常白名单
		dlg.SetParam(1);  //白名单
	else
		dlg.SetParam(2);  //企业白名单
	dlg.m_bInport = true;
	if ( dlg.DoModal() != IDOK )
	{
		return ;
	}

	m_lInportStatus = dlg.m_lStatus;
	m_lInportQRType = dlg.m_lQR;
	m_lInportCorpID = dlg.m_lCorpID;
	m_lInportCount  = 0;

	CString strTemp;

#define FILE_FILTER_TEXT \
	TEXT("Excel xls 文件 (*.xls)\0*.xls\0")\
    TEXT("所有文件 (*.*)\0*.*;\0\0")

	TCHAR szFile[ 256 ];
	TCHAR szFileB[ 256 ];
	*szFileB = NULL;
	_stprintf( szFile , _T("*.xls") );
	
	OPENFILENAME  sOpen;
	sOpen.lStructSize = sizeof( sOpen );
	sOpen.hwndOwner = this->m_hWnd ;
	sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
	sOpen.lpstrFilter = FILE_FILTER_TEXT;
	sOpen.lpstrDefExt = _T("txt");
	sOpen.lpstrCustomFilter = NULL;
	sOpen.nMaxCustFilter    = 0;
	sOpen.lpstrFile = szFile;
	sOpen.nMaxFile  = sizeof( szFile );
	sOpen.lpstrFileTitle = szFileB;
	sOpen.nMaxFileTitle = sizeof( szFileB );
	sOpen.lpstrInitialDir = NULL;
	sOpen.lpstrTitle = _T("打开导入的文件");
	if ( !::GetOpenFileName( &sOpen ) )
	{
		MessageBox(_T("打开文件失败,请检查!") , _T("错误") , MB_ICONWARNING );
		return ;
	}
	
	CString strName = sOpen.lpstrFile;
	adoConnect.Close();
	adoRS.Close();
	if ( !adoConnect.ConnectExcel(strName) )
	{
		strTemp.Format(_T("连接Excel文件:%s\n产生错误!") , strName );
		MessageBox( strTemp , _T("错误") , MB_ICONWARNING|MB_OK );
		return ;
	}

	adoRS.SetAdoConnection(&adoConnect);

	long lCount=0;
	if ( !adoRS.Open( _T("select * from [Sheet1$A1:IV65536]") ) )
	{
		strTemp.Format(_T("打开Excel数据表Sheet1错误!")  );
		MessageBox( strTemp , _T("错误") , MB_ICONWARNING|MB_OK );
		return ;
	}

	Inport_Next();
}
void CC_White::Inport_Next()
{

	long lMaxUpCount=200;

	long lSize = sizeof(REQ_White_Add) + sizeof(ANS_White_Add_Data)*lMaxUpCount;
	BYTE * pData = new BYTE[lSize];
	memset(pData , 0 , lSize );
	REQ_White_Add * pAdd = (REQ_White_Add *)pData;
	ANS_White_Add_Data * pAddData = (ANS_White_Add_Data *)(pData+sizeof(REQ_White_Add));


	pAdd->lCorpID      = m_lInportCorpID;
	pAdd->lUserID = 0;
	pAdd->lWhiteType   = 3;  //导入
	

	long lCount=0;
	while (lCount<lMaxUpCount && !adoRS.IsEOF() )
	{
		CString strMobile;
		adoRS.GetCollect((long)0, strMobile);  //第一列为号码
		
		strMobile.Replace( _T("\r") , _T("") );
		strMobile.Replace( _T("\n") , _T("") );
		strMobile.Replace( _T("\t") , _T("") );
		strMobile.Replace( _T(",") , _T(",") );
		strMobile.Replace(_T(".00000000") , _T("") );

		TCHAR szMobile[32]={0};
		_tcscpy(szMobile , strMobile);
		ExMobileGZM(szMobile);
		if ( ::isMobileNum(szMobile) )
		{
			pAddData[lCount].lStatus = m_lInportStatus;
			_tcscpy( pAddData[lCount].szMobile , szMobile );
#ifdef SMSCENTER_GDYD_ADC
			pAddData[lCount].lQRType = m_lInportQRType;
#endif

			if ( lCount==0 )
			{
				_tcscpy( pAdd->szMobile , szMobile );
				switch(m_lInportStatus)
				{
				case 1:
					_tcscpy( pAdd->szBZ , _T("确认通过"));
					break;
				case 2:
					_tcscpy( pAdd->szBZ , _T("确认拒绝"));
					break;
				case 0:
				default:
					_tcscpy( pAdd->szBZ , _T("未确认"));
					break;
				}
				
			}
			lCount ++;
		}
		adoRS.MoveNext();
	}
	if ( lCount<=0 )
	{
		adoConnect.Close();
		adoRS.Close();

		CString str;
		str.Format( _T("上传白名单成功,共上传%d个号码") , m_lInportCount );
		MessageBox(str , _T("成功") , MB_ICONINFORMATION );
		delete pData;
		return ;
	}
	pAdd->lWhiteCount  = lCount;
	m_pMainFrame->SendFrame(SMSFUNC_WHITE_ADD,(BYTE*)pData,lSize);
}

void CC_White::On_White_Copy()
{
	m_wndList.CopyToClipboard();
}