📄 zxcl.cpp
字号:
////////////////////////////////////////////////////////////////////////////////////////// 最新潮流////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////说明:// (1) DCODE :ZXNY FEE :15.00 // (2) 9193 MSG: NY// CL// 06.07.27 /////////////////////////////////////////////////////////////////////////////////////// #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 "zxcl"//来自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(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 *msgcontent);static int InsertUserCan(char *msisdn,char *msgcontent);//初始化本业务,放入主线程的InitPara()模块中int InitZxcl(){ GetProfileStringMe(INIFILE,"COMMON","TELEPHONE","",service_phone); //从配置文件读取客服电话 return 0;}//本业务入口,放入主线程的 DoThread()模块,在main.h中声明int DoZxcl(){ 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[]="ZXNY"; char feetype[]="03"; float fee=12.0; memset(sql,0,sizeof(sql)); sprintf(sql,"SELECT ID,SRCTERMID,UPPER(MSGCONTENT),LINKID\ FROM COM_RECV RECV\ WHERE RECV.FLAG ='0' AND (UPPER(MSGCONTENT)='NY' OR UPPER(MSGCONTENT)='TDNY' OR MSGCONTENT='0') LIMIT 20"); //puts(sql); if(QuerySQL(sql,&myconn,&res)!=0) { writelog(SELF_TYPE,"查询COM_RECV_SESSION失败"); return -1; } if(res ==NULL) { return -1; } while(row =mysql_fetch_row(res)) { id =atoi(row[0]); strcpy(srctermid,row[1]); strcpy(msg,row[2]); strcpy(linkid,row[3]); //puts(srctermid); //puts(msg); 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失败"); mysql_free_result(res); return -1; } DoScanMsgSession(servicecode,srctermid,msg,dcode,feetype,fee); } mysql_free_result(res); return 0;}//处理COM_RECV_SESSION中取得的信息static int DoScanMsgSession(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,' '); if(*msg=='0') { sprintf(msgcontent,"回复QY测试前世界情缘,回复XY参加校园在线,回复QN参加知心女友,回复YS参加饮食健康,询:02586070434"); } else if(strcmp(msg,"NY")==0) { InsertUser(srctermid,msgcontent); SendUser(srctermid,msgcontent,dcode,fee,srctermid,0); strcpy(linkid,""); sprintf(msgcontent,"夏季是女孩子最喜爱的季节.喜欢的印花、曼妙飞舞的蝴蝶,混合各种面料如锦织和钩花编织,绣花与亮片等奢华细节,那是一种难以忘记的美丽."); SendUser(srctermid,msgcontent,dcode,fee,srctermid,0); return 0; } else if(strcmp(msg,"TDNY")==0) { InsertUserCan(srctermid,msgcontent); } SendUser(srctermid,msgcontent,dcode,fee,srctermid,0); return 0;}//处理定制static int InsertUser(char *msisdn,char *msgcontent){ MYSQL_RES *res=NULL; MYSQL_ROW row; char sql[512]; int flag=0; memset(sql,0,sizeof(sql)); sprintf(sql,"SELECT FLAG FROM USER_ZXCL WHERE MSISDN='%s' LIMIT 1",msisdn); if(QuerySQL(sql,&myconn,&res)!=0) { writelog(SELF_TYPE,"查询USER_ZXCL失败"); return -1; } if(row=mysql_fetch_row(res)) { flag =atoi(row[0]); if(flag ==0) { flag =2; } } mysql_free_result(res); if(flag ==1) { sprintf(msgcontent,"您已经定制了此业务无须再定制,谢谢!"); return 1; } if(flag ==2) { sprintf(sql,"UPDATE USER_ZXCL SET FLAG =1,REG_DATE=now()+0 WHERE MSISDN='%s' ",msisdn); puts(sql); if(DoSQL(sql,&myconn)!=0) { writelog(SELF_TYPE,"写UPDATE 失败"); return 0; } sprintf(msgcontent,"您好,您已成功定制由江苏三棱科技提供的知心女友业务,资费12元/每月,退定方式发送TDNY到9193,客服电话:02586070434"); return 1; } sprintf(sql,"INSERT INTO USER_ZXCL(ICPID,MSISDN,RECV_NUM,REG_DATE,FLAG)\ VALUES('MO','%s',1,now()+0,'1')",\ msisdn ); if(DoSQL(sql,&myconn)!=0) { writelog(SELF_TYPE,"插入USER表失败"); return 0; } sprintf(msgcontent,"您好,您已成功定制由江苏三棱科技提供的知心女友业务,资费12元/每月,退定方式发送TDNY到9193,客服电话:02586070434"); return 0;}//处理取消static int InsertUserCan(char *msisdn,char *msgcontent){ MYSQL_RES *res=NULL; MYSQL_ROW row; char sql[512]; int flag=0; memset(sql,0,sizeof(sql)); sprintf(sql,"SELECT FLAG FROM USER_ZXCL WHERE MSISDN='%s' LIMIT 1",msisdn); if(QuerySQL(sql,&myconn,&res)!=0) { writelog(SELF_TYPE,"查询USER_QGJL失败"); return -1; } if(row=mysql_fetch_row(res)) { flag =atoi(row[0]); } mysql_free_result(res); if(flag ==0) { sprintf(msgcontent,"您已经取消了此业务无须再取消,谢谢!"); return 1; } sprintf(sql,"UPDATE USER_ZXCL SET FLAG =0, CANCEL_DATE=now()+0 WHERE MSISDN='%s' ",msisdn); puts(sql); if(DoSQL(sql,&myconn)!=0) { writelog(SELF_TYPE,"更新USER表失败"); return 0; } sprintf(msgcontent,"您好,您已经成功退定由江苏三棱科技提供的知心女友业务,回复0可查询更多业务,客服电话:02586070434"); 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 + -