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

📄 svrf300.ec

📁 一个银行业务的程序
💻 EC
字号:
#include "../incl/serverpub.h"
$include sqlca;

//#define PASSWD "88888888" //???

/*
 *	功能:操作员管理
 *	日期:2002/12/19
 *	参数:
 */

/**	修改记录
2003/01/16:客户端不再发操作的操作员网点、编号
2003/01/18:联社、信用社操作员号须唯一
2003/03/31: 增加ERRBANK错误码
2003/04/03: 增加4200交易

*/

/*********************************************************
	功能:取操作员权限
	日期:2002/12/19
	参数:
*********************************************************/
int GetRight(char *pcBankNo,char *pcOperNo,char *pcRetCode)
{
	$char	e_cBankNo1[11],e_cOperNo1[5],e_cLevel1[2];
	$long	e_lCount=0;

	memset(e_cBankNo1,0,sizeof(e_cBankNo1));
	memset(e_cOperNo1,0,sizeof(e_cOperNo1));
	memcpy(e_cBankNo1,pcBankNo,10);
	memcpy(e_cOperNo1,pcOperNo,4);

	memset(e_cLevel1,0,sizeof(e_cLevel1));
	$select level into :e_cLevel1 from operator where bank_no=:e_cBankNo1 and oper_no=:e_cOperNo1;
#ifdef QDCS
	WriteTest("Level=%s,SQLCODE=%d\n",e_cLevel1,SQLCODE);
#endif
	if(SQLCODE==100){memcpy(pcRetCode,NORIGHT,3);return -1;}
	if(SQLCODE){memcpy(pcRetCode,DBOPERERR,3);return -1;}
	//7 系统管理员
	if(atoi(e_cLevel1)!=7){memcpy(pcRetCode,NORIGHT,3);return -1;}

	return 0;
}


/*********************************************************
	功能:取记录数
	日期:2002/12/19
	参数:
*********************************************************/
//int GetCount(char *pcBankNo,char *pcOperNo,char *pcRetCode)
int GetCount(char *pcStr,char *pcRetCode)
{
	$char	e_cSql[500];
	$long	e_lCount=0;

	memset(e_cSql,0,sizeof(e_cSql));
	strcpy(e_cSql,"select count(*) from ");
	strcat(e_cSql,pcStr);
#ifdef QDCS
	WriteTest("Select Count=%s\n",e_cSql);
#endif

	$prepare Nonid from :e_cSql;
	$declare count_cur cursor for Nonid;
	if(SQLCODE!=0){
		memcpy(pcRetCode,DBOPERERR,3);
		return -1;
	}
	$open count_cur;
	if(SQLCODE!=0){
		memcpy(pcRetCode,DBOPERERR,3);
		return -1;
	}
	while(1){
		$fetch count_cur into :e_lCount;
		if(SQLCODE!=0)break;
	}

	$close count_cur;
	$free count_cur;

#ifdef QDCS
	WriteTest("Rows Count=%d\n",e_lCount);
#endif

	return e_lCount;
			
/*
	$char	e_cBankNo[11],e_cOperNo[5];
	$long	e_lCount=0;

	memset(e_cBankNo,0,sizeof(e_cBankNo));
	memset(e_cOperNo,0,sizeof(e_cOperNo));
	memcpy(e_cBankNo,pcBankNo,10);
	memcpy(e_cOperNo,pcOperNo,4);

	$select count(*) into :e_lCount from operator where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
	if(SQLCODE){
		memcpy(pcRetCode,DBOPERERR,3);
#ifdef QDCS
		WriteTest("bank_no=[%s],oper_no=[%s],err=[%d]\n",e_cBankNo,e_cOperNo,SQLCODE);
#endif
		return -1;
		}
	return e_lCount;
*/
}


SvrF300(int argc,char *argv[])
{
	$char	e_cBankNo[11],e_cOperNo[5],e_cName[9],e_cLevel[2],e_cPassWd[9],e_cState[2];
	$char	e_cBankNo1[11],e_cOperNo1[5],e_cLevel1[2];
	$long	e_lCount=0;
	int	iAct=0,i=0,iRet=0;
	char	cRetCode[4],cSql[100];
	$char	e_cBankName[41];

	if(argc<6) return 0;
	iAct=atoi(argv[0]);
#ifdef QDCS
	for(i=0;i<argc;i++)
		WriteTest("argv[%d]:%s\n",i,argv[i]);
#endif


	memset(e_cBankNo,0,sizeof(e_cBankNo));
	memset(e_cOperNo,0,sizeof(e_cOperNo));
	memset(e_cName,0,sizeof(e_cName));
	memset(e_cLevel,0,sizeof(e_cLevel));
	memset(e_cPassWd,0,sizeof(e_cPassWd));
	memset(e_cState,0,sizeof(e_cState));

	strcpy(e_cBankNo,argv[1]);
	strcpy(e_cOperNo,argv[2]);
	strcpy(e_cName,argv[3]);//修改口令,存放现口令
	strcpy(e_cLevel,argv[4]);
	memcpy(e_cPassWd,argv[5],8);

	memset(e_cBankNo1,0,sizeof(e_cBankNo1));
	FindKey("地区号");strcat(e_cBankNo1,sCurrent->cValue);
	FindKey("储蓄所号");strcat(e_cBankNo1,sCurrent->cValue);
	memset(e_cOperNo1,0,sizeof(e_cOperNo1));
	FindKey("操作员号");strcat(e_cOperNo1,sCurrent->cValue);
#if QDCS
	WriteTest("Net=%s,Oper=%s\n",e_cBankNo1,e_cOperNo1);
#endif
/*
	strcpy(e_cBankNo1,argv[6]);
	strcpy(e_cOperNo1,argv[7]);
*/

	memset(cRetCode,0,sizeof(cRetCode));
	memset(cSql,0,sizeof(cSql));
	switch(iAct){
		case 0://取网点相关信息
			sprintf(cSql,"operator where oper_no='%s'",e_cOperNo);
			iRet=GetCount(cSql,cRetCode);
			if(iRet==-1)break;
			else if(iRet==0){memcpy(cRetCode,NORECORD,3);break;}

			memset(e_cPassWd,0,sizeof(e_cPassWd));
			memset(e_cState,0,sizeof(e_cState));
			memset(e_cBankNo,0,sizeof(e_cBankNo));
			$select passwd,state,bank_no into :e_cPassWd,:e_cState,:e_cBankNo from operator where oper_no=:e_cOperNo;
			if(SQLCODE!=0&&SQLCODE!=100){memcpy(cRetCode,DBOPERERR,3);break;}
			//if(atoi(e_cState)==1){memcpy(cRetCode,REREGISTER,3);break;}
			if(strncmp(e_cPassWd,argv[5],8)!=0)
			{
#ifdef QDCS
	WriteTest("tabpasswd=[%s],inputpasswd=[%s]\n",e_cPassWd,argv[5]);
#endif 
				memcpy(cRetCode,PASSWDERR,3);
				break;
			}
			CreateStruct("网点编号",e_cBankNo);

		/*	$update operator set state="1" where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){memcpy(cRetCode,DBOPERERR,3);break;}
		*/
			memset(e_cBankName,0,sizeof(e_cBankName));
			$select name into :e_cBankName from banknet where bank_no=:e_cBankNo;
			if(SQLCODE!=0&&SQLCODE!=100){memcpy(cRetCode,ERRBANK,3);break;}
			CreateStruct("网点名称",e_cBankName);

			strcpy(cRetCode,"000");
			break;
		case 1://增加操作员
			if(GetRight(e_cBankNo1,e_cOperNo1,cRetCode))break;

			/*查找操作员号码不包含网点*/
			sprintf(cSql,"operator where oper_no='%s'",e_cOperNo);
			iRet=GetCount(cSql,cRetCode);
			if(iRet==-1)break;
			else if(iRet>0){strcpy(cRetCode,EXIST);break;}

//			memset(e_cPassWd,0,sizeof(e_cPassWd));
//			strcpy(e_cPassWd,PASSWD);
			$insert into operator(bank_no,oper_no,oper_name,level,passwd,state) values(:e_cBankNo,:e_cOperNo,:e_cName,:e_cLevel,:e_cPassWd,"0");
			if(SQLCODE){strcpy(cRetCode,DBOPERERR);break;}

			strcpy(cRetCode,"000");
			break;
		case 2://操作员初始化
			if(GetRight(e_cBankNo1,e_cOperNo1,cRetCode))break;

			sprintf(cSql,"operator where bank_no='%s' and oper_no='%s'",e_cBankNo,e_cOperNo);
			iRet=GetCount(cSql,cRetCode);
			if(iRet==-1)break;
			else if(iRet==0){strcpy(cRetCode,NORECORD);break;}

//			memset(e_cPassWd,0,sizeof(e_cPassWd));
//			memcpy(e_cPassWd,PASSWD,8);
			$update operator set passwd=:e_cPassWd where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){strcpy(cRetCode,DBOPERERR);break;}

			strcpy(cRetCode,"000");
			break;
		case 3://删除操作员
			if(GetRight(e_cBankNo1,e_cOperNo1,cRetCode))break;

			sprintf(cSql,"operator where bank_no='%s' and oper_no='%s'",e_cBankNo,e_cOperNo);
			iRet=GetCount(cSql,cRetCode);
			if(iRet==-1)break;
			else if(iRet==0){memcpy(cRetCode,NORECORD,3);break;}

			$delete from operator where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){strcpy(cRetCode,DBOPERERR);break;}

			strcpy(cRetCode,"000");
			break;
		case 4://注册操作员
			sprintf(cSql,"operator where bank_no='%s' and oper_no='%s'",e_cBankNo,e_cOperNo);
#ifdef QDCS
	//WriteTest("cSql=%s\n",cSql);
#endif
			iRet=GetCount(cSql,cRetCode);
			if(iRet==-1)break;
			else if(iRet==0){memcpy(cRetCode,NORECORD,3);break;}

			memset(e_cPassWd,0,sizeof(e_cPassWd));
			memset(e_cState,0,sizeof(e_cState));
			$select passwd,state into :e_cPassWd,:e_cState from operator where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE!=0&&SQLCODE!=100){memcpy(cRetCode,DBOPERERR,3);break;}
			if(atoi(e_cState)==1){memcpy(cRetCode,REREGISTER,3);break;}
			if(strncmp(e_cPassWd,argv[5],8)!=0)
			{
#ifdef QDCS
	WriteTest("tabpasswd=[%s],inputpasswd=[%s]\n",e_cPassWd,argv[5]);
#endif 
				memcpy(cRetCode,PASSWDERR,3);
				break;
			}

			$update operator set state="1" where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){memcpy(cRetCode,DBOPERERR,3);break;}

			memset(e_cBankName,0,sizeof(e_cBankName));
			$select name into :e_cBankName from banknet where bank_no=:e_cBankNo;
			if(SQLCODE!=0&&SQLCODE!=100){memcpy(cRetCode,ERRBANK,3);break;}
			CreateStruct("网点名称",e_cBankName);

			memset(e_cName,0,sizeof(e_cName));
			memset(e_cLevel,0,sizeof(e_cLevel));
			$select oper_name,level into :e_cName,:e_cLevel from operator where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE!=0&&SQLCODE!=100){memcpy(cRetCode,DBOPERERR,3);break;}
			CreateStruct("操作员姓名",e_cName);
			CreateStruct("操作员级别",e_cLevel);

			strcpy(cRetCode,"000");
			break;
		case 5://注销操作员
			sprintf(cSql,"operator where bank_no='%s' and oper_no='%s'",e_cBankNo,e_cOperNo);
			iRet=GetCount(cSql,cRetCode);
			if(iRet==-1)break;
			else if(iRet==0){memcpy(cRetCode,NORECORD,3);break;}

			$update operator set state="0" where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){memcpy(cRetCode,DBOPERERR,3);break;}
			strcpy(cRetCode,"000");
			break;
		case 6://修改口令
			memset(e_cPassWd,0,sizeof(e_cPassWd));
			memcpy(e_cPassWd,argv[5],8);

			$select count(*) into :e_lCount from operator where bank_no=:e_cBankNo and oper_no=:e_cOperNo and passwd=:e_cPassWd;
			if(SQLCODE){memcpy(cRetCode,DBOPERERR,3);break;}
			if(e_lCount==0){memcpy(cRetCode,PASSWDERR,3);break;}

			memset(e_cPassWd,0,sizeof(e_cPassWd));
			memcpy(e_cPassWd,argv[3],8);
			$update operator set passwd=:e_cPassWd where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){memcpy(cRetCode,DBOPERERR,3);break;}

			strcpy(cRetCode,"000");
			break;
		case 7://查询
			if(GetRight(e_cBankNo1,e_cOperNo1,cRetCode))break;

			sprintf(cSql,"operator where bank_no='%s' and oper_no='%s'",e_cBankNo,e_cOperNo);
			iRet=GetCount(cSql,cRetCode);
			if(iRet==-1)break;
			else if(iRet==0){memcpy(cRetCode,NORECORD,3);break;}

			memset(e_cBankName,0,sizeof(e_cBankName));
			$select name into :e_cBankName from banknet where bank_no=:e_cBankNo;
#ifdef QDCS
	WriteTest("SQLCODE=%d,RetCode=%s,BankName=%s\n",SQLCODE,cRetCode,e_cBankName);
#endif 
			if(SQLCODE!=0 && SQLCODE!=100){memcpy(cRetCode,ERRBANK,3);break;}
			CreateStruct("网点名称",e_cBankName);

			memset(e_cName,0,sizeof(e_cName));
			memset(e_cLevel,0,sizeof(e_cLevel));
			$select oper_name,level into :e_cName,:e_cLevel from operator where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){memcpy(cRetCode,DBOPERERR,3);break;}
			CreateStruct("操作员姓名",e_cName);
			CreateStruct("操作员级别",e_cLevel);

			strcpy(cRetCode,"000");
			break;
		case 8://修改操作员信息	2002/12/23
			if(GetRight(e_cBankNo1,e_cOperNo1,cRetCode))break;

			sprintf(cSql,"operator where bank_no='%s' and oper_no='%s'",e_cBankNo,e_cOperNo);
			iRet=GetCount(cSql,cRetCode);
			if(iRet==-1)break;
			else if(iRet!=1){strcpy(cRetCode,NORECORD);break;}

			$update operator set(oper_name,level)=(:e_cName,:e_cLevel) where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){strcpy(cRetCode,DBOPERERR);break;}

			strcpy(cRetCode,"000");
			break;
		case 9://恢复操作员状态
			memset(e_cPassWd,0,sizeof(e_cPassWd));
			memcpy(e_cPassWd,argv[5],8);

			$select count(*) into :e_lCount from operator where bank_no=:e_cBankNo and oper_no=:e_cOperNo and passwd=:e_cPassWd;
			if(SQLCODE){memcpy(cRetCode,DBOPERERR,3);break;}
			if(e_lCount==0){memcpy(cRetCode,PASSWDERR,3);break;}

			$update operator set state="0" where bank_no=:e_cBankNo and oper_no=:e_cOperNo;
			if(SQLCODE){memcpy(cRetCode,DBOPERERR,3);break;}

			strcpy(cRetCode,"000");
			break;
	}

	CreateStruct("返回码",cRetCode);
	return 0;
}

⌨️ 快捷键说明

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