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

📄 db_zhenzhou.cpp

📁 电信的97接口程序,用于把话单入库。这里是采用FTP方式采集话单
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	return 0;
}

void printPublicInfo(UserInterface uiPublic)
{
	if(CGlobal::Instance()->m_debugLevel < 5)	return;

	PString sMsg;
	sMsg = "------UserAccount Information------";
	sMsg = sMsg + "\n		serviceId[18]	=" + uiPublic.serviceId;
	sMsg = sMsg + "\n		userGroup[4]	=" + uiPublic.userGroup;
	sMsg = sMsg + "\n		areaNo[6]	=" + uiPublic.areaNo;
	sMsg = sMsg + "\n		teleNumber[13]	=" + uiPublic.teleNumber;
	sMsg = sMsg + "\n		oldTeleNum[13]	=" + uiPublic.oldTeleNum;

	char strTmp[8];
	sprintf(strTmp, "%d", uiPublic.operateType);
	sMsg = sMsg + "\n		operateType	=" + strTmp;

	sMsg = sMsg + "\n		genTime[20]	=" + uiPublic.genTime;
	sMsg = sMsg + "\n		sendTime[20]	=" + uiPublic.sendTime;
	sMsg = sMsg + "\n		backTime[20]	=" + uiPublic.backTime;
	sMsg = sMsg + "\n		endTime[20]	=" + uiPublic.endTime;
	sMsg = sMsg + "\n		userType[2]	=" + uiPublic.userType;
	sMsg = sMsg + "\n		password[17]	=" + uiPublic.password;

	sprintf(strTmp, "%d", uiPublic.flag);
	sMsg = sMsg + "\n		flag		=" + strTmp;

	sprintf(strTmp, "%d", uiPublic.remainTime);
	sMsg = sMsg + "\n		remainTime	=" + strTmp;

	sMsg = sMsg + "\n		aCLICP[33]	=" + uiPublic.aCLICP;
	sMsg = sMsg + "\n		aCLContent[33]	=" + uiPublic.aCLContent;
	sprintf(strTmp, "%d", uiPublic.sendRecv);
	sMsg = sMsg + "\n		sendRecv	=" + PString(strTmp);
	sMsg = sMsg + "\n		addString[256]	=" + uiPublic.addString;

	RTRACE(5, "\n" << sMsg);

	return;

}

int UpdateAAA(COdbcFunc* odbc, UserInterface & uiPublic, UserInterface_ZZ & ui)
{
	void printPublicInfo(UserInterface);
	int SaveDB(UserInterface *);

	printPublicInfo(uiPublic);

	int iFlag = SaveDB(&uiPublic);
	/*char now[21];
	NowDateTime(now);*/
	char sqlcmdTmp[SQL_SIZE], sqlcmd[SQL_SIZE];

	strcpy(sqlcmdTmp, "update JK_Sheet_Control set CheckFlag = '%s',EchoInfo = '%s', ");
	strcat(sqlcmdTmp, "ChangeTime = sysdate, FinishTime = sysdate ");
	strcat(sqlcmdTmp, "where CheckFlag = 'B' and SerialNo = '%s' and PortType = '%s' and FlowNo = '%s' ");

	//iFlag:
	//  0: success
	// -1: Operate database failed
	// -2: OperateType not exists
	// -3: UserType not exists
	// -4: Change Telephone number from one to the other. But old telephone number not exists
	// -5: Change Telephone number from one to the other. But new telephone number has been used.
	// -6: User Group not exist
	// -7: User exists and status is 1(Normal).
	// -8: End time is illegal (the formation of endtime is 'YYYY-MM-DD HH:MI:SS')

	// -9: Can not rollback operation. Bacause time expire.
	// -10: User not exist when deleting the user.
	// -11: User's status is wrong when deleting the user.
	// -12: The error status for rollback changing user number.
	// -100 Maybe the AAA database disconnect

	switch(iFlag)
	{	
		case 0:	// operate database successfully
		{
			RTRACE(3, "Operate AAA database successfully!");							
			sprintf(sqlcmd, sqlcmdTmp, "C", "Success", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "C");
			strcpy(ui.Bz, "Success");
			break;
		}	
		case -1: // operate database failed. Error in database
		{
			RTRACE(3, "operate database failed!");
			sprintf(sqlcmd, sqlcmdTmp, "E", "Operate database failed", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "E");
			strcpy(ui.Bz, "Operate database failed!");
			break;
		}					
		case -2: // operate type not exists
		{
			RTRACE(3, "operate type not exists!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "operate type not exists!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "operate type not exists!");
			break;
		}					
		case -3: // UserType not exists
		{
			RTRACE(3, "UserType not exists!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "UserType not exists!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "UserType not exists!");
			break;
		}
		case -4: // Change Telephone number, But old telephone number not exists
		{
			RTRACE(3, "Change Telephone number, But old telephone number not exists!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "Change teleNo,but old telNo not exists! ", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "Change teleNo,but old telNo not exists!");
			break;
		}
		case -5: // Change Telephone number, But new telephone number already exists
		{
			RTRACE(3, "Change Telephone number, But new telephone number already exists!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "Change teleNo,but new telNo already exists! ", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "Change teleNo,but new telNo already exists!");
			break;
		}
		case -6: // Usergroup not exists
		{
			RTRACE(3, "Usergroup not exists!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "Usergroup not exists!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "Usergroup not exists!");
			break;
		}
		case -7: // NewOpen accounts,but account is already exists
		{
			RTRACE(3, "NewOpen accounts,but account is already exists!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "NewOpen accounts,but account is already exists!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "NewOpen accounts,but account is already exists!");
			break;
		}
		case -8: // Endtime is illegal
		{
			RTRACE(3, "Endtime is illegal!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "Endtime is illegal!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "Endtime is illegal!");
			break;
		}
		case -10: //User not exist when deleting the user
		{
			RTRACE(3, "User not exist when deleting the user!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "User not exist when deleting the user!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "User not exist when deleting the user!");
			break;
		}
		case -11: //User's status is wrong when deleting the user
		{
			RTRACE(3, "User status is wrong when deleting the user!");
			sprintf(sqlcmd, sqlcmdTmp, "D", "User status is wrong when deleting the user!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "D");
			strcpy(ui.Bz, "User status is wrong when deleting the user!");
			break;
		}
		case -100: //Maybe the AAA database disconnect
		{
			RTRACE(3, "Maybe the AAA database disconnect!");
			sprintf(sqlcmd, sqlcmdTmp, "E", "Maybe the AAA database disconnect!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "E");
			strcpy(ui.Bz, "Maybe the AAA database disconnect!");
			break;
		}
		default:
		{
			RTRACE(3, "Unkonwn error!");
			sprintf(sqlcmd, sqlcmdTmp, "E", "Unkonwn error!", ui.SerialNo, ui.PortType, ui.FlowNo);
			strcpy(ui.CheckFlag, "E");
			strcpy(ui.Bz, "Unkonwn error!");
			break;
		}
	}

	if (UpdateJK_Sheet_Control(odbc, sqlcmd, ui, 3) != 0)
	{
		if (iFlag == 0 )
			RTRACE(1, "******Warning: AAA process succeed, but update JK_Sheet_Control or Insert JK_Sheet_Log failed!******"
				<< "SerialNo=" << ui.SerialNo << " PortType=" << ui.PortType << " PhoneNo=" << ui.PhoneNo);
		else
			RTRACE(1, "******Warning: Update JK_Sheet_Control  or Insert JK_Sheet_Log failed!******"
				<< "SerialNo=" << ui.SerialNo << " PortType=" << ui.PortType << " PhoneNo=" << ui.PhoneNo);
	}

	return iFlag;
}

int UpdateJK_Sheet_Control(COdbcFunc* odbc, char* sqlcmd, UserInterface_ZZ ui, int iHandleOrder)
{
	RTRACE(5, sqlcmd);
	odbc->AddResult(iHandleOrder);
	odbc->AddResult(iHandleOrder + 1);

	int iRet = odbc->ExecSQL(sqlcmd, iHandleOrder); 

	if (iRet != 0)
	{
		while(odbc->Next(iHandleOrder) == 0);
		odbc->ExecSQL("rollback", iHandleOrder);
		odbc->FreeResult(iHandleOrder);
		return iRet;
	}
	while(odbc->Next(iHandleOrder) == 0);

	if(iRet == 0)
	{
		iRet = InsertJK_Sheet_Log(odbc, ui, iHandleOrder+1);
		while(odbc->Next(iHandleOrder+1) == 0);
	}

	if (iRet != 0)
	{
		odbc->ExecSQL("rollback", iHandleOrder+1);
		while(odbc->Next(iHandleOrder+1) == 0);
		odbc->FreeResult(iHandleOrder+1);
		return iRet;
	}
	else
	{
		iRet = odbc->ExecSQL("commit", iHandleOrder+1);
		if (iRet)
			RTRACE(1, "commit failed! iRet=" << iRet);
		while(odbc->Next(iHandleOrder+1) == 0);
	}

	odbc->CancelResult(iHandleOrder + 1); 
	odbc->FreeResult(iHandleOrder + 1);
	odbc->CancelResult(iHandleOrder); 
	odbc->FreeResult(iHandleOrder);
	return iRet;
}

int InsertJK_Sheet_Log(COdbcFunc* odbc, UserInterface_ZZ ui, int iHandleOrder)
{
	char sqlcmd[SQL_SIZE], sqlcmdTmp[SQL_SIZE];
	
	strcpy(sqlcmdTmp, "insert into JK_Sheet_Log(PortType, AreaNo, SerialNo, FlowNo, CheckFlag, ChangeTime, Bz) ");
	strcat(sqlcmdTmp, "values('%s', '%s', '%s', '%s', '%s', sysdate, '%s' )");
	sprintf(sqlcmd, sqlcmdTmp, ui.PortType, ui.AreaNo, ui.SerialNo, ui.FlowNo, ui.CheckFlag, ui.Bz);
	RTRACE(5, sqlcmd);

	//odbc->AddResult(iHandleOrder);
	int iRet = odbc->ExecSQL(sqlcmd, iHandleOrder); 
	odbc->AbortQuery(iHandleOrder);

	return iRet;
}

//int SaveDB(PStringArray line);
/*
int HandleFtp()
{
	RTRACE(2, "Begin ftp loop");
	if ( CGlobal::Instance()->m_isShutdown == 1 )
		return -1;

	PFTPClient ftp;
	int j = 0;
	
//	RTRACE(5, "FtpSrv NUMBER:" << CGlobal::Instance()->m_ftpNum);
	for(int i=0;i<CGlobal::Instance()->m_oradbNum;i++)
	{
		try
		{
			if ( ftp.Connect(PIPSocket::Address(CGlobal::Instance()->m_negGkList[i].m_ip), 
				CGlobal::Instance()->m_negGkList[i].m_port) == false )
			{
				RTRACE(2, "Connect fail");
				continue;
				//return 0;
			}

			if ( ftp.LogIn(CGlobal::Instance()->m_username[i], CGlobal::Instance()->m_password[i]) == false )
			{
				RTRACE(2, "Login fail");
				continue;
				//return 0;
			}

			PStringArray fileArray = ftp.GetDirectoryNames(PFTP::ShortNames);	//, PFTP::NormalPort);
			RTRACE(5, "Files: " << fileArray);

			// treat those files.
			for ( j=0; j<fileArray.GetSize(); j++) {
//				begin to get every file, and save it to local disk
//				CGlobal::Instance()->m_serviceType = 700;
//				CGlobal::Instance()->GetServiceTypeFromFileName(fileArray[j]); 
//				RTRACE(5, fileArray[j] << " FileType:" << CGlobal::Instance()->m_serviceType);
				PTCPSocket * pSock = ftp.GetFile(fileArray[j]);		//, PFTP::NormalPort);
				if ( pSock == NULL ) 
				{
					RTRACE(2, "Read file: " << fileArray[j] << " fail!");
					continue;
				}

				PString str;
				int count = 0;

				while(pSock->Read(str.GetPointer(count+1000)+count, 1000))
					count += pSock->GetLastReadCount();
				str.SetSize(count+1);

				delete pSock;
				RTRACE(5, "Response:" << ftp.ReadResponse());

				PFile save;
				PString pfileName;
				pfileName = CGlobal::Instance()->m_localDir;
				pfileName += "\\";
				pfileName += fileArray[j];
				RTRACE(5, pfileName);
				save.Open(pfileName, PFile::WriteOnly);
				save.WriteString(str);
				save.Close();

				RTRACE(4, "Read size:" << count+1);
				RTRACE(6, ", context:\n" << str);

				if ( SaveDB(str.Lines()) == 0 )
				{
					RTRACE(5, "Get cdr success");

					// delete this file.
					if ( ftp.ExecuteCommand(PFTP::DELE, fileArray[j])/100 == 2 ) 
					{
						RTRACE(5, "Del success: " << fileArray[j]);
					}
					else 
					{
						RTRACE(2, "Del fail: " << fileArray[j]);
					}
				}
			}
			ftp.Close();
		}
		catch(...)
		{
			RTRACE(2, "Connect to Ftp Server " << PIPSocket::Address(CGlobal::Instance()->m_negGkList[i].m_ip) << "error");
		}
	}
	return 0;
}
*/

⌨️ 快捷键说明

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