⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chkqueue.cpp

📁 小灵通(网通)短信接口程序
💻 CPP
字号:
#include "StdAfx.h"
#include "smset.h"
#include "SendSM.h"

extern char szIcpNbr[];	// 移动特服号
extern char szCorp[];	// 智响通讯
extern char szTel[];	// 公司电话
extern char szWeb[];	// 公司主页
extern char szCmccTest[];// CMCC信息
extern char szCmdSet[];	// 当用户发送无效命令字时提示

int CheckMonthTable(CMyDatabase& db)
{
	CString strError;

	if (MakeSureDBConnected(db, strError)){
		CMyDataSet ds(&db);
		ds.Open("SELECT TOP 100 ID, MOBILE, SERVICEID, FEECODE, MESSAGE, STATUS, FEETYPE, SRCID, FEEMOBILE FROM SM_MONTH WHERE MOBILE LIKE '0%' AND STATUS BETWEEN -2 AND 0 ORDER BY STATUS DESC, INTIME ASC");
		if (ds.m_nSQLCode == -1){
			printf("\nSELECT Failed - ChkQueue!\nDBMS ERROR: %s\n", ds.GetSQLErrText());
			return -1;
		}
		for (int row = 0; row < ds.GetRowCount(); row++){
			long id				= ds[row][0];
			LPCSTR lpcszMobile	= ds[row][1];
			LPCSTR lpcszServiceID=ds[row][2];
			int nFeeCode		= ds[row][3];
			CString sMsg		= ds[row][4];
			int nStatus			= ds[row][5];
			int nFeeType		= ds[row][6];
			LPCSTR lpcszSrcID	= ds[row][7];
			LPCSTR lpcsFeeMobile= ds[row][8];
			int nMsgLevel		= 1;  // 信息级别(0=最低优先级,1=正常,2=紧急,3=十分紧急)
			int nErrorCode		= 0; 
			BOOL bSuccess		= FALSE;

			try {
				sMsg.Replace("#ICP", szIcpNbr);
				sMsg.Replace("#CMCCTEST", szCmccTest);
				sMsg.Replace("#CTIVR", szCorp);
				sMsg.Replace("#TEL", szTel);
				sMsg.Replace("#WEB", szWeb);
				sMsg.Replace("#CMDSET", szCmdSet);

				sMsg.Replace("\x2", "");
				sMsg.Replace("\x3", "");
				sMsg.Replace("\x4", "\r");
				sMsg.Replace("\x5", "\n");
				sMsg.Replace("\x6", " ");

				db.BeginTrans();
				if (db.ExecuteSQLFr(strError, "UPDATE SM_MONTH SET STATUS = 1 WHERE ID = %ld ", id) == -1) throw (LPCSTR)strError;
				bSuccess = SubmitSM(lpcszMobile, lpcszServiceID, lpcszSrcID, nFeeType, nFeeCode, nMsgLevel, lpcsFeeMobile, sMsg.GetLength(), sMsg.GetBuffer(sMsg.GetLength() + 1), &nErrorCode);
				sMsg.ReleaseBuffer();
				if (!bSuccess){
					//  发送失败
					nStatus --; // 原来是0则变成-1,原来是-1则为-2, ...
					if (db.ExecuteSQLFr(strError, "UPDATE SM_MONTH SET STATUS = %d, SENDTIME%d = GETDATE() WHERE ID = %ld ", nStatus, -1 * (nStatus + 1), id) == -1) throw (LPCSTR)strError;
					printf("\n%s, %d]Failed: %s\nSMG ERROR CODE: %d", lpcszMobile, nFeeCode, sMsg, nErrorCode);
				} else {
					// 发送成功
					printf("\n%s, %d]OK: %s\n", lpcszMobile, nFeeCode, sMsg);
				}
				db.CommitTrans();
			}
			catch(LPCSTR e){
				db.Rollback();
				printf("\n%s, %d]Failed: %s\nDBMS ERROR: %s\n", lpcszMobile, nFeeCode, sMsg, e);
				return -1;
			}
		}
		return 1;
	}

	printf("\nNo Database connected\n");
	
	return -1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -