Example #1
0
int F820352(TRUSERID * handle, int iRequest, ST_PACK * in_pack, int *pRetCode, char *szMsg)
{

	int ret=0;
	T_t_operator tOperator;

	memset(&tOperator,0,sizeof(tOperator));
	ret=DB_t_operator_read_by_opercode(in_pack->scust_no,&tOperator);
	if(ret)
	{
		if(DB_NOTFOUND==ret)
			return E_OPER_NOT_EXIST;
		else
			return E_DB_OPERATOR_R;
	}
	tOperator.loginflag[0]='0';
	getfmtsysdatetime(tOperator.logouttime);
	ret=DB_t_operator_update_by_opercode(tOperator.opercode,&tOperator);
	if(ret)
	{
		if(DB_NOTFOUND==ret)
		{
			return E_OPER_NOT_EXIST;
		}
		else
		{
			return E_DB_OPERATOR_U;
		}
	}
	return 0;
}
Example #2
0
int F847230(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	int ret=0;
	CAccTrans *pAccTrans=CAccTrans::getInstance();
	des2src(pAccTrans->trans.opercode,rPack->semp);
	pAccTrans->trans.transcode=TC_AUTHCARDUNLOSS;
	ret=pAccTrans->InitTrans();
	if(ret)
		return ret;			
	TRANS& trans=pAccTrans->trans;

	ST_CPACK aPack;
	ST_PACK *outPack = &(aPack.pack);
	memset(&aPack,0,sizeof(aPack));
	
	ResetNormalCPack(&aPack,0,1);

		
	SetCol(handle,0);
	SetCol(handle,F_LVOL0,F_SSERIAL0,0);

	trans.cardno= rPack->lvol0;
	if(trans.cardno<= 0)
	{
		return  E_INPUT_CARDNO;
	}	
	if(strlen(rPack->scust_limit) == 0)
	{
		return  E_INPUT_OPER_NULL;
	}
	T_t_authcard tAuthCard;
	memset(&tAuthCard,0,sizeof(tAuthCard));
	ret = DB_t_authcard_read_by_cardno(trans.cardno,&tAuthCard);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			return  E_NOTEXIST_AUTHCARD;
		else
			return  E_DB_AUTHCARD_R;
	}

	if(tAuthCard.status[0]==STATUS_DELETE)
	{
		writelog(LOG_ERR,"auth card has been cancel ,card id[%d]",tAuthCard.cardno);
		return  E_AUTHCARD_LOGOUT;
	}
	if(tAuthCard.lossflag[0]=='0')
	{
		return E_AUTHCARD_NOLOST;
	}
	
	T_t_operator tOper;
	memset(&tOper,0,sizeof tOper);
	ret = DB_t_operator_read_by_opercode(tAuthCard.opercode,&tOper);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
		{
			writelog(LOG_ERR,"operator does not exists, oper [%s]",tAuthCard.opercode);
			return  E_DB_OPERATOR_N;
		}
		else
			return  E_DB_OPERATOR_R;
	}
	sprintf(trans.remark,"操作员[%s]授权卡卡号[%d]解挂",tAuthCard.opercode,tAuthCard.cardno);
	if(tOper.status[0]==STATUS_DELETE)
	{
		writelog(LOG_ERR,"operator [%s] has been logout ",tAuthCard.opercode);
		return  E_OPERLOGON_UNREG;
	}

	ret=chk_oper_pwd(tAuthCard.opercode,rPack->semp_pwd);
	if(ret)
	{
		writelog(LOG_ERR,"operator password error, operator [%s]",tAuthCard.opercode);
		if(E_NOTEXIST_OPER==ret)
			return E_NOTEXIST_AUTHOPER;
		else if(E_OPERPWD==ret)
			return E_AUTH_OPER_PWD;
		else
			return ret;
	}
	tAuthCard.lossflag[0]='0';
	strcpy(tAuthCard.lossdate,"");
	ret = DB_t_authcard_update_by_cardno(tAuthCard.cardno,&tAuthCard);
	if(ret)
	{
		writelog(LOG_ERR,"update operator auth card information error, card id[%d]",tAuthCard.cardno);
		return  E_DB_AUTHCARD_U;
	}
	// 插入黑名单表
	T_t_cardver cardver;
	memset(&cardver,0,sizeof(cardver));
	cardver.cardno=tAuthCard.cardno;
	des2src(cardver.accdate,pAccTrans->trans.accdate);
	cardver.termid=pAccTrans->trans.termid;
	cardver.termseqno=pAccTrans->trans.termseqno;
	cardver.cardno=tAuthCard.cardno;
	des2src(cardver.cardphyid,tAuthCard.cardphyid);
	cardver.cardvertype=CARDVERTYPE_CARDUNLOSS;
	cardver.adddelflag[0]=ADDDELFLAG_DEL;
	cardver.status[0]=STATUS_NORMAL;
	
	ret=getCardVerNo(cardver.cardverno);
	if(ret)
					return ret;
	ret=DB_t_cardver_add(&cardver);
	if(ret)
	{
		if(DB_REPEAT==ret)
			return E_DB_CARDVER_E;
		else
			return E_DB_CARDVER_I;
	}
	outPack->lvol0=tAuthCard.cardno;
	des2src(outPack->sserial0,cardver.cardverno);
	PutRow(handle,outPack,pRetCode,szMsg);
	return 0;
}
Example #3
0
int F847228(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	int ret;
	char sysdate[9] = "";
	char systime[7] = "";
	int auth_cardno = 0;
	T_t_authcard tAuthCard;
	T_t_operator tOper;
	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);
	double uni_no = 0.0;

	CAccTrans *pAccTrans=CAccTrans::getInstance();
	TRANS& trans=pAccTrans->trans;
	ret=pAccTrans->checkCfgUpdate();
	if(ret)
		return ret;
	pAccTrans->clear();
	GetCpackDataString(rPack,pAccTrans->cpackdata);
	pAccTrans->trans.transcode=TC_AUTHCARDUPD;
	ret=pAccTrans->addOperDtl(rPack->semp);
	if(ret)
		return ret;

	memset(&tAuthCard,0,sizeof tAuthCard);
	memset(&aPack,0,sizeof aPack);

	ResetNormalCPack(&aPack,0,1);

	auth_cardno = rPack->lvol0;
	if(auth_cardno <= 0)
	{
		*pRetCode = E_INPUT_CARDNO;
		goto L_RETU;
	}
	if(strlen(rPack->scust_limit) == 0)
	{
		*pRetCode = E_INPUT_OPER_NULL;
		goto L_RETU;
	}

	if(IsInvalidDateTime(rPack->sdate0,"YYYYMMDD"))
	{
		*pRetCode = E_INPUT_DATE;
		goto L_RETU;
	}
	
	ret = DB_t_authcard_read_by_cardno(auth_cardno,&tAuthCard);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_AUTHCARD_NOT_EXISTS;
		else
			*pRetCode = E_DB_OPER_AUTHCARD_R;
		goto L_RETU;
	}

	if(tAuthCard.status[0] == STATUS_LOGOUT)
	{
		writelog(LOG_ERR,"auth card has been cancel ,card id[%d]",tAuthCard.cardno);
		*pRetCode = E_AUTHCARD_HAS_CANCEL;
		goto L_RETU;
	}
	if(tAuthCard.cardstatus[CARDSTAT_TYPE_LOST]== '1')
	{
		writelog(LOG_ERR,"auth card is loss , card id [%d]",tAuthCard.cardno);
		*pRetCode = E_AUTHCARD_IS_LOSS;
		goto L_RETU;
	}

	memset(&tOper,0,sizeof tOper);
	ret = DB_t_operator_read_by_opercode(tAuthCard.opercode,&tOper);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
		{
			writelog(LOG_ERR,"operator does not exists, oper [%s]",tAuthCard.opercode);
			*pRetCode = E_DB_OPERATOR_N;
		}
		else
			*pRetCode = E_DB_OPERATOR_R;
		goto L_RETU;
	}
	if(tOper.status[0]==STATUS_LOGOUT)
	{
		writelog(LOG_ERR,"operator [%s] has been logout ",tAuthCard.opercode);
		*pRetCode = E_OPERLOGON_UNREG;
		goto L_RETU;
	}
	des2src(tAuthCard.expiredate,rPack->sdate0);
	tAuthCard.privilege = rPack->lvol1;

	ret = DB_t_authcard_update_by_cardno(tAuthCard.cardno,&tAuthCard);
	if(ret)
	{
		writelog(LOG_ERR,"update operator auth card information error, card id[%d]",tAuthCard.cardno);
		*pRetCode = E_DB_OPER_AUTHCARD_U;
		goto L_RETU;
	}
	SetCol(handle,0);
	SetCol(handle,F_LVOL0,F_LVOL1,F_SDATE0,F_SCUST_LIMIT,0);
	out_pack->lvol0 = tAuthCard.cardno;
	des2src(out_pack->sdate0,tAuthCard.expiredate);
	out_pack->lvol1 = tAuthCard.privilege;
	des2src(out_pack->scust_limit,tAuthCard.opercode);
	PutRow(handle,out_pack,pRetCode,szMsg);
	return 0;
L_RETU:
	return -1;		
}
Example #4
0
int F847226(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	int ret=0;
	CAccTrans *pAccTrans=CAccTrans::getInstance();
	des2src(pAccTrans->trans.opercode,rPack->semp);
	pAccTrans->trans.transcode=TC_AUTHCARDOPEN;
	ret=pAccTrans->InitTrans();
	if(ret)
		return ret;			
	TRANS& trans=pAccTrans->trans;
	
	char opercode[11] = "";
	char work_key[51] = "";

	T_t_operator tOper;
	T_t_authcard tAuthCard;
		
	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);

	memset(&tOper,0,sizeof tOper);
	memset(&tAuthCard,0,sizeof tAuthCard);
	memset(&aPack,0,sizeof aPack);

	ResetNormalCPack(&aPack,0,1);

	SetCol(handle,0);
	SetCol(handle,F_LVOL0,F_LVOL1,F_SCUST_LIMIT,F_SCUST_LIMIT2,F_SDATE2,F_SBANK_ACC,0);

	des2src(opercode,rPack->sname2);
	des2src(trans.cardphyid,rPack->sname);
	des2src(trans.showcardno,rPack->sorder0);
	if(strlen(opercode) == 0)
	{
		return E_NOTEXIST_OPER;
	}
	if(strlen(rPack->scust_limit) == 0)
	{
		return E_INPUT_OPER_NULL;
	}
	ret = IsInvalidDateTime(rPack->sdate2,"YYYYMMDD");
	if(ret)
	{
		return ret;
	}
	ret = DB_t_operator_read_by_opercode(opercode,&tOper);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			return E_NOTEXIST_OPER;
		else
			return E_DB_OPERATOR_R;
	}
	if(tOper.status[0]=='0')
	{
		DB_t_operator_free_lock_by_c0();
		return E_OPER_LOCK;
	}	
	if(tOper.status[0]==STATUS_DELETE)
	{
		DB_t_operator_free_lock_by_c0();
		return E_OPERLOGON_UNREG;
	}
	//todo:判断如果该操作员持有该卡已经发行过,那么系统允许重复发行,但是不计流水
	//todo:用于解决操作员发行卡失败后,必须回收卡才能继续处理的问题
	ret=DB_t_authcard_read_by_opercode_and_status(opercode,"1",&tAuthCard);
	if(ret!=DB_NOTFOUND)
	{
		if(0==ret)
		{
			if(strcmp(trans.cardphyid,tAuthCard.cardphyid)==0)
			{
				out_pack->lvol0 = tAuthCard.cardno;
				out_pack->lvol1 = tAuthCard.privilege;
				des2src(out_pack->sdate2,tAuthCard.expiredate);
				des2src(out_pack->scust_limit,tAuthCard.opercode);
				des2src(out_pack->sbank_acc,work_key);
				des2src(out_pack->scust_limit2,tOper.opername);
				PutRow(handle,out_pack,pRetCode,szMsg);
				return 0;
			}
			else
				return E_AUTHCARD_EXIST;
		}
		else
			return E_DB_AUTHCARD_R;
	}
//		//记录存在
//		if(tAuthCard.cardstatus[CARDSTAT_TYPE_LOST]=='1')
//		{
//			//修改原来卡为注销状态
//			tAuthCard.status[0]==STATUS_DELETE;
//			des2src(tAuthCard.closedate,pAccTrans->trans.transdate);
//			ret=DB_t_authcard_update_by_cardno(tAuthCard.cardno,&tAuthCard);
//			if(ret)
//			{
//					return E_DB_AUTHCARD_U;
//			}
//		}
		//return E_OPER_ALREADY_HAS_AUTHCARD;
//	}
	ret=GetSysParaVal(GLOBE_999_DEVAUTHKEY,work_key);
	if( ret)
	{
		return ret;
	}

	ret = getNewUniqNo(KEYTYPE_CARDNO,&(trans.cardno));
	if(ret)
	{
		return ret;
	}

	tAuthCard.cardno = trans.cardno;

	des2src(tAuthCard.opendate,pAccTrans->trans.transdate);
	des2src(tAuthCard.opercode,opercode);
	des2src(tAuthCard.cardphyid,trans.cardphyid);
	des2src(tAuthCard.showcardno,trans.showcardno);
	des2src(tAuthCard.expiredate,rPack->sdate2);
	tAuthCard.privilege = rPack->lvol0;
	tAuthCard.status[0]=STATUS_NORMAL;
	tAuthCard.lossflag[0]='0';
	// TODO : 检查物理卡号是否已经存在
	ret = DB_t_authcard_add(&tAuthCard);
	if(ret)
	{
		if(DB_REPEAT == ret)
			return E_DB_AUTHCARD_E;
		else
			return E_DB_AUTHCARD_I;
	}
	out_pack->lvol0 = tAuthCard.cardno;
	out_pack->lvol1 = tAuthCard.privilege;
	des2src(out_pack->sdate2,tAuthCard.expiredate);
	des2src(out_pack->scust_limit,tAuthCard.opercode);
	des2src(out_pack->sbank_acc,work_key);
	des2src(out_pack->scust_limit2,tOper.opername);
	PutRow(handle,out_pack,pRetCode,szMsg);
	ret = DB_t_operator_read_lock_by_c0_and_opercode(opercode,&tOper);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			return E_NOTEXIST_OPER;
		else
			return E_DB_OPERATOR_R;
	}
	tOper.cardno=tAuthCard.cardno;
	ret=DB_t_operator_update_lock_by_c0(&tOper);
	if(ret)
	{
		return E_DB_OPERATOR_U;
	}
	/*
	int cardtype=0;
	ret=UseShowCardNo(trans.opercode,tAuthCard.showcardno,cardtype);
	if(ret)
	{
		return ret;
	}
	if(cardtype!=CARDTYPE_AUTH)
	{	
		return E_CARDTYPE_NOT_AUTHCARD;
	}
	T_t_carddtl carddtl;
	memset(&carddtl,0,sizeof(carddtl));
	
	des2src(carddtl.accdate,pAccTrans->sysPara.sSettleDate);
	des2src(carddtl.acctime,trans.acctime);
	carddtl.termid=trans.termid;
	carddtl.termseqno=trans.termseqno;
	des2src(carddtl.opercode,trans.opercode);
	carddtl.cardtype=CARDTYPE_AUTH;
	carddtl.usetype=CARDUSETYPE_USE;
	carddtl.inoutflag=INOUTFLAG_OUT;
	carddtl.transcnt=1;
	strcpy(carddtl.summary,"发行授权卡");	
	des2src(carddtl.cardphyid,tAuthCard.cardphyid);
	des2src(carddtl.showcardno,tAuthCard.showcardno);
	ret=DB_t_carddtl_add(&carddtl);
	if(ret)
	{
		if(DB_REPEAT==ret)
			return E_DB_CARDDTL_E;
		else
			return E_DB_CARDDTL_I;
	}
	T_t_transdtl transdtl;
	memset(&transdtl,0,sizeof(transdtl));
	transdtl.status[0]=DTLSTATUS_SUCCESS;
	transdtl.revflag[0]='0';
	transdtl.errcode=0;
	transdtl.custid=trans.custid;
	strcpy(transdtl.custname,trans.custname);
	strcpy(transdtl.transdate,trans.transdate);
	strcpy(transdtl.transtime,trans.transtime);
	strcpy(transdtl.accdate,pAccTrans->sysPara.sSettleDate);
	strcpy(transdtl.acctime,trans.acctime);
	transdtl.termid=trans.termid;
	transdtl.termseqno=trans.termseqno;
	transdtl.transcode=trans.transcode;
	des2src(transdtl.opercode,trans.opercode);
	transdtl.cardno=trans.cardno;
	des2src(transdtl.custname,tOper.opername);
	ret=DB_t_transdtl_add(&transdtl);
	if(ret)
	{
	  if(DB_REPEAT==ret)
	    return E_DB_TRANSDTL_E;
	  else
	    return E_DB_TRANSDTL_I;
	}		
	*/
	return 0;
}
Example #5
0
int F847229(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	int ret=0;
	CAccTrans *pAccTrans=CAccTrans::getInstance();
	des2src(pAccTrans->trans.opercode,rPack->semp);
	pAccTrans->trans.transcode=TC_AUTHCARDLOSS;
	ret=pAccTrans->InitTrans();
	if(ret)
		return ret;			
	TRANS& trans=pAccTrans->trans;
	int auth_cardno = 0;
	T_t_authcard tAuthCard;

	memset(&tAuthCard,0,sizeof tAuthCard);

	auth_cardno = rPack->lvol0;
	if(auth_cardno <= 0)
	{
		return E_INPUT_CARDNO;
	}

	
	if(strlen(rPack->scust_limit) == 0)
	{
		return E_INPUT_OPER_NULL;
	}
	
	ret = DB_t_authcard_read_by_cardno(auth_cardno,&tAuthCard);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			return E_NOTEXIST_AUTHCARD;
		else
			return E_DB_AUTHCARD_R;
	}
	sprintf(trans.remark,"操作员[%s]授权卡卡号[%d]挂失",tAuthCard.opercode,tAuthCard.cardno);

	if(tAuthCard.status[0]==STATUS_DELETE)
	{
		writelog(LOG_ERR,"auth card has been cancel ,card id[%d]",tAuthCard.cardno);
		return E_AUTHCARD_LOGOUT;
	}
	if(tAuthCard.lossflag[0]=='1')
	{
		return E_AUTHCARD_IS_LOSS;
	}
	T_t_operator tOper;
	memset(&tOper,0,sizeof tOper);
	ret = DB_t_operator_read_by_opercode(tAuthCard.opercode,&tOper);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
		{
			writelog(LOG_ERR,"operator does not exists, oper [%s]",tAuthCard.opercode);
			return E_DB_OPERATOR_N;
		}
		else
			return E_DB_OPERATOR_R;
	}
	if(tOper.status[0]==STATUS_DELETE)
	{
			writelog(LOG_ERR,"operator [%s] has been logout ",tAuthCard.opercode);
			return E_OPERLOGON_UNREG;
	}

	tAuthCard.lossflag[0]='1';
	getsysdate(tAuthCard.lossdate);
	ret = DB_t_authcard_update_by_cardno(tAuthCard.cardno,&tAuthCard);
	if(ret)
	{
		writelog(LOG_ERR,"update operator auth card information error, card id[%d]",tAuthCard.cardno);
		return E_DB_AUTHCARD_U;
	}
	// 插入黑名单表
	T_t_cardver cardver;
	memset(&cardver,0,sizeof(cardver));
	cardver.cardno=tAuthCard.cardno;
	des2src(cardver.accdate,pAccTrans->trans.accdate);
	cardver.termid=pAccTrans->trans.termid;
	cardver.termseqno=pAccTrans->trans.termseqno;
	cardver.cardno=tAuthCard.cardno;
	des2src(cardver.cardphyid,tAuthCard.cardphyid);
	cardver.cardvertype=CARDVERTYPE_CARDLOSS;
    cardver.adddelflag=ADDDELFLAG_ADD;
	cardver.status[0]=STATUS_NORMAL;
	
	ret=getCardVerNo(cardver.cardverno);
	if(ret)
		return ret;
	ret=DB_t_cardver_add(&cardver);
	if(ret)
	{
		if(DB_REPEAT==ret)
			return E_DB_CARDVER_E;
		else
			return E_DB_CARDVER_I;
	}
	return 0;
}
Example #6
0
int F847228(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	int ret=0;
	CAccTrans *pAccTrans=CAccTrans::getInstance();
	des2src(pAccTrans->trans.opercode,rPack->semp);
	pAccTrans->trans.transcode=TC_AUTHCARDUPD;
	ret=pAccTrans->InitTrans();
	if(ret)
		return ret;			
	TRANS& trans=pAccTrans->trans;
	int auth_cardno = 0;
	T_t_authcard tAuthCard;
	T_t_operator tOper;
	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);
	double uni_no = 0.0;
	memset(&tAuthCard,0,sizeof tAuthCard);
	memset(&aPack,0,sizeof aPack);

	ResetNormalCPack(&aPack,0,1);

	auth_cardno = rPack->lvol0;
	if(auth_cardno <= 0)
	{
		return E_INPUT_CARDNO;
	}
	if(strlen(rPack->scust_limit) == 0)
	{
		return E_INPUT_OPER_NULL;
	}

	if(IsInvalidDateTime(rPack->sdate0,"YYYYMMDD"))
	{
		return E_INPUT_DATE;
	}
	
	ret = DB_t_authcard_read_by_cardno(auth_cardno,&tAuthCard);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			return E_NOTEXIST_AUTHCARD;
		else
			return E_DB_AUTHCARD_R;
	}

	if(tAuthCard.status[0] == STATUS_DELETE)
	{
		writelog(LOG_ERR,"auth card has been cancel ,card id[%d]",tAuthCard.cardno);
		return E_AUTHCARD_LOGOUT;
	}
	if(tAuthCard.lossflag[0]== '1')
	{
		writelog(LOG_ERR,"auth card is loss , card id [%d]",tAuthCard.cardno);
		return E_AUTHCARD_IS_LOSS;
	}

	memset(&tOper,0,sizeof tOper);
	ret = DB_t_operator_read_by_opercode(tAuthCard.opercode,&tOper);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
		{
			writelog(LOG_ERR,"operator does not exists, oper [%s]",tAuthCard.opercode);
			return E_DB_OPERATOR_N;
		}
		else
			return E_DB_OPERATOR_R;
	}
	if(tOper.status[0]==STATUS_DELETE)
	{
		writelog(LOG_ERR,"operator [%s] has been logout ",tAuthCard.opercode);
		return E_OPERLOGON_UNREG;
	}
	des2src(tAuthCard.expiredate,rPack->sdate0);
	tAuthCard.privilege = rPack->lvol1;

	ret = DB_t_authcard_update_by_cardno(tAuthCard.cardno,&tAuthCard);
	if(ret)
	{
		writelog(LOG_ERR,"update operator auth card information error, card id[%d]",tAuthCard.cardno);
		return E_DB_AUTHCARD_U;
	}
	SetCol(handle,0);
	SetCol(handle,F_LVOL0,F_LVOL1,F_SDATE0,F_SCUST_LIMIT,0);
	out_pack->lvol0 = tAuthCard.cardno;
	des2src(out_pack->sdate0,tAuthCard.expiredate);
	out_pack->lvol1 = tAuthCard.privilege;
	des2src(out_pack->scust_limit,tAuthCard.opercode);
	sprintf(trans.remark,"操作员[%s]授权卡卡号[%d]更新",tAuthCard.opercode,tAuthCard.cardno);
	PutRow(handle,out_pack,pRetCode,szMsg);
	return 0;
}
Example #7
0
int F847229(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	int ret;
	char sysdate[9] = "";
	char systime[7] = "";
	int auth_cardno = 0;
	T_t_authcard tAuthCard;
	T_t_operator tOper;


	CAccTrans *pAccTrans=CAccTrans::getInstance();
	TRANS& trans=pAccTrans->trans;
	ret=pAccTrans->checkCfgUpdate();
	if(ret)
		return ret;
	pAccTrans->clear();
	GetCpackDataString(rPack,pAccTrans->cpackdata);
	pAccTrans->trans.transcode=TC_AUTHCARDLOSS;
	ret=pAccTrans->addOperDtl(rPack->semp);
	if(ret)
		return ret;
	memset(&tAuthCard,0,sizeof tAuthCard);

	auth_cardno = rPack->lvol0;
	if(auth_cardno <= 0)
	{
		*pRetCode = E_INPUT_CARDNO;
		goto L_RETU;
	}

	
	if(strlen(rPack->scust_limit) == 0)
	{
		*pRetCode = E_INPUT_OPER_NULL;
		goto L_RETU;
	}
	
	ret = DB_t_authcard_read_by_cardno(auth_cardno,&tAuthCard);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_AUTHCARD_NOT_EXISTS;
		else
			*pRetCode = E_DB_OPER_AUTHCARD_R;
		goto L_RETU;
	}

	if(tAuthCard.status[0]==STATUS_LOGOUT)
	{
		writelog(LOG_ERR,"auth card has been cancel ,card id[%d]",tAuthCard.cardno);
		*pRetCode = E_AUTHCARD_HAS_CANCEL;
		goto L_RETU;
	}
	
	memset(&tOper,0,sizeof tOper);
	ret = DB_t_operator_read_by_opercode(tAuthCard.opercode,&tOper);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
		{
			writelog(LOG_ERR,"operator does not exists, oper [%s]",tAuthCard.opercode);
			*pRetCode = E_DB_OPERATOR_N;
		}
		else
			*pRetCode = E_DB_OPERATOR_R;
		goto L_RETU;
	}
	if(tOper.status[0]==STATUS_LOGOUT)
	{
		writelog(LOG_ERR,"operator [%s] has been logout ",tAuthCard.opercode);
		*pRetCode = E_OPERLOGON_UNREG;
		goto L_RETU;
	}

	tAuthCard.cardstatus[CARDSTAT_TYPE_LOST]='1';
	getsysdate(tAuthCard.lossdate);
	ret = DB_t_authcard_update_by_cardno(tAuthCard.cardno,&tAuthCard);
	if(ret)
	{
		writelog(LOG_ERR,"update operator auth card information error, card id[%d]",tAuthCard.cardno);
		*pRetCode = E_DB_OPER_AUTHCARD_U;
		goto L_RETU;
	}
	// 插入黑名单表
	ret = InsertToBlkList(auth_cardno,ADD_BLACKLIST);
	if(ret)
	{
		writelog(LOG_ERR,"insert into black list error, card id[%d]",auth_cardno);
		*pRetCode = ret;
		goto L_RETU;
	}	
	// 生成流水
	return 0;
L_RETU:
	return -1;		
}
int F849005(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
	int ret;
	int device_id=0;
	char sDevPhyid[31]="";
	char current_date[9] = "";

	CAccTrans& ats=CAccTrans::GetInst();
	TRANS& trans=ats.trans;
	ret=ats.CheckCfgUpdate();
	if(ret)
		return ret;
	
	T_t_authcard auth_card;

	memset(&auth_card,0,sizeof auth_card);
	writelog(LOG_INFO,"充值操作员签到,操作员卡号%d,设备%s",rPack->lvol5,rPack->sphone3);
	ret = DB_t_authcard_read_by_cardno(rPack->lvol5,&auth_card);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			return E_DB_AUTHCARD_N;
		else
		 	return E_DB_AUTHCARD_R;
	}
	if(auth_card.status[0]!=STATUS_NORMAL)
		return E_AUTHCARD_LOGOUT;
	if(auth_card.lossflag[0] == '1')
	{
		return E_AUTHCARD_IS_LOSS;
	}
	// 判断授权卡权限
//	if((auth_card.privilege & AUTHCARD_PRV_ADDPOS) == 0)
//	{
//		*pRetCode = E_AUTHCARD_IS_LOSS;
//		goto L_RETU;
//	}
	// 判断有效期
	if(strcmp(auth_card.expiredate,trans.accdate) < 0)
	{
		return E_CARD_EXPIRED;
	}
	T_t_operator oper;
	memset(&oper,0,sizeof oper);
	ret = DB_t_operator_read_by_opercode(auth_card.opercode,&oper);
	if(ret)
	{
		if(DB_NOTFOUND==ret)
			return E_NOTEXIST_OPER;
		else
			return E_DB_OPERATOR_R;
	}
	T_t_dpsoper   tDepositOper;
	memset(&tDepositOper,0,sizeof tDepositOper);
	ret=DB_t_dpsoper_read_by_opercode(auth_card.opercode,&tDepositOper);
	if(ret)
	{
		if(DB_NOTFOUND==ret)
			return E_DB_DEPOSITOPER_R;
		else
			return E_DB_DEPOSITOPER_N;
	}
	if(tDepositOper.status[0]!=STATUS_NORMAL)
	{
		return E_DEPOSITOPER_STOP;
	}
	ret=GetDevIdByDevPhyId(&device_id,rPack->sphone3);
	if (ret)
	{
		writelog(LOG_ERR,"GetDevIdByDevPhyId err[%d] device_id[%d]devphyid[%s]",ret,device_id,rPack->sphone3);
		return ret;
	}
	T_t_dpsshoppos tDepositShoppos;
	if('1'==tDepositOper.shopoperflag[0])
	{
		memset(&tDepositShoppos,0,sizeof(tDepositShoppos));
		ret=DB_t_dpsshoppos_read_by_deviceid(device_id, &tDepositShoppos);
		if(ret)
		{
			if(DB_NOTFOUND==ret)
			{
				writelog(LOG_INFO,"PosDeposit device_id[%d] ",device_id);
				return E_DB_DEPOSITSHOPPOS_N;
			}
			else
			{
				return E_DB_DEPOSITSHOPPOS_R;
			}
		}
		T_t_shop	tShop;
		memset(&tShop,0,sizeof(tShop));
		ret=DB_t_shop_read_by_shopid(tDepositShoppos.shopid, &tShop);
		if(ret)
		{
			if(DB_NOTFOUND==ret)
				return ERRINFO(E_NOTEXIST_SHOPID,tDepositShoppos.shopid);
			else
				return E_DB_SHOP_R;
		}
		if(tShop.status[0]!=STATUS_NORMAL)
		{
			return ERRINFO(E_SHOP_LOGOUT,tDepositShoppos.shopid);
		}
	}	
	else
	{
		memset(&tDepositShoppos,0,sizeof(tDepositShoppos));
		ret=DB_t_dpsshoppos_read_by_deviceid(device_id, &tDepositShoppos);
		if(ret)
		{
			if(DB_NOTFOUND!=ret)
			{
				writelog(LOG_ERR,"PosDeposit termid[%d] ",device_id);
				return E_DB_DEPOSITSHOPPOS_R;
			}
		}
		else
		{
			ERRTIP("设备号[%d]属于属于充值商户,非充值商户操作员不能使用该设备");
			return E_COMMON_ERR;
		}
	}
	if(tDepositOper.devlimitflag[0]=='1')
	{
		T_t_dpsoperpos tDepositOperpos;
		memset(&tDepositOperpos,0,sizeof tDepositOperpos);
		ret=DB_t_dpsoperpos_read_by_opercode_and_deviceid(tDepositOper.opercode, device_id,&tDepositOperpos);
		if(ret)
		{
			writelog(LOG_ERR,"DB_t_dpsoperpos_read_by_opercode_and_deviceid ret[%d]oper_code[%s] device_id[%d]devphy999_id[%s]",ret,tDepositOper.opercode, device_id,sDevPhyid);
			if(DB_NOTFOUND==ret)
				return E_OPER_NO_RIGHT_FOR_DEVICE;
			else
				return E_DB_DEPOSITOPERPOS_R;
		}
	}	
	return 0;