📄 exit.cpp
字号:
////////////////////////////////////////////////////////////////////////////////////////// 用户退出信息处理/////////////////////////////////////////////////////////////////////////////////////////说明:// (1) // // CL// 06.07.29 /////////////////////////////////////////////////////////////////////////////////////// #include <stdio.h>#include <string.h>#include <stdlib.h>//#define WINDOWS_NT#ifdef WINDOWS_NT#include <winsock.h>#pragma comment (lib,"ws2_32.lib")#include <mysql.h>#pragma comment(lib,"libmySQL.lib")#include "./include/define.h"#include "./include/sm_tools.h"#include "./include/sm_db.h"#define INIFILE "./config/sm.ini"#define sleep Sleep#else#define GetProfileStringMe GetProfileString#include <unistd.h>#include "mysql/mysql.h"#include "../include/define.h"#include "../include/sm_tools.h"#include "../include/sm_db.h" #define INIFILE "../config/sm.ini" #endif#define DEBUG #define SELF_TYPE "exit"//来自main.cppextern MYSQL *myconn; //主函数已经初始化,所有的模块共用一个长连接 extern char SP_ID[24]; //特服号,在这里是5566//只在本文件中所用的全局变量,用static 修饰:static char service_phone[24]; //客服电话 static char linkid[32];static char msisdntype[4];static char sp_id_extern[24]; //servicecode //只在本文件中所用的函数,用static 修饰:static int ScanMsgSession(); //本模块只是从com_recv_session表中取出相关信息static int DoScanMsgSession(int id,char *servicecode,char *srctermid,char *msg,char *dcode,char *feetype,float fee);static int SendUser(char *msisdn,char *msg,char *dcode,float fee,char *fee_msisdn,int flag);static int InsertUser(char *msisdn,char *msg);static int PutMsg(char *msisdn);//初始化本业务,放入主线程的InitPara()模块中int InitExit(){ GetProfileStringMe(INIFILE,"COMMON","TELEPHONE","",service_phone); //从配置文件读取客服电话 return 0;}//本业务入口,放入主线程的 DoThread()模块,在main.h中声明int DoExit(){ int retval; retval=ScanMsgSession(); //处理COM_RECV_SESSION sleep(1); return retval;} //从COM_RECV_SESSION中取的数据static int ScanMsgSession(){ MYSQL_RES *res =NULL; MYSQL_ROW row; int id; char sql[512]; char servicecode[12]; char srctermid[24]; char msg[256]; char dcode[]="QYZX"; char feetype[]="2"; float fee=2.0; memset(sql,0,sizeof(sql)); sprintf(sql,"SELECT ID,UPPER(MSGCONTENT)\ FROM COM_RECV RECV\ WHERE RECV.FLAG ='0' AND (MSGCONTENT='0000' OR MSGCONTENT='00000') LIMIT 20"); //puts(sql); if(QuerySQL(sql,&myconn,&res)!=0) { writelog(SELF_TYPE,"查询USER_TABLE失败"); return -1; } if(res ==NULL) { return -1; } while(row =mysql_fetch_row(res)) { id =atoi(row[0]); strcpy(msg,row[1]); memset(sql,0,sizeof(sql)); sprintf(sql,"UPDATE COM_RECV SET FLAG=1,DEAL_DATE=now()+0 WHERE ID=%d",id); if(DoSQL(sql,&myconn)!=0) { writelog(SELF_TYPE,"更新COM_RECV_SESSION失败"); return -1; } DoScanMsgSession(id,servicecode,srctermid,msg,dcode,feetype,fee); } mysql_free_result(res); return 0;}static int PutMsg(char *msisdn){ MYSQL_RES *res=NULL; MYSQL_ROW row; char sql[512]; char usertable[256]; memset(usertable,0,sizeof(usertable)); memset(sql,0,sizeof(sql)); sprintf(sql,"SELECT USER_TABLE FROM USER_TABLE WHERE FLAG =0"); //puts(sql); if(QuerySQL(sql,&myconn,&res)!=0) { writelog(SELF_TYPE,"查询USER_TABLE失败"); return -1; } if(res ==NULL) { return -1; } while(row =mysql_fetch_row(res)) { strcpy(usertable,row[0]); //puts(usertable); if(strlen(usertable)>1) { memset(sql,0,sizeof(sql)); sprintf(sql,"UPDATE %s SET FLAG =0 WHERE MSISDN='%s' ",usertable,msisdn); //puts(sql); if(DoSQL(sql,&myconn)!=0) { writelog(SELF_TYPE,"修改usertable flag 失败"); mysql_free_result(res); return -1; } } } mysql_free_result(res); return 0;}//处理COM_RECV_SESSION中取得的信息static int DoScanMsgSession(int id,char *servicecode,char *srctermid,char *msg,char *dcode,char *feetype,float fee){ int num =0; //选手的编号 int total=0; char sql[1024]; char msgcontent[256]; memset(sql,0,sizeof(sql)); memset(msgcontent,0,sizeof(msgcontent)); chop(msg); trim(msg,' '); PutMsg(srctermid); return 0;}static int InsertUser(char *msisdn,char *msg){ char sql[512]; memset(sql,0,sizeof(sql)); sprintf(sql,"INSERT INTO USER_QYZX(ICPID,MSISDN,MSG,REG_DATE)\ VALUES('MO','%s','%s',now()+0)",\ msisdn, msg ); if(DoSQL(sql,&myconn)!=0) { writelog(SELF_TYPE,"插入USER表失败"); return 0; } return 0;}//发送模块static int SendUser(char *msisdn,char *msg,char *dcode,float fee,char *fee_msisdn,int flag){ SEND_STRUC sendstruc; int linkid_flag; memset(&sendstruc,0,sizeof(sendstruc)); if(strcmp(msisdn,fee_msisdn) == 0) { sendstruc.cFeeUserType=0; strcpy(sendstruc.sFeeTerminalID,""); } else { sendstruc.cFeeUserType=3; strcpy(sendstruc.sFeeTerminalID,fee_msisdn); } strcpy(sendstruc.icpid,"MO"); sendstruc.nMsgLevel = 3; strcpy(sendstruc.sServiceID,dcode); sendstruc.nMsgFormat = 15; strcpy(sendstruc.sValidTime,""); strcpy(sendstruc.sAtTime,""); strcpy(sendstruc.sSrcTermID,SP_ID); strcat(sendstruc.sSrcTermID,sp_id_extern); strcpy(sendstruc.sDesTermID,msisdn); sendstruc.sFeeCode = fee; sendstruc.cTpPid = 0; sendstruc.cTpUdhi = 0; strcpy(sendstruc.step,"9"); getnowdate(sendstruc.Send_Date); strcpy(sendstruc.sMsgContent,msg); checksql(sendstruc.sMsgContent); strcpy(sendstruc.linkid,linkid); //strcpy(sendstruc.DesTermIDType,msisdntype); linkid_flag=1; switch(flag) { case 0: //免费、错误信息 strcpy(sendstruc.sServiceID,"FREE"); strcpy(sendstruc.sFeeType,"01"); sendstruc.nNeedReply = 0; break; case 2: //按条点播(收费) strcpy(sendstruc.sFeeType,"02"); sendstruc.nNeedReply = 0; break; case 3: //包月点播(不收费的) strcpy(sendstruc.sFeeType,"03"); sendstruc.nNeedReply = 0; break; case 5: //包月扣费 strcpy(sendstruc.sFeeType,"03"); sendstruc.nNeedReply = 2; break; default: //其它 strcpy(sendstruc.sServiceID,"FREE"); strcpy(sendstruc.sFeeType,"01"); sendstruc.nNeedReply = 0; break; } SendMsg(&sendstruc,&myconn); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -