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

📄 db_op.ec

📁 界面库
💻 EC
📖 第 1 页 / 共 5 页
字号:
}
#endif

/***************************************************************
功能:
	装载收单行交易路由信息
ENTRY:
RETURN:
	0	SUCC
	-1	FAIL
****************************************************************/
int load_adv_router_tab ()
{

EXEC SQL BEGIN DECLARE SECTION;
S_adv_route adv_router_item;
EXEC SQL END DECLARE SECTION;

int 	i;
	
	EXEC SQL SELECT COUNT(*) INTO :G_adv_router_num
	FROM adv_route;
	
	if (SQLCODE) {
		errcall(ERROR, "取通知交易路由条目数失败[%ld]", SQLCODE);
		return -1;
	}
	
	if (G_adv_router_num == 0) {
		errcall(DEBUG, "通知路由没有配置");	
		return -1;
	}
	
	if (G_adv_router_tab != NULL)
		free(G_adv_router_tab);
	
	G_adv_router_tab = (S_adv_route *)malloc(G_adv_router_num*sizeof(S_adv_route));

	if (G_adv_router_tab == NULL) {
		errcall(ERROR, "申请内存失败!");
		return -1;
	}

	memset(G_adv_router_tab, '\0', sizeof(S_adv_route) * G_adv_router_num);
	
	
	EXEC SQL DECLARE sel_adv_router CURSOR FOR 
	SELECT * FROM adv_route;

	EXEC SQL OPEN sel_adv_router;
	
	if (SQLCODE) {
		errcall(ERROR, "打开数据库游标失败[%ld]!", SQLCODE);
		free(G_adv_router_tab);
		G_adv_router_tab = NULL;
		return -1;
	}
	
	for(i=0; i<G_adv_router_num; i++) {

		EXEC SQL FETCH sel_adv_router INTO :adv_router_item;
		
		if (SQLCODE) {
			EXEC SQL CLOSE sel_adv_router;
			G_adv_router_num = i;
			return 0;
		}
		
		del_st_space("adv_route", &adv_router_item);
		memcpy(&(G_adv_router_tab[i]), &adv_router_item, sizeof(S_adv_route));
	}

	EXEC SQL CLOSE sel_adv_router;
	return 0;
}


/***************************************************************
功能:
	获取某卡的止付信息
ENTRY:
RETURN:
	0	SUCC 	FOUND
	-1	FAIL
	-2	NOT FOUND
****************************************************************/
int select_hmd ( S_wb_list *hm )
{
EXEC SQL BEGIN DECLARE SECTION;
char		card_no[20];
S_wb_list	l_wb_list;
EXEC SQL END DECLARE SECTION;

	memset(card_no, '\0', sizeof(card_no));
	strcpy (card_no, hm->card_no);

	EXEC SQL SELECT * INTO :l_wb_list FROM wb_list
	WHERE	card_no = :card_no;
	
	if (SQLCODE == SQLNOTFOUND){
		return -2;
	}
	
	if (SQLCODE < 0) {
		errcall(ERROR, "查止付名单失败[%ld]", SQLCODE);
		return -1;
	}
	
	del_st_space("wb_list", &l_wb_list);
	memcpy(hm, &l_wb_list, sizeof(S_wb_list));
	
	return 0;
}

/***************************************************************
功能:
	根据商户号到商户表中查找该商户的基本信息
ENTRY:
	S_merchant_base	包含该商户的商户号
RETURN:
	0	SUCC
	-1	FAIL
	1	NOT FOUND
****************************************************************/
int select_merchant_base ( S_merchant_base *merchant_c )
{
EXEC SQL BEGIN DECLARE SECTION;
char		m_id[16];
S_merchant_base	l_merchant_base;
EXEC SQL END DECLARE SECTION;

	memset(m_id, '\0', sizeof(m_id));
	strcpy(m_id, merchant_c->merchant_id);
	
	EXEC SQL SELECT * INTO :l_merchant_base FROM merchant_base
	WHERE merchant_id = :m_id;
	
	if (SQLCODE == SQLNOTFOUND) {
		return -2;
	}
	
	if (SQLCODE < 0) {
		errcall(ERROR, "取商户基本信息失败[%ld]", SQLCODE);
		return -1;
	}
	
	del_st_space("merchant_base", &G_merchant_base);
	memcpy(merchant_c, &l_merchant_base, sizeof(S_merchant_base));
	
	return 0;
}
 
/***************************************************************
功能:
	根据商户号, 银行类型, 卡类型到商户受理卡类表中查找该商户
	的他行商户编号以及商户类型
ENTRY:
	S_merchant_card	包含该商户的商户号和商户受理卡类型
			信息的受理卡类表
RETURN:
	0	SUCC 	受理卡类表信息==>S_merchant_card
	-1	FAIL 
	-2	NOT FOUND
****************************************************************/

int select_merchant_card( S_merchant_card *merchant_card )
{
EXEC SQL BEGIN DECLARE SECTION;
S_merchant_card	merch_card;
EXEC SQL END DECLARE SECTION;

	memcpy(&merch_card, merchant_card, sizeof(S_merchant_card));

	EXEC SQL SELECT * INTO :merch_card FROM merchant_card WHERE 
		merchant_id = :merch_card.merchant_id and
		card_type = :merch_card.card_type;

	if (SQLCODE < 0) {
		errcall(ERROR, "取商户受理卡类表信息失败[%ld]", SQLCODE);
		return -1;
	}

	if (SQLCODE == SQLNOTFOUND)
		return -2;

	del_st_space("merchant_card", &merch_card);
	memcpy(merchant_card, &merch_card, sizeof(S_merchant_card));

	return 0;
}

/***************************************************************
功能:
	根据商户号到商户受理卡类资料表中查找该商户的受理卡类信息

ENTRY:
	S_merchant	包含该商户的商户号
	char *status	保存该商户所受理的卡的使能信息
RETURN:
	0	SUCC
	-1	FAIL
****************************************************************/

int select_merchant_card_enable( S_merchant_card *merchant_c, char *status )
{
EXEC SQL BEGIN DECLARE SECTION;
S_merchant_card	merch_card;
char		m_id[20];
char		card_type[3];
char		bank_type[5];
char		sqlstr[256];
EXEC SQL END DECLARE SECTION;

	memset(m_id, '\0', sizeof(m_id));
	memset(card_type, '\0', sizeof(card_type));
	memset(bank_type, '\0', sizeof(bank_type));
	memset(sqlstr, '\0', sizeof(sqlstr));

	strcpy(m_id, merchant_c->merchant_id);
	strcpy( card_type, VISA_CARD);
	strcpy( bank_type, VISA_CARD);

	EXEC SQL SELECT * into :merch_card FROM merchant_card
		WHERE merchant_id = :m_id 
		AND card_type = :card_type
		AND bank_type = :bank_type;

	if (SQLCODE < 0) {
		return -1;
	}
	else if (SQLCODE == SQLNOTFOUND)
		status[0] = '0';
	else {
		if (merch_card.card_stat[0] == 'Y')
			status[0] = '1';
		else
			status[0] = '0';
	}
	
	strcpy( card_type, MC_CARD);
	strcpy( bank_type, MC_CARD);

	EXEC SQL SELECT * into :merch_card FROM merchant_card
		WHERE merchant_id = :m_id 
		AND card_type = :card_type
		AND bank_type = :bank_type;

	if (SQLCODE < 0) {
		return -1;
	}
	else if (SQLCODE == SQLNOTFOUND)
		status[1] = '0';
	else {
		if (merch_card.card_stat[0] == 'Y')
			status[1] = '1';
		else
			status[1] = '0';
	}
	
	strcpy( card_type, AE_CARD);
	strcpy( bank_type, AE_CARD);

	EXEC SQL SELECT * into :merch_card FROM merchant_card
		WHERE merchant_id = :m_id 
		AND card_type = :card_type
		AND bank_type = :bank_type;
	
	if (SQLCODE < 0) {
		return -1;
	}
	else if (SQLCODE == SQLNOTFOUND)
		status[2] = '0';
	else {
		if (merch_card.card_stat[0] == 'Y')
			status[2] = '1';
		else
			status[2] = '0';
	}
	
	strcpy( card_type, DINER_CARD);
	strcpy( bank_type, DINER_CARD);

	EXEC SQL SELECT * into :merch_card FROM merchant_card
		WHERE merchant_id = :m_id 
		AND card_type = :card_type
		AND bank_type = :bank_type;
	
	if (SQLCODE < 0) { 
		return -1;
	}
	else if (SQLCODE == SQLNOTFOUND)
		status[3] = '0';
	else {
		if (merch_card.card_stat[0] == 'Y')
			status[3] = '1';
		else
			status[3] = '0';
	}
	
	strcpy( card_type, JCB_CARD);
	strcpy( bank_type, JCB_CARD);

	EXEC SQL SELECT * into :merch_card FROM merchant_card
		WHERE merchant_id = :m_id 
		AND card_type = :card_type
		AND bank_type = :bank_type;
	
	if (SQLCODE < 0) {
		return -1;
	}
	else if (SQLCODE == SQLNOTFOUND)
		status[4] = '0';
	else {
		if (merch_card.card_stat[0] == 'Y')
			status[4] = '1';
		else
			status[4] = '0';
	}

	strcpy( card_type, CREDIT_CARD);

	sprintf(sqlstr, "select * from merchant_card	\
		where	merchant_id	= \'%s\'	\
		and	card_type	= \'%s\'",
		m_id, 
		card_type);
	
	EXEC SQL PREPARE sel_merchant_card FROM :sqlstr;
	EXEC SQL DECLARE sel_merch_card CURSOR FOR sel_merchant_card;
	EXEC SQL OPEN sel_merch_card;

	if (SQLCODE < 0) {
		errcall(ERROR, "OPEN Select_merch_card err[%ld] [%s]", SQLCODE, sqlstr);
		return -1;
	}
	EXEC SQL FETCH sel_merch_card into :merch_card;
	
	if (SQLCODE < 0) {
		return -1;
	}
	else if (SQLCODE == SQLNOTFOUND)
		status[5] = '0';
	else {
		if (merch_card.card_stat[0] == 'Y')
			status[5] = '1';
		else
			status[5] = '0';
	}

	EXEC SQL CLOSE sel_merch_card;
	if (SQLCODE < 0) {
		return -1;
	}
	
	strcpy( card_type, DEBIT_CARD);

	sprintf(sqlstr, "select * from merchant_card	\
		where	merchant_id	= \'%s\'	\
		and	card_type	= \'%s\'",
		m_id, 
		card_type);
	
	EXEC SQL PREPARE sel_m_card FROM :sqlstr;
	EXEC SQL DECLARE sel_mer_card CURSOR FOR sel_m_card;
	EXEC SQL OPEN sel_mer_card;

	if (SQLCODE < 0) {
		errcall(ERROR, "OPEN Select_merch_card err[%ld][%s]", SQLCODE, sqlstr);
		return -1;
	}
	EXEC SQL FETCH sel_mer_card into :merch_card;
	
	if (SQLCODE < 0) {
		return -1;
	}
	else if (SQLCODE == SQLNOTFOUND)
		status[6] = '0';
	else {
		if (merch_card.card_stat[0] == 'Y')
			status[6] = '1';
		else
			status[6] = '0';
	}
	
	EXEC SQL CLOSE sel_mer_card;
	if (SQLCODE < 0) {
		return -1;
	}
	
	return 0;
}

/***************************************************************
功能:
	将交易记录插入存储转发表
ENTRY:
RETURN:
	0	SUCC
	-1	FAIL
****************************************************************/
int insert_saf ( S_saf_ls *s )
{
EXEC SQL BEGIN DECLARE SECTION;
S_saf_ls	l_saf_ls;
EXEC SQL END DECLARE SECTION;

	memcpy(&l_saf_ls, s, sizeof(S_saf_ls));
	
	EXEC SQL INSERT INTO saf_ls VALUES(:l_saf_ls);
	
	if (SQLCODE) {
		errcall(ERROR,"插入SAF流水表错(%d)",SQLCODE);
		return -1;
	}

	return 0;
}

/***************************************************************
功能:
	根据终端号和商户号取edc终端信息
ENTRY:
RETURN:
	0	SUCC
	-1	FAIL
	-2	NOTFOUND
****************************************************************/
int select_terminal ( S_edc_terminal *t )
{
EXEC SQL BEGIN DECLARE SECTION;
S_edc_terminal	l_edc_term;
EXEC SQL END DECLARE SECTION;

	memcpy(&l_edc_term, t, sizeof(S_edc_terminal));
	
	EXEC SQL SELECT * INTO :l_edc_term FROM edc_terminal
		WHERE terminal_id = :l_edc_term.terminal_id
		AND   merchant_id = :l_edc_term.merchant_id;
	
	if (SQLCODE == SQLNOTFOUND)
		return -2;
		
	if (SQLCODE < 0) {
		errcall(ERROR, "取EDC终端信息失败[%ld]", SQLCODE);
		return -1;
	}
	
	del_st_space("edc_terminal", &l_edc_term);
	memcpy(t, &l_edc_term, sizeof(S_edc_terminal));
	
	return 0;
}

/***************************************************************
功能:
	根据终端号取edc终端信息
ENTRY:
RETURN:
	0	SUCC
	-1	FAIL
	-2	NOTFOUND
****************************************************************/
int select_terminal_base ( S_edc_terminal *t )
{
EXEC SQL BEGIN DECLARE SECTION;
S_edc_terminal	l_edc_term;
EXEC SQL END DECLARE SECTION;

	memcpy(&l_edc_term, t, sizeof(S_edc_terminal));
	
	EXEC SQL SELECT * INTO :l_edc_term FROM edc_terminal
		WHERE terminal_id = :l_edc_term.terminal_id;
	
	if (SQLCODE == SQLNOTFOUND)
		return -2;
		
	if (SQLCODE < 0) {
		errcall(ERROR, "取EDC终端信息失败[%ld]", SQLCODE);
		return -1;
	}
	
	del_st_space("edc_terminal", &l_edc_term);
	memcpy(t, &l_edc_term, sizeof(S_edc_terminal));
	
	return 0;
}

/***************************************************************
功能:
	更新联行签到状态标志
ENTRY:
RETURN:
	0	成功
	-1	失败
****************************************************************/
int set_login_stat ( bankid, hostid, log_stat )
$parameter char *bankid;
$parameter char *hostid;
char log_stat;
{
EXEC SQL BEGIN DECLARE SECTION;
char 	l_stat;
EXEC SQL END DECLARE SECTION;
	
	l_stat = log_stat;
	
	begin_tran();
	EXEC SQL UPDATE bank_base set login_stat = :l_stat
		WHERE bank_id = :bankid 
		AND   host_id = :hostid;
	
	if (SQLCODE) {
		errcall(ERROR, "更新联行[%s(%s)]签到状态标志失败[%ld]!",
			bankid,
			hostid,
			SQLCODE);
		rollback_tran();
		return -1;
	}

	commit_tran();
	return 0;
}

$ifdef zgx020510_added;
$else;
/***************************************************************
功能:
	更新联行网控器联接标志
ENTRY:
RETURN:
	0	成功
	-1	失败
****************************************************************/
int set_connect_stat( nacip, conn_stat )
char *nacip;
char conn_stat;
{
EXEC SQL BEGIN DECLARE SECTION;
char 	l_stat;
char 	bankid[12];
char 	hostid[3];
char	nac_ip[128];
EXEC SQL END DECLARE SECTION;
#ifdef wyz020923_modi
#else
int	retry_cnt=0;
#endif
	
	l_stat = conn_stat;
	

⌨️ 快捷键说明

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