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

📄 cms_sql.cp

📁 UNIX/LINUX平台下面SMS网管原代码
💻 CP
📖 第 1 页 / 共 5 页
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <memory.h>#include <sys/types.h>#include <fcntl.h>#include "apgloble.h"#include "bms_strcdef.h"#include "bms_micro.h"#define MAX_PS_CID	8999999#define MAX_CO_CID	9999999EXEC SQL INCLUDE SQLCA;EXEC SQL INCLUDE "bms_sql.h";extern void error_handler();extern void warning_handler();extern void notfound_handler();EXEC SQL BEGIN DECLARE SECTION; 	char sqlstmt[ 1024];EXEC SQL END DECLARE SECTION; /***********************************************************检查个人客户是否存在,并取得客户信息Input:	cid, ic_type, ic_noOutput:	cid, ic_type, ic_noMaybe return:	SUCCESS, sqlcode<0 || sqlcode=100***********************************************************/int DB_search_ps_info( char *cid, short ic_type, char *ic_no, PERSON_INFO *ps_info){EXEC SQL BEGIN DECLARE SECTION;    SQL_PERSON_INFO *pSql;EXEC SQL END DECLARE SECTION;    int nCidLen, nNoLen;        EXEC SQL WHENEVER SQLERROR CALL error_handler() ;    EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;    EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;    pSql = ( SQL_PERSON_INFO *)ps_info;    strcpy( pSql->cid, cid);    pSql->ic_type = ic_type;    strcpy( pSql->ic_no, ic_no);    nCidLen = strlen( pSql->cid);    nNoLen = strlen( pSql->ic_no);    if ( nCidLen != 0 && nNoLen != 0 )    {    	bms_trace("Cid and Pid:[%d],[%s],[%s]", pSql->ic_type, pSql->ic_no, pSql->cid);    	EXEC SQL SELECT * INTO :pSql 	 	FROM person_info 	 	WHERE cid = :pSql->cid 	 	AND   ic_type = :pSql->ic_type 	 	AND   ic_no = :pSql->ic_no;    }    else if ( nCidLen != 0 )    {	    	bms_trace("Only Cid:[%s]", pSql->cid);    	EXEC SQL SELECT * INTO :pSql 		 FROM person_info 		 WHERE cid = :pSql->cid;    }    else    {     	bms_trace("Only Pid:[%d],[%s]", pSql->ic_type, pSql->ic_no);	EXEC SQL SELECT * INTO :pSql 		 FROM person_info         	 WHERE ic_type = :pSql->ic_type         	 AND   ic_no = :pSql->ic_no;    }    if ( sqlca.sqlcode != 0 ) return( sqlca.sqlcode);    pub_trim( pSql->zoneno);    pub_trim( pSql->cid);    pub_trim( pSql->name);    pub_trim( pSql->engname);    pub_trim( pSql->engcard);    pub_trim( pSql->ic_no);    pub_trim( pSql->ratepayno);    pub_trim( pSql->insrncno);    pub_trim( pSql->ctrycode);    pub_trim( pSql->mcall_id);    pub_trim( pSql->ncall_id);    pub_trim( pSql->birthday);    pub_trim( pSql->consort);    pub_trim( pSql->interest);    pub_trim( pSql->append_info);    pub_trim( pSql->address1);    pub_trim( pSql->zip);    pub_trim( pSql->address2);    pub_trim( pSql->mobile);    pub_trim( pSql->fax);    pub_trim( pSql->phone1);    pub_trim( pSql->email);    pub_trim( pSql->empdate);    pub_trim( pSql->job_stat);    pub_trim( pSql->unitname);    pub_trim( pSql->phone2);    pub_trim( pSql->postcode);    pub_trim( pSql->banka);    pub_trim( pSql->widno);    pub_trim( pSql->vip);    pub_trim( pSql->remark);    pub_trim( pSql->idexpire);    pub_trim( pSql->reg_teller);    pub_trim( pSql->reg_brch);    pub_trim( pSql->reg_date);    pub_trim( pSql->modi_teller);    pub_trim( pSql->modi_brch);    pub_trim( pSql->modi_date);    return( SUCCESS);}/***********************************************************登记个人档案信息Input:	ps_info, ps_accinfoOutput:Maybe return:	SUCCESS, sqlcode<0 ***********************************************************/int DB_add_ps_info(PERSON_INFO *ps_info,PS_ACCINFO *ps_accinfo,PS_PID *ps_pid){	EXEC SQL BEGIN DECLARE SECTION;	SQL_PERSON_INFO *pSql1;	SQL_PS_ACCINFO  *pSql2;	int  		SerialNo;	EXEC SQL END DECLARE SECTION;	int errcode;	EXEC SQL WHENEVER SQLERROR CALL error_handler() ;	EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;	EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;	pSql1 = (SQL_PERSON_INFO *)ps_info;	pSql2 = (SQL_PS_ACCINFO *)ps_accinfo;	EXEC SQL BEGIN TRANSACTION;	EXEC SQL INSERT INTO person_info VALUES( :pSql1);	if ( sqlca.sqlcode < 0 ) 	{		errcode = sqlca.sqlcode;		EXEC SQL ROLLBACK TRANSACTION;		return( errcode);	}	EXEC SQL INSERT INTO ps_accinfo VALUES( :pSql2);	if ( sqlca.sqlcode < 0 ) 	{		errcode = sqlca.sqlcode;		EXEC SQL ROLLBACK TRANSACTION;		return( errcode);	}	EXEC SQL COMMIT TRANSACTION;	return( SUCCESS);}/***********************************************************自动生成客户号Input:	zoneOutput: cidMaybe return:	SUCCESS, FAILURE, sqlcode<0, ***********************************************************/int DB_get_cid_ps( long zoneno, char *cid) {	EXEC SQL BEGIN DECLARE SECTION;	SQL_CISCFG pSql;	EXEC SQL END DECLARE SECTION;	long nCid;	char tmp[ 11];	char tmpCid[10 + 1], CheckBit = 49;	EXEC SQL WHENEVER SQLERROR CALL error_handler() ;	EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;	EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;	memset( (char *)&pSql, '\0', sizeof( pSql));	EXEC SQL BEGIN TRANSACTION;	pSql.zoneno = 39;	EXEC SQL SELECT * INTO :pSql FROM ciscfg WHERE zoneno = :pSql.zoneno;	if ( sqlca.sqlcode < 0 ) 	{		return( sqlca.sqlcode);	}	if ( sqlca.sqlcode == 100 ) 	{		pSql.brach = 0;		/*CheckBit = PUB_ProCifCusNoVer("1490000000");PENDING */		sprintf( pSql.desedanno, "1490000000%c", CheckBit);		/*CheckBit = PUB_ProCifCusNoVer("1400000000");PENDING */		sprintf( pSql.deseperno, "1400000000%c", CheckBit);		sprintf( pSql.desemgno, "%09ld", 0);		sprintf( pSql.desegrtno, "%09ld", 0);		EXEC SQL INSERT INTO ciscfg VALUES( :pSql);		if ( sqlca.sqlcode < 0 ) 		{			EXEC SQL ROLLBACK TRANSACTION;			return( sqlca.sqlcode);		}	}	memset( tmp, '\0', sizeof( tmp));	memcpy( tmp, pSql.deseperno + 2, 8);	nCid = atol( tmp);	memset( tmpCid, 0, sizeof(tmpCid));	for (; nCid < MAX_PS_CID; ) 	{		/* 根据起始值生成客户号*/		sprintf( tmpCid, "14%08ld", ++nCid);		/* CheckBit = PUB_ProCifCusNoVer(tmpCid);*/		sprintf( pSql.deseperno, "%s%c", tmpCid, CheckBit);		/* 判断是否已被使用*/		EXEC SQL SELECT * FROM person_info WHERE cid =:pSql.deseperno;		if ( sqlca.sqlcode < 0 )  		{			EXEC SQL ROLLBACK TRANSACTION;			return( sqlca.sqlcode);		}		if ( sqlca.sqlcode == SQLNOTFOUND ) 		{			strcpy( cid, pSql.deseperno);			EXEC SQL UPDATE ciscfg 				 Set deseperno = :pSql.deseperno 				 WHERE zoneno = :pSql.zoneno;			if ( sqlca.sqlcode < 0 || sqlca.sqlerrd[2] == 0 )			{				EXEC SQL ROLLBACK TRANSACTION;				return( sqlca.sqlcode);			}			EXEC SQL COMMIT TRANSACTION;			return( SUCCESS);		}	}	EXEC SQL ROLLBACK TRANSACTION;	return( FAILURE);}/***********************************************************检查个人客户基本帐户信息Input:	cidOutput: ps_accinfo	Maybe return:	SUCCESS, FAILURE, sqlcode<0 ***********************************************************/int DB_search_ps_accinfo( char *cid, PS_ACCINFO *ps_info){EXEC SQL BEGIN DECLARE SECTION;    SQL_PS_ACCINFO *pSql;EXEC SQL END DECLARE SECTION;    EXEC SQL WHENEVER SQLERROR CALL error_handler() ;    EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;    EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;    pSql = ( SQL_PS_ACCINFO *)ps_info;    strcpy( pSql->cid, cid);EXEC SQL SELECT * INTO :pSql FROM ps_accinfo WHERE cid = :pSql->cid;    if ( sqlca.sqlcode < 0 ) return( sqlca.sqlcode);    if ( sqlca.sqlcode == SQLNOTFOUND ) return( FAILURE);    return( SUCCESS);}/***********************************************************修改个人客户档案信息Input:	cid, ps_infoOutput: Maybe return:	SUCCESS, sqlcode<0 ***********************************************************/int DB_modi_ps_info( char *cid, PERSON_INFO *ps_info){EXEC SQL BEGIN DECLARE SECTION;    SQL_PERSON_INFO *pSql;EXEC SQL END DECLARE SECTION;        EXEC SQL WHENEVER SQLERROR CALL error_handler() ;        EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;        EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;    pSql = ( SQL_PERSON_INFO *)ps_info;    strcpy( pSql->cid, cid);EXEC SQL UPDATE person_info Set name=:pSql->name, sex=:pSql->sex,         ratepayno=:pSql->ratepayno, insureno=:pSql->insrncno,        birthday=:pSql->birthday, marriage=:pSql->marriage, study=:pSql->study,	techlvl=:pSql->techlvl, consort=:pSql->consort, 	address1=:pSql->address1, zip=:pSql->zip, 	mobile=:pSql->mobile, phone1=:pSql->phone1,        email=:pSql->email, empdate=:pSql->empdate, unitname=:pSql->unitname,        utypeid=:pSql->utypeid, phone2=:pSql->phone2, postcode=:pSql->postcode,        banka=:pSql->banka, widno=:pSql->widno, vip=:pSql->vip,        remark=:pSql->remark, idexpire=:pSql->idexpire,          modi_teller=:pSql->modi_teller, modi_brch=:pSql->modi_brch,        modi_date=:pSql->modi_date ,pacetype =:pSql->pacetype,ctrycode=:pSql->ctrycode,job=:pSql->job        WHERE cid = :pSql->cid;    if ( sqlca.sqlcode < 0 || sqlca.sqlerrd[ 2] == 0 ) return( sqlca.sqlcode);    return( SUCCESS); }/***********************************************************注销个人档案信息修改档案状态, 删除所有帐号, 代理信息,关联信息Input:	cid, ps_infoOutput: 无Maybe return:	SUCCESS, sqlcode<0***********************************************************/int DB_del_ps_info( char *cid, PERSON_INFO *ps_info){EXEC SQL BEGIN DECLARE SECTION;    SQL_PERSON_INFO *pSql;EXEC SQL END DECLARE SECTION;    int errcode;        EXEC SQL WHENEVER SQLERROR CALL error_handler() ;        EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;        EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;    pSql = ( SQL_PERSON_INFO *)ps_info;    strcpy( pSql->cid, cid);    pSql->status = STATUS_DISA;    /* 删除所有帐号, 代理信息,关联信息*/EXEC SQL BEGIN TRANSACTION;EXEC SQL Delete FROM ps_acc_reg WHERE cid = :pSql->cid;    if ( sqlca.sqlcode < 0 ) {        errcode = sqlca.sqlcode;EXEC SQL ROLLBACK TRANSACTION;        return( errcode);    }EXEC SQL Delete FROM ps_proxyauth WHERE cid = :pSql->cid;    if ( sqlca.sqlcode < 0 ) {        errcode = sqlca.sqlcode;EXEC SQL ROLLBACK TRANSACTION;        return( errcode);    }EXEC SQL Delete FROM ps_relinfo WHERE cid = :pSql->cid;    if ( sqlca.sqlcode < 0 ) {        errcode = sqlca.sqlcode;EXEC SQL ROLLBACK TRANSACTION;        return( errcode);    }EXEC SQL UPDATE person_info Set status = :pSql->status,     modi_teller = :pSql->modi_teller, modi_brch = :pSql->modi_brch,     modi_date = :pSql->modi_date WHERE cid = :pSql->cid;    if ( sqlca.sqlcode < 0 ) {        errcode = sqlca.sqlcode;EXEC SQL ROLLBACK TRANSACTION;        return( errcode);    }EXEC SQL UPDATE ps_accinfo Set status = :pSql->status, acct_num = 0,     detail_num = 0, modi_teller = :pSql->modi_teller,     modi_brch = :pSql->modi_brch, modi_date = :pSql->modi_date     WHERE cid = :pSql->cid;    if ( sqlca.sqlcode < 0 ) {        errcode = sqlca.sqlcode;EXEC SQL ROLLBACK TRANSACTION;        return( errcode);    }EXEC SQL COMMIT TRANSACTION;    return( SUCCESS);}/***********************************************************个人客户密码重置Input: cid, ps_accinfoOutput: 无Maybe return:	SUCCESS, sqlcode<0***********************************************************/int DB_set_ps_passwd( char *cid, PS_ACCINFO *ps_accinfo){EXEC SQL BEGIN DECLARE SECTION;    SQL_PS_ACCINFO *pSql;EXEC SQL END DECLARE SECTION;        EXEC SQL WHENEVER SQLERROR CALL error_handler() ;        EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;        EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;    pSql = ( SQL_PS_ACCINFO *)ps_accinfo;    strcpy( pSql->cid, cid);EXEC SQL UPDATE ps_accinfo Set ppasswd=:pSql->ppasswd, spasswd=:pSql->spasswd,        modi_date=:pSql->modi_date, modi_teller=:pSql->modi_teller,        modi_brch=:pSql->modi_brch WHERE cid = :pSql->cid;    if ( sqlca.sqlcode < 0 || sqlca.sqlerrd[ 2] == 0 ) return( sqlca.sqlcode);    return( SUCCESS);}/***********************************************************注销个人档案信息重新登记Input:	ps_info, ps_accinfo Output: Maybe return:	SUCCESS, sqlcode ***********************************************************/int DB_readd_ps_info( char *cid, PERSON_INFO *ps_info, PS_ACCINFO *ps_accinfo){EXEC SQL BEGIN DECLARE SECTION;    SQL_PERSON_INFO *pSql1;    SQL_PS_ACCINFO *pSql2;EXEC SQL END DECLARE SECTION;    int errcode;        EXEC SQL WHENEVER SQLERROR CALL error_handler() ;        EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ;        EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ;    pSql1 = ( SQL_PERSON_INFO *)ps_info;    pSql2 = ( SQL_PS_ACCINFO *)ps_accinfo;    strcpy( pSql1->cid, cid);    strcpy( pSql2->cid, cid);    pSql1->status = STATUS_ACTIVE;    pSql2->status = STATUS_ACTIVE;EXEC SQL BEGIN TRANSACTION;EXEC SQL UPDATE person_info Set name=:pSql1->name, sex=:pSql1->sex,         ratepayno=:pSql1->ratepayno, insureno=:pSql1->insrncno,        birthday=:pSql1->birthday, marriage=:pSql1->marriage,         study=:pSql1->study, techlvl=:pSql1->techlvl,         consort=:pSql1->consort, address1=:pSql1->address1,        zip=:pSql1->zip, mobile=:pSql1->mobile, phone1=:pSql1->phone1,        email=:pSql1->email, empdate=:pSql1->empdate, unitname=:pSql1->unitname,        utypeid=:pSql1->utypeid, phone2=:pSql1->phone2,         postcode=:pSql1->postcode, banka=:pSql1->banka,         widno=:pSql1->widno, vip=:pSql1->vip, remark=:pSql1->remark,         idexpire=:pSql1->idexpire, modi_teller=:pSql1->modi_teller,         modi_brch=:pSql1->modi_brch, modi_date=:pSql1->modi_date,        status=:pSql1->status WHERE cid = :pSql1->cid;

⌨️ 快捷键说明

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