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

📄 dbsmgw.cpp

📁 电信的97接口程序,用于把话单入库。这里是采用FTP方式采集话单
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			RTRACE(3, "Record for Getting Version failed");
			while ( (m_retRow = dbnextrow(m_dbproc)) != NO_MORE_ROWS )
				if ( m_retRow == FAIL )
					break;
//			dbcancel(m_dbproc);

			// Error!
			// Maybe disconnect the database early.
			DbReconnect(m_dbproc);
			return -100; 
		}
		dbresults(m_dbproc);
		dbbind(m_dbproc, 1, INTBIND, (DBINT) 0, (BYTE *)&dbTotalNum);
		while(dbnextrow(m_dbproc) != NO_MORE_ROWS)
			m_license = (int)dbTotalNum;
		dbcancel(m_dbproc);
		RTRACE(4, "The total numbers is " << m_license);
	}

	if(m_userNum == -1 || m_userNum % FREQUENCY_TIME == 0) // first, to get the users' number
	{
		strcpy(sql, "select count(*) from UserAcct ");
		RTRACE(5, "Execute sql:" << sql);
		//clear db buffer
		dbclrbuf(m_dbproc, sizeof(sql));
		dbcmd(m_dbproc, sql);
		if(dbsqlexec(m_dbproc) != SUCCEED)
		{
			RTRACE(3, "Record for Getting from UserAcct failed");
			while ( (m_retRow = dbnextrow(m_dbproc)) != NO_MORE_ROWS )
				if ( m_retRow == FAIL )
					break;
			dbcancel(m_dbproc);
			return (-1); // error! Don't have license
		}
		dbresults(m_dbproc);
		dbbind(m_dbproc, 1, INTBIND, (DBINT) 0, (BYTE *)&dbUserNum);
		while(dbnextrow(m_dbproc) != NO_MORE_ROWS)
			m_userNum = (int)dbUserNum;
		dbcancel(m_dbproc);
		RTRACE(4, "The users' Numbers is " << m_userNum);
	}

	if(m_userNum >= m_license)
	{
		RTRACE(2, "Danger!");
		RTRACE(2, "\tUser Number have reached " << m_userNum << " !");
		RTRACE(2, "\tTotal Number of AAA system is " << m_license << " !");
		RTRACE(2, "\tPlease get license number again for more users.");
		RTRACE(2, "\tThe AAA system  STOP now!");
		return -1; //failed for license number
	}
	else if(m_userNum*100/m_license >= 99)
	{
		RTRACE(2, "Danger!");
		RTRACE(2, "\tUser Number have reached " << m_userNum << " !");
		RTRACE(2, "\tTotal Number of AAA system is " << m_license << " !");
		RTRACE(2, "\tPlease get license number again for more users.");
		RTRACE(2, "\tOtherwise the AAA system will STOP!");
		return -1; //users have reached 99%.
	}
	else if(m_userNum*100/m_license >= 95)
	{
		RTRACE(2, "Warning!");
		RTRACE(2, "\tUser Number have reached " << m_userNum << " !");
		RTRACE(2, "\tTotal Number of AAA system is " << m_license << " !");
		RTRACE(2, "\tPlease get license number again for more users.");
		RTRACE(2, "\tOtherwise the AAA system will STOP!");
		return 2; //users have reached 95%
	}
	else if(m_userNum*100/m_license >= 90)
	{
		RTRACE(2, "Warning!");
		RTRACE(2, "\tUser Number have reached " << m_userNum << " !");
		RTRACE(2, "\tTotal Number of AAA system is " << m_license << " !");		
		RTRACE(2, "\tPlease get license number again for more users.");
		RTRACE(2, "\tOtherwise the AAA system will STOP!");
		return 1; //users have reached 90%
	}
	else
	{
		RTRACE(3, "\tUser Number have reached " << m_userNum << " !");
		RTRACE(3, "\tTotal Number of AAA system is " << m_license << " !");
		return 0;
	}
}

/*************************************************
*FUNC CheckGrpList
*判断集团号是否长度为6,不为6拒绝
*正确返回0,否则-14
**************************************************/
int CInterfaceContent::CheckGrpList(char * pGroupList )
{
    char * pos;
    int i = 0, iSeg = 0;
    int result = 0;

    if ( strlen(pGroupList) < 6 )
	{
		RTRACE(2, "GroupID is NULL OR GroupID is less than  " << GROUPID_LEN);
        return -14;
	}

    memset(( char *)m_groupArray, 0, sizeof(m_groupArray) );

    while ( ( pos = strstr(pGroupList, ",") ) != NULL )  //将gouplist去除逗号后放入数组中
    {
        iSeg = pos - pGroupList ;
        if ( iSeg < 6 )
        {
            RTRACE(2, "GroupID is NULL " );
            return -14;
        }
        else if ( iSeg > GROUPID_LEN )
        {
            RTRACE(2, "GroupID is too long, more than "  << GROUPID_LEN );
            return -14;
        }
        
        memcpy( (char * ) m_groupArray[i], pGroupList, iSeg );
        //memcpy( (char * ) (groupArray + i), pGroupList, iSeg );

        m_groupArray[i][GROUPID_LEN] = 0;
        pGroupList = pos + 1;

        if ( i > MAX_GROUP_NUM )
        {
            RTRACE(5, "Grouplist is too long, more than "<< MAX_GROUP_NUM );
            break;
        }
        i++;
    }

    if ( i == 0 )
    {
		if ( strlen(pGroupList) > 6 )
		{
			RTRACE(2, "GroupID is too long " );
			return -14;
		}
        memcpy((char * )(m_groupArray[i] ), pGroupList, GROUPID_LEN );
        m_groupArray[i][GROUPID_LEN] = 0;
    }
    else
    {
		if ( strlen(pGroupList) > 6 )
		{
			RTRACE(2, "GroupID is too long " );
			return -14;
		}
		else if(strlen(pGroupList)<6)
		{
			RTRACE(2, "GroupID is NULL " );
            return -14;
		}
        memcpy((char * )m_groupArray[i], pGroupList, GROUPID_LEN );
        m_groupArray[i][GROUPID_LEN] = 0;
    }

    for ( i = 0; i < MAX_GROUP_NUM; i++ )
    {
        if ( strlen(m_groupArray[i] )  != 0 && strlen(m_groupArray[i] )  != GROUPID_LEN )
        {
            result = -14;
            break;
        }
    }
    return result;
}

/*************************************************
*FUNC RemoveGrpFromGrpList
*Result in groupList
**************************************************/
int CInterfaceContent::RemoveGrpFromGrpList(char * preGroupList, const char * groupNo, char * groupList )
{
    int i = 0;


    if ( IsGrpInGrpList(preGroupList, groupNo ) == 0 )
    {
        RTRACE(5, "Remove grouplist, but preGroupList has not include the groupNo, return 0");
        return 9;
    }


    int flag = 0;
    for ( i = 0; i < MAX_GROUP_NUM; i++ )
    {
        if ( m_groupArray[i][0] != 0 )
        {
            char str[GROUPID_LEN+1] = {0};
            if ( flag == 0 )
            {
                sprintf(str, "%s", m_groupArray[i] );                
                flag = 1;
            }
            else
            {
                sprintf(str, ",%s", m_groupArray[i] );
            }
            strcat(groupList, str );
        }        
    }

    return 0;
}    

/*************************************************
*Remove GST GroupList to normal CTSI user
*0 success, -1 failed
*Add by zjl 2003-06-23
*************************************************/
int CInterfaceContent::RemoveGroupList(char * newTel )
{
    char groupList[GROUPID_LEN * MAX_GROUP_NUM + 1] = {0};

    if ( RemoveGrpFromGrpList(m_preGroupList, m_groupList, groupList) == 9 )
        return 0; //原集团列表中无对应集团号,直接返回成功


    dbfcmd(m_dbproc, "update UserAcct set GroupList='%s' "
        "where UserAccounts = '%s' ", groupList, newTel );
    if ( dbsqlexec(m_dbproc) == FAIL )
    {
        RTRACE(2, "Update UserAcct fail");
        return -1;
    }
    dbresults(m_dbproc);

    while ( (m_retRow = dbnextrow(m_dbproc)) != NO_MORE_ROWS )
        if ( m_retRow == FAIL )
            break;

    return 0;
}

/*************************************************
*Add GST GroupList to normal CTSI user
*0 success, -1 failed
*Add by zjl 2003-06-23
*************************************************/
int CInterfaceContent::AddGroupList(char * newTel )
{
    char groupList[GROUPID_LEN * MAX_GROUP_NUM + 10] = {0};

    if ( IsGrpInGrpList(m_preGroupList, m_groupList) == 1 )
        return 0; //本来就包含此组,视为增加成功
    else
    {
        memset(groupList, 0, sizeof(groupList) );
        //sprintf(groupList, "%s,%s", m_preGroupList, m_groupList );
        if ( m_preGroupList[0] == 0 )
            sprintf(groupList, "%s", m_groupList );
        else
            sprintf(groupList, "%s,%s", m_groupList, m_preGroupList );
        groupList[70] = 0;
    }

    dbfcmd(m_dbproc, "update UserAcct set GroupList='%s' "
        "where UserAccounts = '%s' ", groupList, newTel );
    if ( dbsqlexec(m_dbproc) == FAIL )
    {
        RTRACE(2, "Update UserAcct fail");
        return -1;
    }
    dbresults(m_dbproc);

    while ( (m_retRow = dbnextrow(m_dbproc)) != NO_MORE_ROWS )
        if ( m_retRow == FAIL )
            break;

    return 0;
}

/*************************************************
*FUNC IsGrpInGrpList
*判断集团号是否在集团列表中 1 是, 0否
*若存在,把groupArray中对应的结点置空
**************************************************/
int CInterfaceContent::IsGrpInGrpList(char * preGroupList, const char * groupNo )
{
    char * pos, * pGroupList;
    int i = 0, j = 0, iSeg = 0;
    int result = 0;

    memset( (char *)m_groupArray, 0, sizeof(m_groupArray) );

    pGroupList = preGroupList;

    while ( ( pos = strstr(pGroupList, ",") ) != NULL )  //将gouplist去除逗号后放入数组中
    {
        iSeg = pos - pGroupList ;
        if ( iSeg < 0 ) 
            iSeg = 0;
        
        memcpy( (char * ) m_groupArray[i], pGroupList, iSeg );
        //memcpy( (char * ) (groupArray + i), pGroupList, iSeg );

        m_groupArray[i][GROUPID_LEN] = 0;
        pGroupList = pos + 1;

        if ( i > MAX_GROUP_NUM )
        {
            RTRACE(5, "Grouplist is too long, more than "<< MAX_GROUP_NUM );
            break;
        }

        i++;
    }

    if ( i == 0 )
    {
        memcpy((char * )(m_groupArray[i] ), m_preGroupList, GROUPID_LEN );
        m_groupArray[i][GROUPID_LEN] = 0;
    }
    else
    {
        memcpy((char * )m_groupArray[i], pGroupList, GROUPID_LEN );
        m_groupArray[i][GROUPID_LEN] = 0;
    }

    for ( i = 0; i < MAX_GROUP_NUM; i++ )
    {
        if ( strcmp(groupNo, (char *)m_groupArray[i] )  == 0 )
        {
            result = 1;
            memset((char *) m_groupArray[i], 0, GROUPID_LEN );
            break;
        }
    }

    return result;

}

int CInterfaceContent::JudgeTimeType(char * datetime, int size)
{
	CGlobal::Instance()->Ltrim(datetime, sizeof(datetime));
	if(strcmp(datetime, "") == 0)
		return 0;

	char buffer[5];
	int j = 0;
	int site = 0;
	int year, month, day, hour, minute, second;

	// cut datetime
	if(strlen(datetime) < 18)
		return -1;
	datetime[19] = '\0';

	// get datetime
	strncpy(buffer, datetime, 4);
	buffer[4] = 0;
	year = atoi(buffer);
	strncpy(buffer, datetime+5, 2);
	buffer[2] = 0;
	month = atoi(buffer);
	strncpy(buffer, datetime+8, 2);
	buffer[2] = 0;
	day = atoi(buffer);
	
	strncpy(buffer, datetime + 11, 2);
	buffer[2] = 0;
	hour = atoi(buffer);
	strncpy(buffer, datetime + 14, 2);
	buffer[2] = 0;
	minute = atoi(buffer);
	strncpy(buffer, datetime + 17, 2);
	buffer[2] = 0;
	second = atoi(buffer);
	
	if(strlen(datetime) < 19)
		return -1;
	if(datetime[4] != '-' || datetime[7] != '-' ||
		datetime[10] != ' ' || datetime[13] != ':' ||
		datetime[16] != ':')
	{
		RTRACE(5, "Find illeage letter character");
		return -1;
	}
	for(int i=0;i<19;i++)
	{
		if(i == 4 || i == 7 || i == 10 ||
			i == 13 || i == 16)
			continue;
		else
		{
			if(datetime[i] > '9' || datetime[i] < '0')
			{
				RTRACE(5, "Find illeage number character");
				return -1;
			}
		}
	}

	if(hour >= 60 || hour < 0)
	{
		RTRACE(5, "Illeage hour formation");
		return -1;
	}
	if(minute >= 60 || minute < 0)
	{
		RTRACE(5, "Illeage minute formation");
		return -1;
	}
	if(second >= 60 || second < 0)
	{
		RTRACE(5, "Illeage second formation");
		return -1;
	}

	if(year < 1970 || year > 2100)
	{
		RTRACE(5, "Illeage year formation");
		return -1;
	}
	if(month > 12 || month < 1)
	{
		RTRACE(5, "Illeage month formation");
		return -1;
	}
	// big month has 31 days per month
	if((month == 1 ||
		month == 3 ||
		month == 5 ||
		month == 7 ||
		month == 8 ||
		month == 10 ||
		month == 12) && (day > 31 || day < 1))
	{
		RTRACE(5, "Big month has 30 days per month");
		return -1;
	}
	// little month has 31 days per month
	if((month == 4 ||
		month == 6 ||
		month == 9 ||
		month == 11) && (day > 30 || day < 1))
	{
		RTRACE(5, "Little month has 30 days per month");
		return -1;
	}
	if(month == 2)
	{
		// judgement for leap year
		if((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0))
		{
			if(day > 29 || day < 1)
			{
				RTRACE(5, "Leap year has 29 days in February ");
				return -1;
			}
		}
		else
		{
			if(day > 28 || day < 1)
			{
				RTRACE(5, "Normal year has 28 days in February ");
				return -1;
			}
		}
	}
	return 0;
}
//////////////////////////////////////////////////////////////////////////
// Database access functions
//////////////////////////////////////////////////////////////////////////

//  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:

⌨️ 快捷键说明

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