Пример #1
0
int F820131(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg)
{
	T_t_cardstrut acardstru;
	double dUniqNo=0;
	int scode=0;
	
	memset(&acardstru,0,sizeof(acardstru));
	        
	//从cpack中取得相应字符串
	acardstru. phytype  = in_pack->lvol4;
	acardstru. sectorno = in_pack->lvol5;
	acardstru. blockno  = in_pack->lvol6;
	acardstru. begin_addr = in_pack->lvol7;
	acardstru. end_addr = in_pack->lvol8;
	acardstru. bytenum  = in_pack->lvol9;
	Strncpy_t(acardstru.define,(char*)in_pack->usset0,sizeof(acardstru.define));
	Strncpy_t(acardstru.comments,(char*)in_pack->usset1,sizeof(acardstru.comments));
	//设备标志从系统键值表中取得
	scode=getNewUniqNo(KEYTYPE_CARD_STRU,&dUniqNo);
	if(0 != scode)
	{
		*pRetCode=E_DB_SYSKEY_R;
		sprintf(szMsg,"820121:取系统键值表错误,RetCode=%d\n",scode);
		db_chk_err(__FILE__,__LINE__,&sqlca);
		writelog(LOG_ERR,szMsg);
		goto L_Ret;
	}
	//正确,赋值给结构体
	acardstru.id = D2I(dUniqNo);
	
	scode=DB_t_cardstrut_add(&acardstru); 
	
	if(0 != scode)
	{
		*pRetCode=E_DB_CARDSTRUT_I;
		sprintf(szMsg,"卡结构信息表插入错误,SQLLCODE=%d\n",scode);
		db_chk_err(__FILE__,__LINE__,&sqlca);
		writelog(LOG_ERR,szMsg);
		goto L_Ret;		
	}
	return 0;
L_Ret:
	return -1;
}
Пример #2
0
int F820132(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg)
{
	T_t_cardstrut acardstru;
	int scode=0;
	int v_id=0;
	
	memset(&acardstru,0,sizeof(acardstru));
	        
	//从cpack中取得相应字符串
	v_id = in_pack->lvol3;
	acardstru. id		  = in_pack->lvol3;
	acardstru. phytype  = in_pack->lvol4;
	acardstru. sectorno = in_pack->lvol5;
	acardstru. blockno  = in_pack->lvol6;
	acardstru. begin_addr = in_pack->lvol7;
	acardstru. end_addr = in_pack->lvol8;
	acardstru. bytenum  = in_pack->lvol9;
	Strncpy_t(acardstru.define,(char*)in_pack->usset0,sizeof(acardstru.define));
	Strncpy_t(acardstru.comments,(char*)in_pack->usset1,sizeof(acardstru.comments));
	
	
	scode=DB_t_cardstrut_update_by_id(v_id,&acardstru);
	
	if(SC_NOTFOUND==scode){
		*pRetCode=E_DB_CARDSTRUT_N;
		sprintf(szMsg,"卡物理结构信息表无相应记录,SQLLCODE=%d\n",scode);
		db_chk_err(__FILE__,__LINE__,&sqlca);
		writelog(LOG_ERR,szMsg);
		goto L_Ret;
	}
	if(0!=scode)
	{
		*pRetCode=E_DB_CARDSTRUT_U;
		sprintf(szMsg,"卡物理结构信息表更新错误,SQLLCODE=%d\n",scode);
		db_chk_err(__FILE__,__LINE__,&sqlca);
		writelog(LOG_ERR,szMsg);
		goto L_Ret;
	}
	return 0;
	
	L_Ret:
		return -1;	
}
Пример #3
0
//圈存机写卡失败冲正(实际并不冲正,只是改写卡状态)
int Pos_WriteErrCard(INNER_TRANS_REQUEST * pNode)
{

	int ret = 0;
	int card_id = 0;
	char logicdate[11]="";
	int serial_no=0;
	T_t_pif_card  card;
	T_t_tif_tradeserial tradeserial;

	INNER_TRANS_REQUEST from_pos;

	memset(&tradeserial,0,sizeof(tradeserial));
	memset(&from_pos,0,sizeof(from_pos));
	memset(&card,0,sizeof(card));

	memcpy(&from_pos,pNode,sizeof(from_pos));
	ret=GetLogicDate(logicdate);								//业务日期
	if(ret)
	{
		db_chk_err(__FILE__,__LINE__,&sqlca);
		writelog(LOG_ALERT,"GetLogicDate err,sqlcode[%d]",ret);
		return E_TRANS_UNKNOW_ERROR;
	}

	serial_no=from_pos.RecvNo;
	ret=DB_t_tif_tradeserial_read_by_serial_no(serial_no,&tradeserial);
	if(ret)
	{
		db_chk_err(__FILE__,__LINE__,&sqlca);
		writelog(LOG_ALERT,"DB_t_tif_tradeserial_read_by_serial_no err,sqlcode[%d]",ret);
		return E_TRANS_UNKNOW_ERROR;
	}
	//修改原卡状态为发卡写卡失败状态
	card_id = tradeserial.card_id;

	ret=DB_t_pif_card_read_lock_by_cur_and_card_id(card_id, &card);
	if(ret)
	{
		db_chk_err(__FILE__,__LINE__,&sqlca);
		writelog(LOG_ALERT,"DB_t_pif_card_read_lock_by_cur_and_card_id err,sqlcode[%d]",ret);
		return E_TRANS_UNKNOW_ERROR;
	}

	card.state_id[CARDSTAT_TYPE_WFAIL]=STATE_TRUE;
	memset(card.comments,0,sizeof(card.comments));
	AddXmlItemStr(card.comments, XML_KEY_OPERATEDATE,logicdate);
	AddXmlItemInt(card.comments,XML_KEY_SERIALNO,serial_no);
	AddXmlItemInt(card.comments,XML_KEY_TRADECODE,TRADE_INNER_TRANS);

	ret=DB_t_pif_card_update_lock_by_cur(&card);
	if(ret)
	{
		db_chk_err(__FILE__,__LINE__,&sqlca);
		writelog(LOG_ALERT,"DB_t_pif_card_update_lock_by_cur err,sqlcode[%d]",ret);
		return E_TRANS_UNKNOW_ERROR;
	}
	DB_t_pif_card_free_lock_by_cur();

	writelog(LOG_INFO,"update card status succeed!");

	return 0;

}
Пример #4
0
//查询校园卡转帐流水
int Pos_QuerySerial(INNER_TRANS_REQUEST * pNode,TRUSERID *handle,int *pRetCode,char *szMsg)
{

	char key[32+1]="";
	char pwd[32+1]="";
	//char account_id[16+1]="";
	char account_pwd[6+1]="";
	int ret=0;
	int cnt=0;
	//double unique=0.0;
	INNER_TRANS_REQUEST  from_pos;
	T_t_tif_tradeserial  tradeserial;		//卡操作流水表
	T_t_aif_account account;
	T_t_pif_card card;

	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);

	memset(&from_pos,0,sizeof(from_pos));
	memset(&account,0,sizeof(account));
	memset(&card,0,sizeof(card));
	memcpy(&from_pos,pNode,sizeof(from_pos));


	//判断设备是否登陆
	if(0!=device_login_yes_or_no(atoi(from_pos.TerminalId)))
	{
		writelog(LOG_ERR,"Device don't login");
		return E_TRANS_TERM_NOLOGIN;
	}

	ret=DB_t_pif_card_read_by_card_id(atoi(from_pos.CardNo),&card);
	if(ret)
	{
		writelog(LOG_ERR,"DB_t_pif_card_read_lock_by_cur_and_card_id error,errcode=[%d]",ret);
		//sprintf(pNode->RetCode,"%d",E_TRANS_UNKNOW_ERROR);
		return E_TRANS_SCHACC_NOEXIT;
	}

	strcpy(key,STATIC_SEED_KEY);
	Strncpy_t(account_pwd, from_pos.AccountPwd,sizeof(account_pwd));
	EncodePwd(key,account_pwd,pwd, 0);

	//判断卡密码是否正确
	if(0!=memcmp(pwd,card.password,sizeof(pwd)))
	{
		writelog(LOG_ERR,"Card password error,clear_pwd[%s],input_pwd=[%s],db_pwd=[%s]",account_pwd,pwd,card.password);
		//sprintf(pNode->RetCode,"%d",E_TRANS_SCHCARD_PWDERR);
		return E_TRANS_SCHCARD_PWDERR;
	}
	if(strncmp(card.state_id,TYPE_YES,1)!=0)
	{
		DB_t_pif_card_free_lock_by_cur();
		writelog(LOG_ERR,"card_state=[%s]",card.state_id);
		return E_TRANS_SCHACC_DESTORY;
	}
	if(STATE_TRUE==card.state_id[CARDSTAT_TYPE_LOST])
	{
		DB_t_pif_card_free_lock_by_cur();
		writelog(LOG_ERR,"card_state=[%s]",card.state_id);
		return E_TRANS_SCHCARD_LOSTING;
	}
	if(STATE_TRUE==card.state_id[CARDSTAT_TYPE_FREEZE])
	{
		DB_t_pif_card_free_lock_by_cur();
		writelog(LOG_ERR,"card_state=[%s]",card.state_id);
		return E_TRANS_SCHCARD_FREEZE;
	}
	ret=DB_t_tif_tradeserial_open_select_by_cur3_and_serial_type_and_card_id(TRADE_INNER_TRANS,card.card_id);
	if(ret)
	{
			db_chk_err(__FILE__,__LINE__,&sqlca);
			writelog(LOG_ALERT,"declare cursor err sqlcode[%d]",ret);
			return E_TRANS_UNKNOW_ERROR;
	}
	SetCol(handle,0);
   	SetCol(handle,F_SCLOSE_EMP,F_SORDER0,F_SORDER1,F_SSERIAL1,F_LVOL0,F_LVOL1,F_SDATE0,F_STIME0,F_SDATE1,F_STIME1,F_SCUST_NO,F_SCHANGE_EMP,F_SSERIAL0,F_LVOL2,F_SCUST_AUTH,F_SSTATUS1,F_SEMP_PWD,F_SEMP_PWD2,F_SSTATION0,F_SSTATION1,F_SORDER2,0);

	while(1)
	{
		ret=DB_t_tif_tradeserial_fetch_select_by_cur3(&tradeserial);
		if(ret)
		{
			DB_t_tif_tradeserial_close_select_by_cur3();
			if(ret==DB_NOTFOUND)
			{
				if(cnt==0)
					{
						writelog(LOG_DEBUG,"There havn't record from t_tif_tradeserial table!");
						break;
					}
				else		break;
			}
			else
				return   E_TRANS_UNKNOW_ERROR;
		}
		cnt++;

		memcpy(from_pos.TradeDate,tradeserial.operate_date,sizeof(from_pos.TradeDate));
		memcpy(from_pos.TradeTime,tradeserial.operate_time,sizeof(from_pos.TradeTime));
		sprintf(from_pos.CardNo,"%d",tradeserial.card_id);
		memcpy(from_pos.BankCardNo,tradeserial.b_act_id,sizeof(from_pos.BankCardNo));
		sprintf(from_pos.TransMoney,"%d",int(tradeserial.trade_fee)*100);
		if(tradeserial.serial_state!=2)
		{
			sprintf(from_pos.RetCode,"%s","失败");
		}
		else sprintf(from_pos.RetCode,"%s","成功");

		//开始返回应答包
		Strncpy_t(out_pack->sclose_emp,from_pos.TradeCode,sizeof(out_pack->sclose_emp));
		Strncpy_t(out_pack->sorder0,from_pos.TransMoney,sizeof(out_pack->sorder0));
		Strncpy_t(out_pack->sorder1,from_pos.ExtraMoney,sizeof(out_pack->sorder1));
		Strncpy_t(out_pack->sserial1,from_pos.AccountMoney,sizeof(out_pack->sserial1));
		out_pack->lvol0=from_pos.SendNo;
		out_pack->lvol1=from_pos.RecvNo;
		memcpy(out_pack->sdate0,from_pos.TradeDate,sizeof(from_pos.TradeDate));
		memcpy(out_pack->stime0,from_pos.TradeTime,sizeof(from_pos.TradeTime));
		memcpy(out_pack->sdate1,from_pos.BankDate,sizeof(from_pos.BankDate));
		memcpy(out_pack->stime1,from_pos.BankTime,sizeof(from_pos.BankTime));
		Strncpy_t(out_pack->scust_no,from_pos.Balance,sizeof(out_pack->scust_no));
		Strncpy_t(out_pack->schange_emp,from_pos.RetCode,sizeof(out_pack->schange_emp));
		Strncpy_t(out_pack->sserial0,from_pos.CardNo,sizeof(out_pack->sserial0));
		out_pack->lvol2=from_pos.Notecase;
		Strncpy_t(out_pack->scust_auth,from_pos.BankCardNo,sizeof(out_pack->scust_auth));
		sprintf(out_pack->sstatus1,"%c",from_pos.MngFeeFlag);
		Strncpy_t(out_pack->semp_pwd,from_pos.AccountPwd,sizeof(out_pack->semp_pwd));
		Strncpy_t(out_pack->semp_pwd2,from_pos.AccountNewPwd,sizeof(out_pack->semp_pwd2));
		Strncpy_t(out_pack->sstation0,from_pos.BankCardPwd,sizeof(out_pack->sstation0));
		Strncpy_t(out_pack->sstation1,from_pos.BankCardNewPwd,sizeof(out_pack->sstation1));
		Strncpy_t(out_pack->sorder2,from_pos.TerminalId,sizeof(out_pack->sorder2));
//	printf("LINE:%d\n",__LINE__);

		PutRow(handle,out_pack,pRetCode,szMsg);
		if(cnt>=10)
		{
			DB_t_tif_tradeserial_close_select_by_cur3();
			break;
		}
	}
//	printf("LINE:%d\n",__LINE__);


	T_t_tif_tradeserial_his tradeserial_his;
	memset(&tradeserial_his,0,sizeof(tradeserial_his));

	if(cnt<10)
	{
		ret=DB_t_tif_tradeserial_his_open_select_by_cur1_and_serial_type_and_card_id(TRADE_INNER_TRANS,card.card_id);
		if(ret)
		{
				db_chk_err(__FILE__,__LINE__,&sqlca);
				writelog(LOG_ALERT,"declare cursor err sqlcode[%d]",ret);
				return E_TRANS_UNKNOW_ERROR;
		}
	//	printf("LINE:%d\n",__LINE__);

		while(1)
		{
			ret=DB_t_tif_tradeserial_his_fetch_select_by_cur1(&tradeserial_his);
			if(ret)
			{
				DB_t_tif_tradeserial_his_close_select_by_cur1();
				if(ret==DB_NOTFOUND)
				{
					writelog(LOG_DEBUG,"There havn't record from t_tif_tradeserial_his table!");
					break;
				}
				else
					return   E_TRANS_UNKNOW_ERROR;
			}
			cnt++;

			memcpy(from_pos.TradeDate,tradeserial_his.operate_date,sizeof(from_pos.TradeDate));
			memcpy(from_pos.TradeTime,tradeserial_his.operate_time,sizeof(from_pos.TradeTime));
			sprintf(from_pos.CardNo,"%d",tradeserial_his.card_id);
			memcpy(from_pos.BankCardNo,tradeserial_his.b_act_id,sizeof(from_pos.BankCardNo));
			sprintf(from_pos.TransMoney,"%d",int(tradeserial_his.trade_fee)*100);
			if(tradeserial_his.serial_state!=2)
			{
				sprintf(from_pos.RetCode,"%s","失败");
			}
			else sprintf(from_pos.RetCode,"%s","成功");

			//开始返回应答包
			Strncpy_t(out_pack->sclose_emp,from_pos.TradeCode,sizeof(out_pack->sclose_emp));
			Strncpy_t(out_pack->sorder0,from_pos.TransMoney,sizeof(out_pack->sorder0));
			Strncpy_t(out_pack->sorder1,from_pos.ExtraMoney,sizeof(out_pack->sorder1));
			Strncpy_t(out_pack->sserial1,from_pos.AccountMoney,sizeof(out_pack->sserial1));
			out_pack->lvol0=from_pos.SendNo;
			out_pack->lvol1=from_pos.RecvNo;
			Strncpy_t(out_pack->sdate0,from_pos.TradeDate,sizeof(out_pack->sdate0));
			Strncpy_t(out_pack->stime0,from_pos.TradeTime,sizeof(out_pack->stime0));
			Strncpy_t(out_pack->sdate1,from_pos.BankDate,sizeof(out_pack->sdate1));
			Strncpy_t(out_pack->stime1,from_pos.BankTime,sizeof(out_pack->stime1));
			Strncpy_t(out_pack->scust_no,from_pos.Balance,sizeof(out_pack->scust_no));
			Strncpy_t(out_pack->schange_emp,from_pos.RetCode,sizeof(out_pack->schange_emp));
			Strncpy_t(out_pack->sserial0,from_pos.CardNo,sizeof(out_pack->sserial0));
			out_pack->lvol2=from_pos.Notecase;
			Strncpy_t(out_pack->scust_auth,from_pos.BankCardNo,sizeof(out_pack->scust_auth));
			sprintf(out_pack->sstatus1,"%c",from_pos.MngFeeFlag);
			Strncpy_t(out_pack->semp_pwd,from_pos.AccountPwd,sizeof(out_pack->semp_pwd));
			Strncpy_t(out_pack->semp_pwd2,from_pos.AccountNewPwd,sizeof(out_pack->semp_pwd2));
			Strncpy_t(out_pack->sstation0,from_pos.BankCardPwd,sizeof(out_pack->sstation0));
			Strncpy_t(out_pack->sstation1,from_pos.BankCardNewPwd,sizeof(out_pack->sstation1));
			Strncpy_t(out_pack->sorder2,from_pos.TerminalId,sizeof(out_pack->sorder2));

			PutRow(handle,out_pack,pRetCode,szMsg);
			if(cnt>=10)
			{
				DB_t_tif_tradeserial_his_close_select_by_cur1();
				break;
			}

		}
	}


	writelog(LOG_INFO,"query trans record succeed!");
	return 0;
}
Пример #5
0
int F847132(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	int ret=0;
	int i=0;
	int iTotalCnt=0;
	double dTotalAmt=0.0;
	double dSerialNo = 0;
	char logicdate[11]="";										//业务日期
	char sysdate[11]="";
	char systime[9]="";
	char sMsg[256]="";
	T_t_tif_tradeserial  tradeserial;
	T_t_tif_savdtl		tSavdtl;
	T_t_tif_subsidy  	tSubsidy;
	InAcc	IA;
	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);
	T_t_tif_meslist tMesList;
	T_t_pif_device t_device;
	T_t_pif_syskey tSyskey;

	memset(&t_device,0,sizeof t_device);
	memset(&tMesList,0,sizeof tMesList);
	memset(&tSavdtl,0,sizeof(tSavdtl));
	memset(&tSubsidy,0,sizeof(tSubsidy));
	memset(&tSyskey,0,sizeof tSyskey);
	memset(&tradeserial,0,sizeof(tradeserial));
	memset(&IA,0,sizeof(IA));

	ResetNormalCPack(&aPack,0,1);
	SetCol(handle,0);
	SetCol(handle,F_VSMESS,0);
	getsysdate(sysdate);
	getsystime(systime);
	ret=GetLogicDate(logicdate);					//业务日期
	if(ret)
	{
		*pRetCode=ret;
		goto L_RETU;
	}
	if(strlen(rPack->scust_limit)<1)
	{
		*pRetCode=E_INPUT_BATCH_NO;
		goto L_RETU;
	}
	if(strlen(rPack->scust_no)<1)
	{
		*pRetCode=E_INPUT_OPER_NULL;
		goto L_RETU;
	}
	//允许补助负金额
	if(amtcmp(rPack->damt0,0)==0)
	{
		*pRetCode=E_INPUT_AMT;
		goto L_RETU;
	}
	des2src(tSubsidy.summary,rPack->semail);		//补助摘要
	if(strlen(rPack->semail)<1)
	{
		*pRetCode=E_INPUT_SUMMARY;
		goto L_RETU;
	}
	
	des2src(tSubsidy.batch_no,rPack->scust_limit);
	tSubsidy.bill_type=rPack->lvol2;					//票据类型
	des2src(tSubsidy.bill_no,rPack->scust_auth2);	//票据号码
	tSubsidy.amount=rPack->damt0;				//补助金额
	des2src(tSubsidy.subsidytype,rPack->smain_flag);//补助标志(0增值1减值)
	des2src(tSubsidy.subsidytype,"1");			//补助标志(0增值1减值)
	des2src(tSubsidy.broker_id,rPack->sname);		//经办人身份证号
	des2src(tSubsidy.broker_name,rPack->semail2);	//经办人姓名

	IA.dArrInAmt[0]=tradeserial.trade_fee;
	switch(tSubsidy.bill_type)
	{
		case TYPE_CASH:	//现金
			IA.iArrInFeeSwitch[1]=1;
			break;
		case TYPE_BILL:	//支票
			IA.iArrInFeeSwitch[2]=1;
			break;
		case TYPE_FUNDBOOK:	//经费本
			IA.iArrInFeeSwitch[3]=1;
			break;
		default:
			*pRetCode=E_INPUT_DEPOSIT_TYPE;
			goto L_RETU;
	}

	/*
	ret=get_batch_no_by_subsidy_no(tSubsidy.subsidy_no,tSubsidy.batch_no);
	if(ret)
	{
		*pRetCode = E_DB_SUBSIDYTMP_R;
		goto L_RETU;
	}
	*/
	// 下发补助时才生成批次号
	/*
	ret=judge_with_max_subsidy_no_within_new(tSubsidy.subsidy_no);
	if(ret)
	{
		*pRetCode = E_SUBSIDY_DOWN_ERROR;
		goto L_RETU;
	}
	*/
	ret=stat_subsidy_amount_by_batch_no(tSubsidy.batch_no, &iTotalCnt,&dTotalAmt);
	if(ret)
	{
		*pRetCode = ret;
		writelog(LOG_ERR,"ret[%d]",ret);
		goto L_RETU;
	}
	
	if(iTotalCnt!=rPack->lvol3)
	{
		strcpy(szMsg,"补助人数与导入的数据不符");
		*pRetCode=E_INPUT_DATA_INVAILD;
		goto L_RETU;
	}
	if(amtcmp(dTotalAmt,rPack->damt0)!=0)
	{
		strcpy(szMsg,"补助总金额与导入的补助数据不符");
		*pRetCode=E_INPUT_DATA_INVAILD;
		goto L_RETU;
	}
	writelog(LOG_DEBUG,"download subsidy batch_no : %s",tSubsidy.batch_no);
	des2src(tSubsidy.tx_date,sysdate);
	des2src(tSubsidy.tx_time,systime);

	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dSerialNo);  					//获得最大流水号
	if(ret)
	{
		*pRetCode = ret;
		writelog(LOG_ERR,"ret[%d]",ret);
		goto L_RETU;
	}
	tradeserial.serial_no = D2I(dSerialNo);											//流水号
	tradeserial.other_seri_no = 0;															//上传端流水号
	if(amtcmp(dTotalAmt,0.0)>0)
		tradeserial.serial_type = TXCODE_SET_SUBSIDY;
	else tradeserial.serial_type = TXCODE_DESUBSIDY_DOWN;
	
	tradeserial.serial_state = SERISTAT_DEBT;				//流水状态
	des2src(tradeserial.operate_date,sysdate);			//发生日期
	des2src(tradeserial.operate_time,systime);			//发生时间
	des2src(tradeserial.collect_date,sysdate);				//采集日期
	des2src(tradeserial.collect_time,systime);				//采集时间
	des2src(tradeserial.enteract_date,logicdate);			//处理日期
	des2src(tradeserial.enteract_time,systime);			//处理时间
	tradeserial.maindevice_id = rPack->lvol6;				//上传工作站标识
	tradeserial.device_id = rPack->lvol7;					//采集设备标识
	des2src(tradeserial.oper_code , rPack->scust_no);		//操作员代码
	tradeserial.sys_id = 0;								//外部系统标识
	// 设置发生金额
	tradeserial.trade_fee = dTotalAmt;
	switch(tSubsidy.bill_type)
	{
		case TYPE_CASH:		//现金
			break;
 		case TYPE_BILL:		//支票
		case TYPE_FUNDBOOK:	//经费本
 			tSavdtl.amount=rPack->damt0;				//发生额
 			if(amtcmp(tSavdtl.amount,0)==0)
				break;
			des2src(tSavdtl.bill_no,tSubsidy.bill_no);		//票据号码
			if(strlen(tSavdtl.bill_no)<1)
			{
				*pRetCode=E_INPUT_BILLNO;
				goto L_RETU;
			}
			tSavdtl.card_no=0;							//卡号
			des2src(tSavdtl.oper_no,rPack->scust_limit);	//操作员
			tSavdtl.seqno=tradeserial.serial_no;			//流水号
			des2src(tSavdtl.tx_date,sysdate);			//发生日期
			des2src(tSavdtl.tx_time,systime);			//发生时间
			tSavdtl.cnt=1;								//票据数量
			tSavdtl.bill_type=tSubsidy.bill_type;			//票据类型
			tSavdtl.tx_code=tradeserial.serial_type;		//交易码
			ret=DB_t_tif_savdtl_add(&tSavdtl);
			if(ret)
			{
				if(DB_REPEAT==ret)
					*pRetCode = E_DB_SAVDTL_E;
				else
					*pRetCode = E_DB_SAVDTL_I;
				goto L_RETU;
			}
			break;
		default:
			*pRetCode=E_INPUT_DEPOSIT_TYPE;
			goto L_RETU;
	}
	IA.iFeeType=1;				//默认值
	//支持负金额扣款
	if(tradeserial.trade_fee<0)
		tradeserial.trade_fee=-tradeserial.trade_fee;
	IA.dArrInAmt[0]=tradeserial.trade_fee;

	IA.iArrInFeeSwitch[0]=rPack->lvol0;
	IA.iArrInFeeSwitch[5]=rPack->lvol5;
	IA.iArrInFeeSwitch[6]=rPack->lvol6;
	IA.iArrInFeeSwitch[7]=rPack->lvol7;
	IA.iArrInFeeSwitch[8]=rPack->lvol8;
	IA.iArrInFeeSwitch[9]=rPack->lvol9;
	IA.iArrInFeeSwitch[10]=rPack->lvol10;

	// 记入账户信息
	ret=process(&IA,&tradeserial,&tSubsidy);
	if(ret)
	{
		writelog(LOG_ERR,"process ret[%d]",ret);
		*pRetCode=ret;
		goto L_RETU;
	}
	sprintf(out_pack->vsmess,"流水号:%d ",IA.iSerialNo);
	// writelog(LOG_DEBUG,"out tx type count %d",IA.iOutTxTypeCnt);
	/*
	for(i=1;i<=IA.iOutTxTypeCnt;i++)
	{
		if(amtcmp(IA.dArrOutAmt[i],0)!=0)
		{
			sprintf(sMsg,"%s:%.2lf元 ",IA.sArrOutTxName[i],IA.dArrOutAmt[i]);
			strcat(out_pack->vsmess,sMsg);
		}
	}
	*/
	sprintf(sMsg,",共%d笔",iTotalCnt);
	strcat(out_pack->vsmess,sMsg);
	// strcat(out_pack->vsmess,sMsg);
	// writelog(LOG_DEBUG,out_pack->vsmess);
	ret = DB_t_tif_tradeserial_add(&tradeserial);
	if (ret)
	{
		writelog(LOG_ERR,"ret[%d]",ret);
		if(DB_REPEAT==ret)
			*pRetCode = E_DB_TRADESERIAL_E;
		else
			*pRetCode = E_DB_TRADESERIAL_I;
		goto L_RETU;
	}
	
	// 广播下载补助名单任务
	memset(&tMesList,0,sizeof tMesList);
	tMesList.funid=930077;
	tMesList.level = MESLIST_PRIORITY_REALTIME;
	tMesList.msgtype = MESLIST_TYPE_NORMAL;
	tMesList.max_send_cnt = 5;
	ret=AddMsgLst(&tMesList);
	if(ret)
	{
		*pRetCode=E_DB_MESLIST_I;
		writelog(LOG_ERR,"AddMsgLst err[%d]",ret);
		return ret;
	}

////////////////////////新增
	ret=DB_t_pif_device_open_select_by_c5_and_devtype_and_phytype("5301",1001);
	if(ret)
	{
		writelog(LOG_ERR,"DB_t_pif_device_open_select_by_c5_and_devtype_and_phytype error,ret=[%d]",ret);
		*pRetCode = E_DB_DEVICE_R;
		goto L_RETU;
	}

	while(1)
	{
		// 初始化宿主变量
		ret=DB_t_pif_device_fetch_select_by_c5(&t_device);
		if (ret)    
		{
			DB_t_pif_device_close_select_by_c5();
			db_chk_err(__FILE__,__LINE__,&sqlca);
			if(DB_NOTFOUND==ret)
			{
				break;
			}
			else
			{
				*pRetCode=E_DB_DEVICE_R;
				writelog(LOG_ERR,"DB_t_pif_device_fetch_select_by_c5 err [%d]",ret);
				goto L_RETU;
			}
		}
		
		if(t_device.state_id == DEVISTAT_LOGOUT)   //设备已经注销
			continue;
		tMesList.devid = t_device.device_id;
		tMesList.device_id= t_device.subsystem_id;
		ret=AddMsgLst(&tMesList);
		if(ret)
		{
			*pRetCode=E_DB_MESLIST_I;
			DB_t_pif_device_close_select_by_c5();
			writelog(LOG_ERR,"AddMsgLst err[%d]",ret);
			return ret;
		}
	}

	
	// 锁住批次号
	ret = DB_t_pif_syskey_read_lock_by_cur_and_key_code(KEYTYPE_TIF_SUBSIDY_NO,&tSyskey);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_DB_SYSKEY_N;
		else
			*pRetCode = E_DB_SYSKEY_R;
		goto L_RETU;
	}
	ret = calc_import_max_subsidy_no(tSubsidy.batch_no,tSubsidy.oper_code,&tSubsidy.subsidy_no);
	if(ret)
	{
		DB_t_tif_subsidy_close_select_by_c4();
		return ret;
	}
	writelog(LOG_DEBUG,"download subsidy no[%d]",tSubsidy.subsidy_no);
	ret=update_subsidy_info_by_batch_no(&tSubsidy);
	if(ret)
	{
		*pRetCode = ret;
		DB_t_pif_syskey_free_lock_cur();
		writelog(LOG_ERR,"ret[%d]",ret);
		goto L_RETU;
	}
	// 释放批次号
	DB_t_pif_syskey_free_lock_cur();
	PutRow(handle,out_pack,pRetCode,szMsg);
	return 0;
L_RETU:
	return -1;
}
Пример #6
0
int F820134(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg)
{
	T_t_pif_cardstrut acardstru;
	int v_id=0;
	int nrows=0;
	int r=0;
	
	ST_CPACK aPack;                                
	ST_PACK *out_pack = &(aPack.pack);
	SetCol(handle,F_LVOL3,F_LVOL4,F_LVOL5,F_LVOL6,F_LVOL7,F_LVOL8,F_LVOL9,F_USSET0,F_USSET1,0);
	
	memset(&acardstru,0,sizeof(acardstru));
	
	v_id = in_pack->lvol3;
	
	if(0 == v_id)
	{
		DB_t_pif_cardstrut_open_select_by_c1();
		
		while(1){
			
			memset(&acardstru,0,sizeof(acardstru));
			
			r=DB_t_pif_cardstrut_fetch_select_by_c1(&acardstru);
			if(0 != r)
			{
				if(SC_NOTFOUND==r)
				{
					if(0 == nrows)
					{
						*pRetCode=E_DB_CARDSTRUT_N;
						sprintf(szMsg,"查询卡物理结构信息表无记录,SQLCODE=%d\n",r);
						db_chk_err(__FILE__,__LINE__,&sqlca);
   						writelog(LOG_WARNING,szMsg);
						goto L_Ret_if;
					}
				}
				else
				{
					*pRetCode=E_DB_CARDSTRUT_R;
					sprintf(szMsg,"读取卡物理结构信息表出错,SQLCODE=%d\n",r);
					db_chk_err(__FILE__,__LINE__,&sqlca);
   					writelog(LOG_WARNING,szMsg);
					goto L_Ret_if;
				}
				break;
			}
      	
      	out_pack->lvol3 =  acardstru.id;
      	out_pack->lvol4 =  acardstru.phytype;
      	out_pack->lvol5 =  acardstru.sectorno;
      	out_pack->lvol6 =  acardstru.blockno;
      	out_pack->lvol7 =  acardstru.begin_addr;
      	out_pack->lvol8 =  acardstru.end_addr;
      	out_pack->lvol9 =  acardstru.bytenum;
      	Strncpy_t(out_pack->usset0,acardstru.define,sizeof(out_pack->usset0));
      	Strncpy_t(out_pack->usset1,acardstru.comments,sizeof(out_pack->usset1));
      	
      	PutRow(handle,out_pack,pRetCode,szMsg); 
      	nrows++;             	
      				
      	if (15 == nrows)
      	{
      		// 这里调用AnswerDataPart是为了不让前端等待太长时间,在有15条记录的时候就给返回,至于后续数据就不用管了,BCC与前端自动会将后续数据采集回去
      		AnswerDataPart(handle,*pRetCode,szMsg);
      	}
   	};
   	
   	DB_t_pif_cardstrut_close_select_by_c1();
   	return 0;
   	
   	L_Ret_if:
			DB_t_pif_cardstrut_close_select_by_c1();
			return r;			
	}
	else{
		r=DB_t_pif_cardstrut_read_by_id(v_id,&acardstru);
		if(SC_NOTFOUND==r)
		{
			*pRetCode=E_DB_CARDSTRUT_N;
			sprintf(szMsg,"卡物理结构信息表不存在相应记录,SQLCODE=%d\n",r);
			db_chk_err(__FILE__,__LINE__,&sqlca);
      			writelog(LOG_ERR,szMsg);
			goto L_Ret_else;
		}
		else if(0!=r)
		{
			*pRetCode=E_DB_CARDSTRUT_R;
			sprintf(szMsg,"卡物理信息表读取错误,SQLCODE=%d\n",r);
                     db_chk_err(__FILE__,__LINE__,&sqlca);
      			writelog(LOG_ERR,szMsg);
			goto L_Ret_else;		
		}
		out_pack->lvol3 =  acardstru.id;
      out_pack->lvol4 =  acardstru.phytype;
      out_pack->lvol5 =  acardstru.sectorno;
      out_pack->lvol6 =  acardstru.blockno;
      out_pack->lvol7 =  acardstru.begin_addr;
      out_pack->lvol8 =  acardstru.end_addr;
      out_pack->lvol9 =  acardstru.bytenum;
      Strncpy_t(out_pack->usset0,acardstru.define,sizeof(out_pack->usset0));
      Strncpy_t(out_pack->usset1,acardstru.comments,sizeof(out_pack->usset1));
      
      PutRow(handle,out_pack,pRetCode,szMsg);
      
      return 0; 
      
      L_Ret_else:
			return r; 		
	}
}
Пример #7
0
int Select_By_ShopBalance_Bet_Where_1(TRUSERID *handle,int *pRetCode,char *szMsg,int shop_id)
{
		int ret=0;
		int nrows = 0;
		int i=0;

		ST_CPACK aPack;                                 
		ST_PACK *out_pack = &(aPack.pack);  
		T_t_tif_report_shop_balance pv_tif_shopdeptfee;
		memset(&pv_tif_shopdeptfee,0,sizeof(pv_tif_shopdeptfee));
		
		i=shop_id;

		ret= DB_v_tif_shopdeptfee_open_select_by_c5();
		if(ret)
		{
			*pRetCode=ret;
			db_chk_err(__FILE__,__LINE__,&sqlca);
			writelog(LOG_ALERT,"DB_v_tif_shopdeptfee_open_select_by_c5 err sqlcode[%d]",SQLCODE);
			goto L_RETU;
		}

		SetCol(handle,0);                           
		//SetCol(handle,F_LVOL0,F_SALL_NAME,F_LVOL1,F_LVOL2,F_DAMT0,F_DAMT1,F_DAMT2,F_SORDER0,F_STX_PWD,0); 
		SetCol(handle,F_SCUST_NO,F_SCUST_NO2,F_SALL_NAME,F_LVOL0,F_LVOL1,F_LVOL2,F_LVOL7,F_DAMT0,F_DAMT1,F_DAMT2,F_SROOM_NO2,F_STX_PWD,F_SORDER0
,0); 
									  
	   	while(1)                                             
	   	{                               
			memset(out_pack,0,sizeof(ST_PACK));
		      // 初始化宿主变量                           
	       	ret=DB_v_tif_shopdeptfee_fetch_select_by_c5(&pv_tif_shopdeptfee);
			if(ret)
			{

				db_chk_err(__FILE__,__LINE__,&sqlca);
				if(ret==DB_NOTFOUND)
				{
					if(0==nrows)
					{
						*pRetCode=E_DB_T_REPORT_SHOP_BALANCE_N;
						writelog(LOG_DEBUG,"fetch t_tif_report_shop_balance no data [%d]",ret);
						goto L_RETU;
					}
					else
						break;
				}
				else 	*pRetCode=E_DB_T_REPORT_SHOP_BALANCE_R;
				writelog(LOG_ALERT,"DB_v_tif_shopdeptfee_fetch_select_by_c5 err sqlcode[%d]",SQLCODE);
				goto L_RETU;
			}
			if(i==pv_tif_shopdeptfee.shop_id||i==pv_tif_shopdeptfee.dept_id)
			{
				out_pack->lvol0 = pv_tif_shopdeptfee.shop_id;    
				memset(out_pack->sall_name,0,sizeof out_pack->sall_name);
				Strncpy_t(out_pack->sall_name, pv_tif_shopdeptfee.shop_name, sizeof(out_pack->sall_name)); 
				out_pack->lvol1 = pv_tif_shopdeptfee.dept_id;                     
				out_pack->lvol2 = pv_tif_shopdeptfee.trade_num;                   
				out_pack->damt0 = pv_tif_shopdeptfee.trade_amt;                   
				out_pack->damt1 = pv_tif_shopdeptfee.mng_amt;                     
				out_pack->damt2 = pv_tif_shopdeptfee.trade_amt+pv_tif_shopdeptfee.mng_amt;                   
		      	PutRow(handle,out_pack,pRetCode,szMsg);      
		      	nrows++;     
			}

	   	}                                   
	       DB_v_tif_shopdeptfee_close_select_by_c5();
//	   	EXEC SQL CLOSE C1;      

		return 0;
		L_RETU:
			return *pRetCode;                                                                                                
Пример #8
0
int F820124(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg)
{
	T_t_phydevice aphydev;
	//int scode=0;
	int v_phytype=0;
	int nrows=0;
	int r=0;
	
	ST_CPACK aPack;                                
	ST_PACK *out_pack = &(aPack.pack);
	SetCol(handle,F_LVOL6,F_SPHONE,F_SPAGER,F_SCERT_NO,F_USSET1,0);
	
	memset(&aphydev,0,sizeof(aphydev));
	
	v_phytype = in_pack->lvol6;
	
	if(0==v_phytype)
	{
		DB_t_phydevice_open_select_by_c1();
		
		while(1){
			
			memset(&aphydev,0,sizeof(aphydev));
			
			r=DB_t_phydevice_fetch_select_by_c1(&aphydev);
			
			if(0 != r)
			{
				if(SC_NOTFOUND == r)
				{
					if(0 == nrows)
					{
						*pRetCode=E_DB_PHYDEVICE_N;
						sprintf(szMsg,"查询设备结构信息表无记录,SQLCODE=%d\n",SQLCODE);
   						writelog(LOG_WARNING,szMsg);
						db_chk_err(__FILE__,__LINE__,&sqlca);
						goto L_Ret_if;
					}
				}
				else
				{
					*pRetCode=E_DB_PHYDEVICE_R;
					sprintf(szMsg,"读取设备结构信息表出错,SQLCODE=%d\n",SQLCODE);
   					writelog(LOG_WARNING,szMsg);
					db_chk_err(__FILE__,__LINE__,&sqlca);
					goto L_Ret_if;
				}
				break;
			}
      	
      	out_pack->lvol6 = aphydev.phytype;
      	Strncpy_t(out_pack->sphone,aphydev.dname,sizeof(out_pack->sphone));
      	Strncpy_t(out_pack->spager,aphydev.dtype,sizeof(out_pack->spager));
      	Strncpy_t(out_pack->scert_no,aphydev.factory,sizeof(out_pack->scert_no));
      	Strncpy_t((char*)out_pack->usset1,aphydev.comments,sizeof(out_pack->usset1));
      	
      	PutRow(handle,out_pack,pRetCode,szMsg); 
      	nrows++;             	
      				
      	if (15==nrows)
      	{
      		// 这里调用AnswerDataPart是为了不让前端等待太长时间,在有15条记录的时候就给返回,至于后续数据就不用管了,BCC与前端自动会将后续数据采集回去
      		AnswerDataPart(handle,*pRetCode,szMsg);
      	}
   	};
   	
   	DB_t_phydevice_close_select_by_c1();
   	return 0;
   	
   	L_Ret_if:
			DB_t_phydevice_close_select_by_c1();
			return r;			
	}
	else{
		r=DB_t_phydevice_read_by_phytype(v_phytype,&aphydev);
		if(SC_NOTFOUND==r)
		{
			*pRetCode=E_DB_PHYDEVICE_N;
			sprintf(szMsg,"设备物理信息表不存在相应记录,SQLCODE=%d\n",SQLCODE);
			
			writelog(LOG_ERR,szMsg);	
			db_chk_err(__FILE__,__LINE__,&sqlca);
			goto L_Ret_else;
		}
		else if(r!=0)
		{
			*pRetCode=E_DB_PHYDEVICE_R;
			sprintf(szMsg,"设备物理信息表读取错误,SQLCODE=%d\n",SQLCODE);
			
			writelog(LOG_ERR,szMsg);	
			db_chk_err(__FILE__,__LINE__,&sqlca);
			goto L_Ret_else;		
		}
		out_pack->lvol6 =  aphydev.phytype;
      Strncpy_t(out_pack->sphone,aphydev.dname,sizeof(out_pack->sphone));
      Strncpy_t(out_pack->spager,aphydev.dtype,sizeof(out_pack->spager));
      Strncpy_t(out_pack->scert_no,aphydev.factory,sizeof(out_pack->scert_no));
      Strncpy_t((char*)out_pack->usset1,aphydev.comments,sizeof(out_pack->usset1));
      
      PutRow(handle,out_pack,pRetCode,szMsg);
      
      return 0; 
      
      L_Ret_else:
		return r;		
	}
}