SmsCenter/SendThread.h
2025-01-03 16:47:25 +08:00

199 lines
5.8 KiB
C++

#if !defined(AFX_SENDTHREAD_H__25693B28_4ADE_405D_A48D_E71E7850D4FD__INCLUDED_)
#define AFX_SENDTHREAD_H__25693B28_4ADE_405D_A48D_E71E7850D4FD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SendThread.h : header file
//
typedef struct _SmsSendData
{
long lStatus; //发送状态,0-提交成功,1-提交失败,2-用户余额不足,3-企业余额不足,4-企业已过期
long lSendID; //发送返回的ID
long lCorpID; //发送的企业ID
long lUserID; //发送的用户ID
TCHAR szGroupID[32];
long lReSendCount;
TCHAR szMsgID[32];
TCHAR szSender[32];
TCHAR szSendNum[32];
TCHAR szRecver[32];
TCHAR szRecvNum[32];
long lRecvNumType;
BOOL bStatusReport; //是否需要状态报告
TCHAR szRecvStatus[32]; //接收状态
TCHAR szMsg[512]; //短信内容
long lMsgType;
long lSendRet; //SubmitAExEx的返回值
long lSendFCS; //SubmitAExEx fcs的返回值
SYSTEMTIME tTimer; //定时时间
SYSTEMTIME tOvrTime; //超时时间
SYSTEMTIME tSendTime;
SYSTEMTIME tSubTime;
}SmsSendData;
typedef struct _SubmitData_Mobile
{
TCHAR szName[32];
TCHAR szMobile[32];
CString * pMsg;
}SubmitData_Mobile;
#define SubmitData_Mobile_Max 100
typedef struct _SubmitData
{
long lStatus; //发送状态,0-提交成功,1-提交失败,2-用户余额不足,3-企业余额不足,4-企业已过期
long lItem; //保存Item
long lItemID; //保存在smsitem里的ID
long lSendID; //发送返回的ID
long lCorpID; //发送的企业ID
long lUserID; //发送的用户ID
TCHAR szSendNum[32];//发送号码
TCHAR szName[32]; //目标姓名
TCHAR szMobile[32]; //目标号码
TCHAR szMsg[2048]; //短信内容
long lMobileCount; //目标号码数量,如果数量小于=0,则以szName,szMobile为准
SubmitData_Mobile Mobile[SubmitData_Mobile_Max];//最多100个号码
long lKFCount; //扣费数量
long lPrority; //优先级
SYSTEMTIME tTimer; //定时时间
SYSTEMTIME tOvrTime; //超时时间
}SubmitData;
typedef struct _UpSmsS
{
long lCorpID;
long lUserID;
long lType;
LPVOID pDlg; //主窗口
TCHAR szSendNum[32];
TCHAR szRecvNum[32];
TCHAR szMsg[256]; //短信内容
TCHAR szUrl[128]; //短信内容
TCHAR szAddNum[32];
SYSTEMTIME tSendTime;
long lSendID;
long lStatus;
TCHAR szAddStatus[32];
}UpSmsS;
typedef struct _MmsRecv
{
long lSendID; //发送返回的ID
long lCorpID; //发送的企业ID
long lUserID; //发送的用户ID
long lMmsFileID;
long lmmSize;
TCHAR szTitle[256];
TCHAR szSendNum[32];
TCHAR szRecvNum[32];
long lRecvNumType;
SYSTEMTIME tSendTime;
}MmsRecv;
///////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// CSendThread thread
#define TH_SEND WM_USER + 400 //发送短消息
#define TH_RECV WM_USER + 401 //发送短消息
#define SEND_SMS_MAXRESEND 3 //发送短信时,最大重试次数
class CSmsCenterDlg;
class CSendThread : public CWinThread
{
public:
typedef struct _BBS_Insert
{
long BBSID;
long SCorpID;
long SUserID;
TCHAR SCorpName[128];
TCHAR SUserName[128];
long RCorpID;
long RUserID;
long RAgentID;
long Status;
TCHAR Type[128];
TCHAR Name[128];
TCHAR Tel[128];
TCHAR Email[128];
TCHAR BZ[512];
long BBSType;
long CorpID;
long UserID;
TCHAR CM[128];
long AgentID;
long AgentYJ;
SYSTEMTIME expTime;
}BBS_Insert;
public:
BOOL m_bSend; //现在是否在发送短信中
CAdoConnection m_adoConnection;
CAdoRecordSet m_AdoRS;
CAdoRecordSet m_AdoRS1;
CAdoRecordSet m_AdoRS2;
CSmsCenterDlg * m_pSMSDlg;
long m_lSendCount;
DECLARE_DYNCREATE(CSendThread)
public:
CSendThread(); // protected constructor used by dynamic creation
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSendThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
//}}AFX_VIRTUAL
// Implementation
public:
static BOOL Recv_QQT(long lCorpID,long lUserID,long lRtx_GroupTaskID, CAdoRecordSet *pAdoRS, CAdoRecordSet *pAdoRS2, CSmsCenterDlg *pSMSDlg);
static BOOL PushRecvSmsToOtherCenter(HANDLE & hPipe,SmsSendData data, CString strProv,CString strCity);
static BOOL PushRecvSmsToOtherCenter(long lType,CAdoRecordSet *pAdoRS, SmsSendData data, CString strProv, CString strCity);
static BOOL Bbs_Insert_Sys(CAdoRecordSet *pAdoRS,CString strBZ, COleDateTime * pExpTime=NULL);
static BOOL Bbs_Insert(CAdoRecordSet *pAdoRS,BBS_Insert & bbs);
static BOOL ProcessUp(CSmsCenterDlg * pSMSDlg,DWORD dwType,long lMobileType,SmsSendData sms , CAdoRecordSet * pAdoRS, CAdoRecordSet * pAdoRS2,CAdoRecordSet * pAdoRS3,BOOL bReportNumber,long lCorpID,long lUserID,long lTDMode,CString strSName);
static BOOL Recv_Mms(MmsRecv mms,CAdoRecordSet * pAdoRS,CAdoRecordSet * pAdoRS2,CSmsCenterDlg * pSMSDlg);
//static BOOL SetSmsAddOne(CAdoRecordSet *pAdoRS,long lSendID,long lType=0);
//static BOOL SetSmsAddOne(CAdoRecordSet * pAdoRS , long lCorpID , long lUserID , long lKF , const TCHAR * pRecvStatus,long lSendRet,BOOL bAdc );
static DWORD WINAPI Recv_Sms_UpSms(LPVOID pParam);
static BOOL SplitNum( TCHAR * pCorp , TCHAR * pMan );
static long SubmitSms(SubmitData & SendData,CAdoRecordSet * pAdoRS,CAdoRecordSet * pAdoRS2,CSmsCenterDlg * pSMSDlg,long lMobileType,long lSmsType,long lSmsKF=0);
static BOOL Recv_Sms(HANDLE & hPipe,SmsSendData sms,CAdoRecordSet * pAdoRS,CAdoRecordSet * pAdoRS2,CAdoRecordSet * pAdoRS3,CSmsCenterDlg * pSMSDlg);
virtual ~CSendThread();
protected:
// Generated message map functions
//{{AFX_MSG(CSendThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_SENDTHREAD_H__25693B28_4ADE_405D_A48D_E71E7850D4FD__INCLUDED_)