📄 svrf300.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 + -