📄 chance_new.cpp
字号:
#include <stdio.h>#include <string.h>#include <time.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include "../include/define.h"#include "../include/CMPPAPI.h"#include "mysql/mysql.h"#include "../include/sm_tools.h"#include "../include/sm_db.h"#define SELF_TYPE "chance_new"#define INIFILE "../config/sm.ini"extern char db_host[100],db_user[100],db_passwd[100],db_dbname[100];extern MYSQL *myconn;extern char SP_ID[20];static int ScanMsg();static int ScanMsgSession();static int haveuser(char *msisdn);static int havefriend(char *id);static int haverandfriend();static int DoService(char *code,char *ocode,char *content,char *msisdn,char *dcode,float fee);static int SendUser(char *msisdn,char *msg,char *dcode,float fee,int flag);static char g_id[20],g_msisdn[20],g_nickname[20];static int g_recv_num,g_send_num;static char g_oid[20],g_omsisdn[20],g_onickname[20];static int maxid;static char sp_id_extern[20];static char service_phone[20];static char linkid[9];int InitChance_new(){ GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone); srand(time(NULL)); return 0;}int DoChance_new(){ int retval; retval = ScanMsg(); if(retval < 0) { sleep(2); return 0; } retval = ScanMsgSession(); return retval;}static int getrand_num(int max_num){ float retval; int i; retval = (float)(rand())/(float)(RAND_MAX); retval = retval * max_num; i = (int)(retval); if(i == 0) i = 1; return i;}static int getid(){ MYSQL_ROW row; MYSQL_RES *res = NULL; char sql[500]; int id,retval; sprintf(sql,"SELECT ID FROM USER_CHANCE_YF WHERE FLAG='4' ORDER BY ID LIMIT 1"); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查询一失败"); return 0; } if(res == NULL) { return 0; } if( row = mysql_fetch_row(res)) { id=atoi(row[0]); } else { id = 0; } mysql_free_result(res); return id;}//retval 0 - 出错// 1 - 注册免费// 2 - 注册收费// 3 - 已退出// 4 - 找不到// 9 - 二次确认中static int haveuser(char *msisdn){ MYSQL_ROW row; char sql[2000]; MYSQL_RES *res = NULL; int retval,flag,free_flag; memset(sql,0,sizeof(sql)); sprintf(sql,"SELECT IFNULL(MAX(ID),0) FROM USER_CHANCE_YF"); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查询男指令失败"); return 0; } if(res == NULL) { return 0; } if( row = mysql_fetch_row(res)) { maxid = atoi(row[0]); } else { maxid = 0; } mysql_free_result(res); sprintf(sql,"SELECT FLAG,ID,NICKNAME,IFNULL(RECV_NUM,0),IFNULL(SEND_NUM,0),FREE_FLAG FROM USER_CHANCE_YF WHERE MSISDN = '%s'",msisdn); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查询指令失败"); return 0; } if(res == NULL) { return 0; } if(row = mysql_fetch_row(res)) { flag = atoi(row[0]); strcpy(g_id,row[1]); strcpy(g_nickname,row[2]); trim(g_nickname,' '); if(strlen(g_nickname) == 0) strcpy(g_nickname,g_id); g_recv_num = atoi(row[3]); g_send_num = atoi(row[4]); free_flag=atoi(row[5]); mysql_free_result(res); if(flag==1) { if(free_flag==1) { return 1; } else { return 2; } } else if(flag==9) { return 9; } else { return 3; } } else { mysql_free_result(res); return 4; }}//找对方号码//0 - 出错//1 - 没找到//其它 - 找到近似的static int haverandfriend(){ MYSQL_ROW row; MYSQL_RES *res = NULL; char sql[2000]; int retval; sprintf(sql,"SELECT ID,NICKNAME,MSISDN FROM USER_CHANCE_YF WHERE FLAG='1' ORDER BY RAND() LIMIT 1"); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查询一个聊友失败"); return 0; } if(res == NULL) { return 0; } if( row = mysql_fetch_row(res)) { strcpy(g_oid,row[0]); strcpy(g_onickname,row[1]); trim(g_onickname,' '); strcpy(g_omsisdn,row[2]); retval=atoi(g_oid); } else { retval = 1; } mysql_free_result(res); return retval;}//找对方号码//0 - 找不到//1 - 找到static int havefriend(char *id){ MYSQL_ROW row; MYSQL_RES *res = NULL; char sql[2000]; int retval; ltrim(id,'0'); sprintf(sql,"SELECT ID,NICKNAME,MSISDN FROM USER_CHANCE_YF WHERE ID=%s AND FLAG='1'",id); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查询一个聊友失败"); return 0; } if(res == NULL) { return 0; } if( row = mysql_fetch_row(res)) { strcpy(g_oid,row[0]); strcpy(g_onickname,row[1]); trim(g_onickname,' '); strcpy(g_omsisdn,row[2]); if(strcmp(g_oid,id) == 0) { retval = 1; } else { retval = 2; } if(strlen(g_onickname) == 0) { strcpy(g_onickname,g_oid); } } else { retval = 0; } mysql_free_result(res); return retval;}static int ScanMsg(){ char sql[2000]; MYSQL_ROW row; MYSQL_RES *res = NULL; int retval,i,retval_reg; float fee,fee_mon,bitlong,state; int feetype; char id[11],icpid[3],code[11],msisdn[22],dcode[11]; char day[20]; char msg[500]; memset(sql,0,sizeof(sql)); sprintf(sql, "SELECT ID,ICPID,UPPER(SERVICECODE),SRCTERMID,DCODE,FEE_MON,LINKID,BITLONG FROM COM_RECV RECV,COD_SERVICE COD WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='YY' limit 200"); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { writelog(SELF_TYPE,"查询指令失败"); return 0; } if(res == NULL) { return 0; } while( row = mysql_fetch_row(res)) { strcpy(id,row[0]); strcpy(icpid,row[1]); strcpy(code,row[2]); strcpy(msisdn,row[3]); strcpy(dcode,row[4]); fee = atof(row[5]); strcpy(linkid,row[6]); bitlong = atoi(row[7]); sprintf(sql,"UPDATE COM_RECV SET FLAG=1,DEAL_DATE='%s' WHERE ID=%s",getnowdate(day),id); if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"更新recv接受指令表出错!"); return 0; } retval = haveuser(msisdn); if(strcmp(code,"YFCX") == 0) { if(retval == 1) { if(msisdn[2]>'3') //修改于2004.08.30 { sprintf(msg,"您的昵称:%s,编号:%s,共收到聊天信息%d条,发送聊天信息%d条.如果您要修改昵称,请将昵称发到556600002即可!", g_nickname,g_id,g_recv_num,g_send_num); } else { sprintf(msg,"您的昵称:%s,编号:%s,共收到聊天信息%d条,发送聊天信息%d条.如果您要修改昵称,请将昵称发到902000002即可!", g_nickname,g_id,g_recv_num,g_send_num); } strcpy(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee,2); } } else if(strcmp(code,"TCYF") == 0||strcmp(code,"+TUICHUYF") == 0) { retval = haveuser(msisdn); switch(retval) { case 1: case 2: sprintf(sql,"UPDATE USER_CHANCE_YF SET FLAG='0',CANCEL_DATE='%s',POINT_CHANNEL='4',FTP_FLAG='0' WHERE MSISDN='%s' AND FLAG='1'",getnowdate(day),msisdn); if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"删除用户消息表出错!"); return 0; } sprintf(msg,"您的资料删除成功,感谢您的参与!"); sprintf(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee,9); //取消 break; default: sprintf(msg,"您还没注册过,所以不必退出!如需帮助,请拨服务热线%s",service_phone); sprintf(sp_id_extern,""); SendUser(msisdn,msg,dcode,fee,0); break; } } else { switch(retval) { case 1: case 2: if(msisdn[2]>'3') //修改于2004.08.30 { sprintf(msg,"在线的用户有:%d人,把您想说的话发到556600004+编号,例如找第8位聊友(从1开始编号),则发信息到5566000048即可",maxid); } else { sprintf(msg,"在线的用户有:%d人,把您想说的话发到902000004+编号,例如找第8位聊友(从1开始编号),则发信息到9020000048即可",maxid); } sprintf(sp_id_extern,"00004%d",haverandfriend()); SendUser(msisdn,msg,dcode,fee,2); break; case 3: //退出了 if(bitlong==0) //不要二次确认 { sprintf(sql,"UPDATE USER_CHANCE_YF SET REG_DATE='%s',FLAG='1',FREE_FLAG='0',MONTH_FLAG='0' WHERE MSISDN='%s'",getnowdate(day),msisdn); if(DoSQL(sql,&myconn) != 0) { writelog(SELF_TYPE,"新用户GG出错!");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -