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

📄 mydatabase.cpp

📁 关于联通的一个统一定制程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
						pPI->szParam1=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"p2");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						pPI->szParam2=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"channel");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						pPI->nChannel=(int)var.lVal;
					var=pRs->GetCollect(L"sedflag");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						pPI->nSedFlag=(int)var.lVal;
				//	pPI->nType=(int)(long)pRs->GetCollect(L"type");
				//	pPI->szName=(LPTSTR)_bstr_t(pRs->GetCollect(L"name"));
				//	pPI->szSQL=(LPTSTR)_bstr_t(pRs->GetCollect(L"sql"));
				//	pPI->szPushType=(LPTSTR)_bstr_t(pRs->GetCollect(L"pushtype"));
				//	pPI->szTime1=(LPTSTR)_bstr_t(pRs->GetCollect(L"t1"));
				//	pPI->szTime2=(LPTSTR)_bstr_t(pRs->GetCollect(L"t2"));
				//	pPI->szParam1=(LPTSTR)_bstr_t(pRs->GetCollect(L"p1"));
				//	pPI->szParam2=(LPTSTR)_bstr_t(pRs->GetCollect(L"p2"));
				//	pPI->nChannel=(int)(long)pRs->GetCollect(L"channel");
				//	pPI->nSedFlag=(int)(long)pRs->GetCollect(L"sedflag");
					break;
				case 8: // MISC信息
					{
					MISCMSG mm;
					var=pRs->GetCollect(L"feetype");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						mm.szFeeType=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"subid");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						mm.szSubID=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"content");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						mm.szContent=(LPTSTR)_bstr_t(var);
				//	mm.szFeeType=(LPTSTR)_bstr_t(pRs->GetCollect(L"feetype"));
				//	mm.szSubID=(LPTSTR)_bstr_t(pRs->GetCollect(L"subid"));
				//	mm.szContent=(LPTSTR)_bstr_t(pRs->GetCollect(L"content"));
					pList->push_back(mm);
					}
					break;
				case 1: // 返回语
					{
					OUTPUTMSG msg;
					var=pRs->GetCollect(L"type");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						msg.nType=var.lVal;
					var=pRs->GetCollect(L"feecode");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						msg.szFeeCode=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"feetype");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						msg.szFeeType=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"content");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						msg.szMsg=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"sendno");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						msg.szSendNo=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"subid");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						msg.szSubID=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"msgtype");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						msg.nMsgType=var.lVal;
				//	msg.nType=(int)(long)pRs->GetCollect(L"type");
				//	msg.szFeeCode=(LPTSTR)_bstr_t(pRs->GetCollect(L"feecode"));
				//	msg.szFeeType=(LPTSTR)_bstr_t(pRs->GetCollect(L"feetype"));
				//	msg.szMsg=(LPTSTR)_bstr_t(pRs->GetCollect(L"content"));
				//	msg.szSendNo=(LPTSTR)_bstr_t(pRs->GetCollect(L"sendno"));
				//	msg.szSubID=(LPTSTR)_bstr_t(pRs->GetCollect(L"subid"));
					pMsgList->push_back(msg);
					}
					break;
				case -3: // 转发信息
					var=pRs->GetCollect(L"ip");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						pSI->szIP=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"port");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						pSI->nPort=var.lVal;
				//	pSI->szIP=(LPTSTR)_bstr_t(pRs->GetCollect(L"ip"));
				//	pSI->nPort=(int)(long)pRs->GetCollect(L"port");
					if (pRs->GetState()==adStateOpen)
						pRs->Close();
					return -3;
					break;
				case 2: // 转发信息
					var=pRs->GetCollect(L"serviceip");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						pSI->szIP=(LPTSTR)_bstr_t(var);
					var=pRs->GetCollect(L"serviceport");
					if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
						pSI->nPort=var.lVal;
				//	pSI->szIP=(LPTSTR)_bstr_t(pRs->GetCollect(L"serviceip"));
				//	pSI->nPort=(int)(long)pRs->GetCollect(L"serviceport");
					break;
				default:
					return nRec;
					break;
				}
				pRs->MoveNext();
			}

			long lRec=0;
			pRs=pRs->NextRecordset((VARIANT*)lRec);
		}
	}
	catch (_com_error& e)
	{
		m_bOpenned=FALSE;
		theData.WriteLog((LPTSTR)e.Description(), "sp_custom_getinfo");
		return -2;
	}
	catch (...)
	{
		theData.WriteLog("Unknown error occured", "sp_custom_getinfo");
		return -2;
	}

	return 0;
}
BOOL CMyDatabase::IsUnicomPhone(LPCTSTR pszMobile)
{
	bool bRet=true;
	if (!m_bOpenned)
	{
		CloseDB();
		OpenDB();		
	}
	
	// 从数据库中提取用户	
	try
	{	
		CString strSQL,strTemp;
		_variant_t vV;
		_RecordsetPtr pRsd=NULL;		
		
		_CommandPtr pCmd=NULL;
		TESTHR(pCmd.CreateInstance(__uuidof(Command)));
		pCmd->ActiveConnection=m_pConn;
		pCmd->CommandType = adCmdStoredProc;
		pCmd->CommandText = L"sp_8000_Unicom";
		pCmd->Parameters->Refresh();
		pCmd->Parameters->GetItem(1l)->PutValue(pszMobile);
		pCmd->Execute(NULL, NULL, adCmdStoredProc);
		int nRet=(int)(long)pCmd->Parameters->GetItem(0l)->GetValue();
		if (nRet==0)
			return TRUE;
	}
	catch (_com_error& e)
	{
		CString strLog;

		m_bOpenned=FALSE;
		strLog.Format("Failed to sp_8000_Unicom with %s, Description:%s",pszMobile,(LPTSTR)e.Description());
		theData.WriteLog(strLog,"-U");
	}
	catch(...)
	{
		CString strLog;

		m_bOpenned=FALSE;
		strLog.Format("Failed call stored procedure sp_8000_Unicom %s with unknown error",pszMobile);
		theData.WriteLog(strLog,"-U");
	}

	return FALSE;
}

int CMyDatabase::CancelAll(LPCTSTR pszMobile,LPOUTPUTMSGLIST pList)
{
	// 返回用户定制列表
	CString strList;
	vector<SUBSCRIBEITEM> items;
	vector<SUBSCRIBEITEM>::iterator it;
	CString stTemp="00000";
	int iRet0=GetUserCustomList(pszMobile,strList,stTemp);
	switch(iRet0)
	{
	case 0:
		if(C0000Thread::ParseSubscribeItem(strList,items)>0)
		{
			for(it=items.begin();it!=items.end();it++)
			{
				int r=CancelOneSubscribeByCode(pszMobile, (*it).pszPushType, (*it).lCustomNo,(*it).pszColName,(*it).pszTypeCode,(*it).lType,pList);
				if(r==-3)
					return -8 ;
				if(r==-4)
					return -7 ;
				if (0!=r)
					return -999;
			}
		}
		else
			return -6;
		break;
	case -7:
		return -7;
	case -8:
		return -8;
/*	default:
		return -10;*/
	default:
		return -999;
	}

	return 0;
}
int CMyDatabase::GetUserCustomList(LPCTSTR pszMobile, CString &strList,CString &strMsg)
{
	// Added by Phips Xue(pxue@gwcom.com.cn) Jul.24 2001
	// To delete specified customization for a specified 
	// mobile user.
	// return TRUE if succeed and FALSE if failed.
	_CommandPtr pCommand=NULL;	
	_variant_t varNull,vV;
	int iRet=-1;

	varNull.vt=VT_NULL;
	if (!m_bOpenned)
	{
		CloseDB();
		OpenDB();		
	}
	try{		
		TESTHR(pCommand.CreateInstance(__uuidof(Command)));
		pCommand->ActiveConnection=m_pConn;
		pCommand->CommandType=adCmdStoredProc;
		pCommand->CommandTimeout=60;
		pCommand->CommandText=L"sp_custom_search_all_uni";
		pCommand->Parameters->Refresh();
		pCommand->Parameters->GetItem(1l)->PutValue(_bstr_t(pszMobile));				
		pCommand->Parameters->GetItem(3l)->PutValue(_bstr_t(strMsg));				
		pCommand->Parameters->GetItem(2l)->PutValue(varNull);				
		pCommand->Parameters->GetItem(2l)->PutDirection(adParamOutput);
		pCommand->Execute(NULL, NULL,adExecuteNoRecords);
		vV=pCommand->Parameters->GetItem(0l)->GetValue();
		vV.ChangeType(VT_INT);
		iRet=vV.intVal;
		if(iRet==0||iRet==1)
		{
			vV=pCommand->Parameters->GetItem(2l)->GetValue();
			vV.ChangeType(VT_BSTR);
			strList=vV.bstrVal;		
			vV=pCommand->Parameters->GetItem(3l)->GetValue();
			vV.ChangeType(VT_BSTR);
			strMsg=vV.bstrVal;		
		}	
		
		return iRet;
	}catch(_com_error& e)
	{
		CString strLog;
		strLog.Format("GetUserCustomList(%s)失败!ERROR=%s", pszMobile, (LPTSTR)e.Description());
		theData.WriteLog(strLog);

 		return -999;
	}catch(...)
	{
		CString strLog;
		strLog.Format("GetUserCustomList(%s)失败!ERROR=未知",pszMobile);
		theData.WriteLog(strLog);

 		return -999;
	}	
}
// 使用sp_usercustom_delete_asid退定老产品
int CMyDatabase::CancelOneSubscribeBy_USP(LPCTSTR pszMobile,LPCTSTR pszPushType,ULONG lCustomNo)
{
	_CommandPtr pCommand=NULL;	
	_variant_t varNull,vV;
	int iRet=-1;
	varNull.vt=VT_NULL;
	if(!m_bOpenned)
	{
		CloseDB();
		OpenDB();
	}
	try{		
		TESTHR(pCommand.CreateInstance(__uuidof(Command)));
		pCommand->ActiveConnection=m_pConn;
		pCommand->CommandType=adCmdStoredProc;
		pCommand->CommandText=L"sp_usercustom_delete_asid";
		pCommand->Parameters->Refresh();
		pCommand->Parameters->GetItem(1l)->PutValue(_bstr_t(pszPushType));				
		pCommand->Parameters->GetItem(2l)->PutValue((long)lCustomNo);				
		pCommand->Parameters->GetItem(3l)->PutValue(7L);						
		pCommand->Parameters->GetItem(4l)->PutValue(varNull);						
		pCommand->Execute(NULL, NULL,adExecuteNoRecords);
		vV=pCommand->Parameters->GetItem(0l)->GetValue();
		vV.ChangeType(VT_INT);
		iRet=vV.intVal;			
		
		return iRet;
	}catch(_com_error& e)
	{
		CString strTemp;
		strTemp.Format("CancelOneSubscribeByCode(%s)失败!ERROR=%s", pszMobile, (LPTSTR)e.Description());
		theData.WriteLog(strTemp);

 		return -999;
	}catch(...)
	{
		CString strTemp;
		strTemp.Format("CancelOneSubscribeByCode(%s)失败!ERROR=未知",pszMobile);
		theData.WriteLog(strTemp);
 		return -999;
	}	
}

// 返回值:
// -999 失败
// 0    成功
// -3   已注销
// -4   用户不存在
int CMyDatabase::CancelOneSubscribeByCode(LPCTSTR pszMobile,LPCTSTR pszPushType,ULONG lCustomNo,LPCTSTR pszColName,LPCTSTR pszTypeCode,ULONG lType,LPOUTPUTMSGLIST pList)
{
	// search the 0000Convert Table
	PRODUCTINFO pPI;			// product info
	OUTPUTMSGLIST mmlist;		// misc msg
	list<OUTPUTMSG>::iterator mm;		
	// 根据栏目名称转换成对应的Cmd(00000cmdTrans)
	int ret =Get00000ProductInfo(pszMobile,pszPushType,pszTypeCode,lType,&pPI,&mmlist);
	int ret2;
	if(ret==0)//转换成功
	{
		if(pPI.nType==1)//老产品,可以统一用sp_usercustom_delete_asid完成退定			
		{
			ret2 = CancelOneSubscribeBy_USP(pszMobile,pszPushType,lCustomNo) ;
			if(ret2==-3)
				ret2=-4;//不存在
			else if(ret2!=0)
				ret2 = -999 ; 
			else
				;

		}
		else 
		{
			_ConnectionPtr pConn;
			if (!OpenDB(pPI.szSQL, pConn))
				ret2=-999;
			else
			{
				ret2 = DeleteCustom(pConn, pszMobile,pPI.szSQL,(long)7) ;
				if(ret2!=-3&&ret2!=-4&&ret2!=0)
					ret2 = -999 ;
				CloseDB(pConn);
			}
		}
		if(ret2==0)	
		{
			// 退定成功,复制mmlist到plist
			for (mm=mmlist.begin(); mm!=mmlist.end(); ++mm)
			{
				pList->push_back((*mm));					
			}
		}	
		
	}
	else if(ret == -2|| ret==-4)
	{
		ret2 = CancelOneSubscribeBy_USP(pszMobile,pszPushType,lCustomNo) ;
		if(ret2==-3)
			ret2=-4;//不存在
		else if(ret2!=0)
			ret2 = -999 ;
		else
			;
	}
	else 
	{		
		return -999;
	}	
	return ret2 ;
}

int CMyDatabase::IsValidCity(CString& szCity)
{
	if (!m_bOpenned)
	{
		CloseDB();
		if (!OpenDB())
			return -2;
	}
	int nRet=0;
	CString szLog;
	try
	{
		CString szCmd;
		_CommandPtr pCmd;
		TESTHR(pCmd.CreateInstance(__uuidof(Command)));
		pCmd->ActiveConnection=m_pConn;
		pCmd->CommandText=L"sp_custom_isvalidTQcity";
		pCmd->CommandType=adCmdStoredProc;
		pCmd->Parameters->Refresh();
		pCmd->Parameters->GetItem(1l)->PutValue(_bstr_t(szCity));
		pCmd->Execute(NULL, NULL, adCmdStoredProc);
		nRet = (int)(long)pCmd->Parameters->GetItem(0l)->GetValue();
		if (nRet==0)
		{
			_variant_t var=pCmd->Parameters->GetItem(1l)->GetValue();
			if (var.vt!=VT_NULL&&var.vt!=VT_EMPTY)
				szCity=(LPTSTR)_bstr_t(var);
		}
	}
	catch (_com_error& e)
	{
		m_bOpenned=FALSE;
		szLog.Format("判断城市区号失败!ERROR=%s", (LPTSTR)e.Description());
		theData.WriteLog(szLog, "-db");
		return -2;
	}
	catch (...)
	{
		szLog.Format("判断城市区号失败!ERROR=%s", "未知错误");
		theData.WriteLog(szLog, "-db");
		return -2;
	}

	return nRet;
}

bool CMyDatabase::Is1860Allowed(LPCTSTR pszMobile)
{
	_CommandPtr pCommand=NULL;	
	_variant_t varNull,vV;
	int iRet=-1;
	varNull.vt=VT_NULL;
	if(!m_bOpenned)
	{
		CloseDB();
		OpenDB();
	}
	try{		
		TESTHR(pCommand.CreateInstance(__uuidof(Command)));
		pCommand->ActiveConnection=m_pConn;
		pCommand->CommandType=adCmdStoredProc;
		pCommand->CommandText=L"sp_custom_isprivilege";
		pCommand->Parameters->Refresh();
		pCommand->Parameters->GetItem(1l)->PutValue(_bstr_t(pszMobile));
		pCommand->Execute(NULL, NULL,adExecuteNoRecords);
		vV=pCommand->Parameters->GetItem(0l)->GetValue();
		vV.ChangeType(VT_INT);
		iRet=vV.intVal;
		if (iRet==1)
			return true;
	}catch(_com_error& e)
	{
		CString strTemp;
		strTemp.Format("sp_custom_isprivilege(%s)失败!ERROR=%s", pszMobile, (LPTSTR)e.Description());
		theData.WriteLog(strTemp);

 		return false;
	}catch(...)
	{
		CString strTemp;
		strTemp.Format("sp_custom_isprivilege(%s)失败!ERROR=未知",pszMobile);
		theData.WriteLog(strTemp);
 		return false;
	}
	return false;

}

⌨️ 快捷键说明

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