123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- // SendMsgLogDlg.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "lyfzSMSApp.h"
- #include "SendMsgLogDlg.h"
- #include "DataManager.h"
- // CSendMsgLogDlg 对话框
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- DWORD WINAPI ThreadFun(LPVOID lparam);
- IMPLEMENT_DYNAMIC(CSendMsgLogDlg, CDialog)
- CSendMsgLogDlg::CSendMsgLogDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CSendMsgLogDlg::IDD, pParent)
- {
- m_strAccount = _T(""); //帐号
- m_strPassWord = _T(""); //密码
- m_pSMSHandle = NULL; //短信处理
- }
- CSendMsgLogDlg::~CSendMsgLogDlg()
- {
- m_pSMSHandle = NULL;
- }
- void CSendMsgLogDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_SendMsgLog_List, m_MsgLogList);
- }
- BEGIN_MESSAGE_MAP(CSendMsgLogDlg, CDialog)
- ON_BN_CLICKED(IDC_Refresh_Btn, &CSendMsgLogDlg::OnBnClickedRefreshBtn)
- ON_BN_CLICKED(IDC_SMS_RESEND, &CSendMsgLogDlg::OnBnClickedSmsResend)
- ON_NOTIFY(NM_CLICK, IDC_SendMsgLog_List, &CSendMsgLogDlg::OnNMClickSendmsglogList)
- ON_BN_CLICKED(IDC_DELLOG_BTN, &CSendMsgLogDlg::OnBnClickedDellogBtn)
- END_MESSAGE_MAP()
- BOOL CSendMsgLogDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- m_MsgLogList.InsertColumn(0,_T("帐号"));
- m_MsgLogList.SetColumnWidth(0,58);
- m_MsgLogList.InsertColumn(1,_T("手机号码"));
- m_MsgLogList.SetColumnWidth(1,100);
- m_MsgLogList.InsertColumn(2,_T("内容"));
- m_MsgLogList.SetColumnWidth(2,100);
- m_MsgLogList.InsertColumn(3,_T("时间"));
- m_MsgLogList.SetColumnWidth(3,100);
- m_MsgLogList.InsertColumn(4,_T("次数"));
- m_MsgLogList.SetColumnWidth(4,100);
- m_MsgLogList.InsertColumn(5,_T("记录"));
- m_MsgLogList.SetColumnWidth(5,100);
- m_MsgLogList.InsertColumn(6,_T("状态"));
- m_MsgLogList.SetColumnWidth(6,100);
- m_MsgLogList.InsertColumn(7,_T("Sid"));
- m_MsgLogList.SetColumnWidth(7,100);
- m_MsgLogList.InsertColumn(8,_T("ID"));
- m_MsgLogList.SetColumnWidth(8,100);
- m_MsgLogList.SetExtendedStyle(m_MsgLogList.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
- //查询所有记录
- if(SelectAllLogs() == -1)
- return FALSE;
- return TRUE;
- }
- // CSendMsgLogDlg 消息处理程序
- int CSendMsgLogDlg::SelectAllLogs()
- {
- CArray<CStringArray, CStringArray> arr;
- CString strTableName = _T("sendreg");
- //account,phones,content,timestamp,msgcount,log,status,autoid
- std::vector<CString> vFields;
- vFields.push_back(_T("account"));
- vFields.push_back(_T("phones"));
- vFields.push_back(_T("content"));
- vFields.push_back(_T("timestamp"));
- vFields.push_back(_T("msgcount"));
- vFields.push_back(_T("log"));
- vFields.push_back(_T("status"));
- vFields.push_back(_T("Sid"));
- vFields.push_back(_T("autoid"));
- CDataManager::GetInstance()->Select(arr, strTableName, vFields);
- if(arr.GetSize() == 0)
- {
- MessageBox(_T("没有记录可查询"));
- return -1;
- }
- for(int i=0; i<arr.GetSize(); i++)
- {
- int nRow = 0;
- for(int j=0; j<arr.ElementAt(i).GetSize(); j++)
- {
- if(j == 0)
- nRow = m_MsgLogList.InsertItem(i, arr.ElementAt(i).ElementAt(j));
- else
- m_MsgLogList.SetItemText(nRow, j, arr.ElementAt(i).ElementAt(j)); //插入列
- }
- }
- return 0;
- }
- //刷新
- void CSendMsgLogDlg::OnBnClickedRefreshBtn()
- {
- // TODO: 在此添加控件通知处理程序代码
- //查询所有记录
- m_MsgLogList.DeleteAllItems();
- SelectAllLogs();
- }
- //短信重发
- void CSendMsgLogDlg::OnBnClickedSmsResend()
- {
- // TODO: 在此添加控件通知处理程序代码
- if(m_strAccount == _T(""))
- {
- MessageBox(_T("请输入登录的帐户"));
- return;
- }
- if(!CheckNumFormat(m_strAccount))
- {
- MessageBox(_T("帐号只能是数字"));
- return;
- }
- if(m_strPassWord == _T(""))
- {
- MessageBox(_T("请输入登录的密码"));
- return;
- }
- DWORD dwThreadID = 0;
- HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFun, this, 0, &dwThreadID);
- CloseHandle(hThread);
- }
- //重发
- void CSendMsgLogDlg::ReSend(CString& strAccount, CString& strPassWord, CString& strContent, CString& strPhoneNums)
- {
- if(m_pSMSHandle == NULL)
- {
- MessageBox(_T("短信发送失败"));
- return;
- }
- if(strContent == _T(""))
- {
- MessageBox(_T("还没有编辑信息"));
- return;
- }
- if(strPhoneNums == _T(""))
- {
- MessageBox(_T("请编辑要发送的号码"));
- return;
- }
-
- //添加新记录 列名:account,phones,content,timestamp,msgcount,log,status,Sid,autoid(自动编号)
- CString strTableName = _T("sendreg");
- int nCurrSendCount = 0;
- CString strfiles = _T("account,phones,content,[timestamp],msgcount,log,status,Sid");
- CString strStampTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
- CString strValues = _T("");
- strValues = _T("'") + strAccount + _T("','") + strPhoneNums + _T("','") + strContent + _T("','") + strStampTime + _T("','0','0/1','0','0'");
- if(CDataManager::GetInstance()->Insert(strTableName, strValues, strfiles) == -1)
- {
- MessageBox(_T("添加记录失败"));
- return;
- }
- //查找第一行数据
- CArray<CStringArray, CStringArray> arr;
- std::vector<CString> vFields;
- vFields.push_back(_T("autoid"));
- CString strstrSelLineCount = _T("top 1");
- if(CDataManager::GetInstance()->Select(arr, strTableName, vFields, _T(""), strstrSelLineCount, _T("autoid desc")) == -1)
- {
- MessageBox(_T("查询记录失败"));
- return;
- }
- if(arr.GetSize() == 0)
- return;
- //发送信息
- //获取帐号余额
- if(m_pSMSHandle->SendSMToSever(g_szSMSServer, g_dwTCPSMSPort, strAccount, strPassWord, strPhoneNums, strContent, strStampTime, arr.ElementAt(0).ElementAt(0)) == 0)
- MessageBox(_T("发送成功!"));
- }
- void CSendMsgLogDlg::OnNMClickSendmsglogList(NMHDR *pNMHDR, LRESULT *pResult)
- {
- LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
- // TODO: 在此添加控件通知处理程序代码
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- if(pNMListView->iItem != -1)
- {
- //单击行列pNMListView->iItem, pNMListView->iSubItem
- m_MsgLogList.GetItemText(pNMListView->iItem, 1);
- }
- *pResult = 0;
- }
- void CSendMsgLogDlg::SendSMS()
- {
- int nCount = m_MsgLogList.GetItemCount();
- for(int i = 0; i<nCount; i++)
- {
- if( m_MsgLogList.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
- {
- CString strContent = m_MsgLogList.GetItemText(i, 2);
- CString strPhoneNums = m_MsgLogList.GetItemText(i, 1);
- ReSend(m_strAccount, m_strPassWord, strContent, strPhoneNums);
- Sleep(10);
- }
- }
- }
- DWORD WINAPI ThreadFun(LPVOID lparam)
- {
- CSendMsgLogDlg* p = (CSendMsgLogDlg*)lparam;
- p->SendSMS();
- return 0;
- }
- //删除记录
- void CSendMsgLogDlg::OnBnClickedDellogBtn()
- {
- // TODO: 在此添加控件通知处理程序代码
- CString strTableName = _T("sendreg");
- int nCount = m_MsgLogList.GetItemCount();
- for(int i = nCount-1; i >= 0; i--)
- {
- if( m_MsgLogList.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
- {
- CString strLogID = _T("");
- strLogID = _T("autoid=") + m_MsgLogList.GetItemText(i, 8);
- if(CDataManager::GetInstance()->Delete(strTableName, strLogID) == -1)
- {
- MessageBox(_T("删除失败"));
- continue;
- }
- m_MsgLogList.DeleteItem(i);
- }
- }
- UpdateData(FALSE);
- }
|