Exemple #1
0
int F930057(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
//	writelog(LOG_DEBUG, "设备%s发送心跳",rPack->sdate1);
//	CAccTrans *pAccTrans=CAccTrans::getInstance();
//	GetCpackDataString(rPack,pAccTrans->cpackdata);
//	writelog(LOG_INFO,"cpack:[%s]",pAccTrans->cpackdata);
	
	char		devphyid[31]="";
	int 		ret=0;
	T_t_devmonitor  devmonitor;
	memset(&devmonitor,0,sizeof(devmonitor));

	devmonitor.deviceid=atoi(rPack->sorder2);

	if(devmonitor.deviceid<1)
	{
		des2src(devphyid, rPack->sdate1);
		ret = GetDevIdByDevPhyId(&(devmonitor.deviceid),devphyid);
		if(0 != ret)
		{
			writelog(LOG_ERR,"devphyid:%s",devphyid);
			return  ret;
		}
	}
	/*得到CPACK数据*/
	des2src(devmonitor.optime,rPack->sphone3);
	getsystimestamp(devmonitor.coltime);
	devmonitor.beatstatus=rPack->lvol2;
	des2src(devmonitor.cardverno,rPack->sserial4);
	devmonitor.hardiskper=rPack->damt0;
	devmonitor.memoryper=rPack->damt1;
	devmonitor.cpuper=rPack->damt2;
	des2src(devmonitor.devtime,rPack->sholder_ac_no2);

	ret=DB_t_devmonitor_update_by_deviceid(devmonitor.deviceid,&devmonitor);
	if(ret)
	{
		if(DB_NOTFOUND==ret)
		{
			//设备心跳记录不存在(初始化时),则进行插入操作
			SQLCODE=0;
			ret=DB_t_devmonitor_add(&devmonitor);
			if(ret)
			{
				return E_DB_DEVMONITOR_I;
			}
			return 0;
		}
		else
		{
			return E_DB_DEVMONITOR_U;
		}
	}
	return 0;
}
Exemple #2
0
int F930033(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	
	int ret=0;
	T_t_tif_rcvdtl tRcvdtl;
	
	/*
	ret=chk_dyn_key(rPack->lcert_code,rPack->scust_limit2);
	if(ret)
	{
		writelog(LOG_ERR,"subsys_id[%d]dyn_key[%s]",rPack->lcert_code,rPack->scust_limit2);
		*pRetCode =  ret;
		goto L_RETU;
	}
	*/
	memset(&tRcvdtl,0,sizeof(tRcvdtl));
	
	tRcvdtl.serial_no= rPack->lvol4;							//上传端流水号
	tRcvdtl.tx_mark=rPack->lvol12;							//999交易标记
	tRcvdtl.sys_id  = rPack->lcert_code;						//上传工作站标识(前置机注册号)
	des2src(tRcvdtl.deviceid, rPack->sdate1);				//物理设备ID
	des2src(tRcvdtl.inpower_no,rPack->stx_pwd);				//终端设备授权号	
//	tRcvdtl.comu_ver=rPack->lbank_acc_type;					//通信版本号
//	tRcvdtl.run_reason = rPack->lbank_acc_type2;				//启动原因
	des2src(tRcvdtl.crc,rPack->sbank_code2);				//CRC校验

	tRcvdtl.cardno= rPack->lvol5;							//交易卡号
	tRcvdtl.purse_no = rPack->lvol6;						//消费钱包号
	tRcvdtl.in_bala= rPack->lvol9;							//入卡金额
	tRcvdtl.out_bala = rPack->lvol10;						//出卡金额
	tRcvdtl.amount = rPack->lvol8;							//本次消费金额
	tRcvdtl.total_cnt= rPack->lvol7;							//当前卡中帐户消费次数(累计使用次数)
	tRcvdtl.tx_code = 930033;								//交易代码
 	snprintf(tRcvdtl.tx_date,9,"20%s",rPack->spost_code);		//发生日期(格式化输入的日期)
	des2src(tRcvdtl.tx_time,rPack->spost_code2);			//发生时间(格式化输入的时间)
	tRcvdtl.fee_code = rPack->lvol11;						//补助批次号
	getsystimestamp(tRcvdtl.col_timestamp);
	tRcvdtl.status[0]='1';
	ret = DB_t_tif_rcvdtl_add(&tRcvdtl);
	if (ret)
	{
		writelog(LOG_ERR,"DB_t_tif_rcvdtl_add ret[%d]",ret);
		if(DB_REPEAT==ret)
			return 0;	
		else
			*pRetCode = E_DB_TRADESERIAL_I;
		goto L_RETU;
	}
	return 0;
L_RETU:
	//回滚事务
	return -1;		
}
Exemple #3
0
int F950031(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{

	int ret=0;
	int in_balance = 0;
	int out_balance = 0;
	int man_fee = 0;
	int trade_fee = 0;
	T_t_tif_rcvdtl tRcvdtl;

	memset(&tRcvdtl,0,sizeof(tRcvdtl));

	tRcvdtl.serial_no= rPack->lvol4;							//上传端流水号
	tRcvdtl.tx_mark=rPack->lvol12;							//999交易标记
	tRcvdtl.sys_id  = rPack->lcert_code;						//上传工作站标识(前置机注册号)
	des2src(tRcvdtl.device_id, rPack->sdate1);				//物理设备ID
	des2src(tRcvdtl.inpower_no,rPack->stx_pwd);				//终端设备授权号
	tRcvdtl.comu_ver=rPack->lbank_acc_type;					//通信版本号
	int ver = tRcvdtl.comu_ver / 10;
	if( 0x81 == tRcvdtl.comu_ver || 0x81 == ver )
	{
//	tRcvdtl.run_reason = rPack->lbank_acc_type2;				//启动原因
		tRcvdtl.fee_code = rPack->lbank_acc_type2;				// 将启动原因保存到收费科目中
	}
	else
	{
		tRcvdtl.fee_code = 0;
	}
	des2src(tRcvdtl.crc,rPack->sbank_code2);				//CRC校验

	in_balance = rPack->lvol9;								//入卡金额
	out_balance = rPack->lvol10;							//出卡金额
	man_fee = rPack->lvol1;								//为负数
	trade_fee = rPack->lvol8;								//本次消费金额

	tRcvdtl.in_bala = in_balance;
	tRcvdtl.out_bala = out_balance;
	tRcvdtl.amount = trade_fee;
	//tRcvdtl.manage_fee = man_fee;

	tRcvdtl.card_no= rPack->lvol5;							//交易卡号
	tRcvdtl.purse_no = rPack->lvol6;						//消费钱包号						
	tRcvdtl.total_cnt= rPack->lvol7;							//当前卡中帐户消费次数(累计使用次数)
	tRcvdtl.tx_code = 930031;								//交易代码
 	snprintf(tRcvdtl.tx_date,9,"20%s",rPack->spost_code);		//发生日期(格式化输入的日期)
	des2src(tRcvdtl.tx_time,rPack->spost_code2);			//发生时间(格式化输入的时间)
	getsystimestamp(tRcvdtl.col_timestamp);
	ret=check(&tRcvdtl);
	if(ret)
	{
		tRcvdtl.err_code=ret;
		if(tRcvdtl.tx_mark==2)
			tRcvdtl.status[0]='6';								//中途拔卡交易
		else
		{
			tRcvdtl.status[0]='5';								//无效交易
			strncpy(tRcvdtl.deal_date,tRcvdtl.col_timestamp,8);
			strncpy(tRcvdtl.deal_time,tRcvdtl.col_timestamp+8,6);
		}
	}
	else
		tRcvdtl.status[0]='1';
	
	g_dbchkerr=0;
	ret = DB_t_tif_rcvdtl_add(&tRcvdtl);
	g_dbchkerr=1;
	if (ret)
	{
		writelog(LOG_DEBUG,"serial_no[%d]card_no[%d]device_id[%s]tx_date[%s]tx_time[%s]",tRcvdtl.serial_no,tRcvdtl.card_no,tRcvdtl.device_id,tRcvdtl.tx_date,tRcvdtl.tx_time);
		if(DB_REPEAT==ret)
			return 0;
		else
			*pRetCode = E_DB_TRADESERIAL_I;
		goto L_RETU;
	}
	return 0;
L_RETU:
	return -1;
}
Exemple #4
0
int F930030(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
    int ret = 0;
    T_t_tif_rcvdtl tRcvdtl;

    memset(&tRcvdtl, 0, sizeof(tRcvdtl));

    tRcvdtl.serial_no = rPack->lvol4;                       //上传端流水号
    tRcvdtl.tx_mark = rPack->lvol12;                        //999交易标记
    tRcvdtl.sys_id = rPack->lcert_code;                     //上传工作站标识
    des2src(tRcvdtl.deviceid, rPack->sdate1);               //物理设备ID
    des2src(tRcvdtl.inpower_no, rPack->stx_pwd);             //终端设备授权号
    tRcvdtl.comu_ver = rPack->lbank_acc_type;               //通信版本号
    int ver = tRcvdtl.comu_ver / 10;
    if (0x81 == tRcvdtl.comu_ver || 0x81 == ver)
        tRcvdtl.fee_code = rPack->lbank_acc_type2;
    else
        tRcvdtl.fee_code = 0;
    des2src(tRcvdtl.crc, rPack->sbank_code2);                //CRC效验
    tRcvdtl.cardno = rPack->lvol5;                         //交易卡号
    tRcvdtl.purse_no = rPack->lvol6;                        //消费钱包号
    tRcvdtl.in_bala = rPack->lvol9;                         //入卡金额
    tRcvdtl.out_bala = rPack->lvol10;                       //出卡金额
    tRcvdtl.amount = rPack->lvol8;                          //本次消费金额
    tRcvdtl.total_cnt = rPack->lvol7;                       //当前卡中帐户消费次数
    tRcvdtl.tx_code = 930030;                               //交易代码
    snprintf(tRcvdtl.tx_date, 9, "20%s", rPack->spost_code);//发生日期(格式化输入的日期)
    des2src(tRcvdtl.tx_time,rPack->spost_code2);			   //发生时间(格式化输入的时间)
    getsystimestamp(tRcvdtl.col_timestamp);
    ret = check(&tRcvdtl);
    if (ret)
    {
        tRcvdtl.err_code = ret;
        if (2 == tRcvdtl.tx_mark)
            tRcvdtl.status[0] = '6';                        //中途拔卡
        else
        {
            tRcvdtl.status[0] = '5';    
            strncpy(tRcvdtl.deal_date, tRcvdtl.col_timestamp, 8);
            strncpy(tRcvdtl.deal_time, tRcvdtl.col_timestamp + 8, 6);
        }
    }
    else
        tRcvdtl.status[0] = '1';
    g_dbchkerr = 0;
    ret = DB_t_tif_rcvdtl_add(&tRcvdtl);
    if (ret)
    {
        g_dbchkerr = 1;
        writelog(LOG_DEBUG,"serial_no[%d]cardno[%d]deviceid[%s]tx_date[%s]tx_time[%s]",tRcvdtl.serial_no,tRcvdtl.cardno,tRcvdtl.deviceid,tRcvdtl.tx_date,tRcvdtl.tx_time);
        if (DB_REPEAT == ret)
            return 0;
        else
            *pRetCode = E_DB_TRADESERIAL_I;
        goto L_RETU;    
    }
    g_dbchkerr = 1;
    return 0;
L_RETU:
    return -1;
}