?? bet_18_month.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 "bet_18_month"
#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 DoService(char *code,char *content,char *msisdn,char *dcode,float fee,int bitlong);
static int SendUser(char *msisdn,char *msg,char *dcode,float fee,int flag);
static int getrand_num(int max_num);
static char service_phone[20];
static char sp_id_extern[20];
static char linkid[9];
int InitBet18month()
{
GetProfileString(INIFILE,"COMMON","TELEPHONE","",service_phone);
srand(time(NULL));
return 0;
}
int DoBet18month()
{
int retval;
retval = ScanMsg();
if(retval < 0)
{
return 0;
}
return retval;
}
static int ScanMsg()
{
char sql[2000];
MYSQL_ROW row;
MYSQL_RES *res = NULL;
int retval,i,bitlong;
float fee,fee_mon;
int feetype;
char id[11],icpid[3],code[11],msisdn[22],dcode[11],content[500];
char day[20];
char msg[500];
memset(sql,0,sizeof(sql));
sprintf(sql,
"SELECT ID,ICPID,UPPER(SERVICECODE),SRCTERMID,DCODE,FEE_MON,MSGCONTENT,BITLONG,LINKID
FROM COM_RECV RECV,COD_SERVICE COD
WHERE RECV.FLAG='0' AND RECV.SERVICECODE=COD.UCODE AND COD.KIND='18' limit 20");
retval = QuerySQL(sql,&myconn,&res);
if(retval != 0)
{
writelog(SELF_TYPE,"查詢RECV表指令失敗");
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_mon = atof(row[5]);
strcpy(content,row[6]);
bitlong=atoi(row[7]);
strcpy(linkid,row[8]);
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;
}
DoService(code,content,msisdn,dcode,fee_mon,bitlong);
}
mysql_free_result(res);
return 0;
}
static int getrand_num(int max_num)
{
float retval;
int i;
retval = (float)(rand())/(float)(RAND_MAX);
retval = retval * max_num;
i = (int)(retval);
return i;
}
static int DoService(char *code,char *content,char *msisdn,char *dcode,float fee,int bitlong)
{
int type,retval,score;
char msg[500],testmsisdn[22];
char sql[2000],errmsg[20];
char day[20];
int flag,bet_score,num1,num2,num3;
MYSQL_ROW row;
MYSQL_RES *res = NULL;
//判斷用戶是否存在,存在則取出分數,flag=1;不存在則flag=2; 準備注冊:flag=9
//存在已取消:flag=0
sprintf(sql,"SELECT SCORE,FLAG FROM USER_BET WHERE MSISDN='%s'",msisdn);
retval = QuerySQL(sql,&myconn,&res);
if(retval != 0)
{
writelog(SELF_TYPE,"查詢USER_BET表指令失敗");
return 0;
}
if(res == NULL)
{
return 0;
}
if( row = mysql_fetch_row(res))
{
score = atoi(row[0]);
flag=atoi(row[1]);
mysql_free_result(res);
}
else
{
mysql_free_result(res);
flag=2;
}
if (strcmp(code,"DX")==0)
{
if (flag==1) //用戶在用
{
sprintf(msg,"猜大請發DA,猜小請發XI.每次賭注為100,滿一萬個金幣可獲100元話費充值,客服電話:%s",service_phone);
SendUser(msisdn,msg,dcode,fee,2); //包月平時用
return 0;
}
//若無此用戶資料,則先確認,先使FLAG=9
else
{
if(bitlong==0) //不要二次確認
{
if(flag==2)
{
sprintf(sql,"INSERT INTO USER_BET(MSISDN,SCORE,REG_DATE,FLAG,FREE_FLAG)
VALUES('%s',%d,'%s','1','0')",msisdn,2000,getnowdate(day));
}
else
{
sprintf(sql,"UPDATE USER_BET SET SCORE=2000,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,"更新USER_BET表中新用戶注冊出錯!");
return 0;
}
sprintf(msg,"您已成功加入本游戲,猜大請發DA,猜小請發XI.退出請發TCDX.你現在有2000個金幣.客服電話:%s",service_phone);
SendUser(msisdn,msg,dcode,fee,8); //訂購包
return 0;
}
else //要二次確認
{
if(flag==9)
{
sprintf(sql,"UPDATE USER_BET SET SCORE=2000,REG_DATE='%s',FLAG='1',FREE_FLAG='0',MONTH_FLAG='0'
WHERE MSISDN='%s'",getnowdate(day),msisdn);
}
else if(flag==2)
{
sprintf(sql,"INSERT INTO USER_BET(MSISDN,SCORE,REG_DATE,FLAG,FREE_FLAG)
VALUES('%s',%d,'%s','9','0')",msisdn,2000,getnowdate(day));
}
else
{
sprintf(sql,"UPDATE USER_BET SET SCORE=2000,REG_DATE='%s',FLAG='9',FREE_FLAG='0'
WHERE MSISDN='%s'",getnowdate(day),msisdn);
}
if (DoSQL(sql,&myconn)!=0)
{
writelog(SELF_TYPE,"更新USER_BET表中新用戶注冊出錯!");
return 0;
}
if(flag==9)
{
if(msisdn[2]>'4')
{
sprintf(msg,"您已成功加入本游戲,猜大請發DA,猜小請發XI.退出請發TCDX.你現在有2000個金幣.資費:5元/月.客服電話:%s",service_phone);
}
else
{
sprintf(msg,"您已成功加入本游戲,猜大請發DA,猜小請發XI.你現在有2000個金幣.客服電話:%s",service_phone);
}
SendUser(msisdn,msg,dcode,fee,8); //訂購包
return 0;
}
else
{
sprintf(msg,"歡迎您加入,猜大發DA,猜小發XI,滿一萬個金幣可獲100元話費充值,注冊成功即可獲得兩千個金幣.資費5元/月.若確定加入請再發DX");
SendUser(msisdn,msg,dcode,fee,2);
return 0;
}
}
}
}
//打工DG
else if(strcmp(code,"DG") == 0)
{
if (flag==1)
{
if (score >= 500)
{
sprintf(msg,"您還有%d個金幣,沒必要去打工啊!繼續加油!相信你的運氣會很好的!",score);
SendUser(msisdn,msg,dcode,fee,2); //平時包
return 0;
}
score += 100;
sprintf(sql,"UPDATE USER_BET SET SCORE=%d,DOWN_NUM=DOWN_NUM+1,RECENT_DATE='%s'
WHERE MSISDN='%s'",score,getnowdate(day),msisdn);
if(DoSQL(sql,&myconn) != 0)
{
writelog(SELF_TYPE,"更新USER_BET表中打工得分出錯!");
return 0;
}
if(getrand_num(3) == 0)
{
sprintf(msg,"搬運工的工作給您帶來100個金幣的收入,繼續努力,會獲得更多的金幣,人生充滿夢想!");
}
else
{
sprintf(msg,"保險推銷員的工作很適合你,你獲得100個金幣,繼續努力,會獲得更多的金幣,人生充滿夢想!");
}
}
else
{
sprintf(msg,"您還沒注冊,請先發送DX,加入本游戲,滿一萬個金幣可獲100元話費充值.注冊成功即可獲得兩千金幣.客服電話:%s",service_phone);
}
SendUser(msisdn,msg,dcode,fee,2); //平時包
return 0;
}
//討飯TF
else if(strcmp(code,"TF") == 0)
{
if (flag==1)
{
if (score >= 500)
{
sprintf(msg,"您還有%d個金幣,沒必要去討飯啊!繼續加油!相信你的運氣會很好的!",score);
sprintf(sql,"UPDATE USER_BET SET DOWN_NUM=DOWN_NUM+1,RECENT_DATE='%s' WHERE MSISDN='%s'",getnowdate(day),msisdn);
if(DoSQL(sql,&myconn) != 0)
{
writelog(SELF_TYPE,"更新USER_BET表中討飯得分出錯!");
return 0;
}
SendUser(msisdn,msg,dcode,fee,2); //平時包
return 0;
}
else if (score<=0)
{
sprintf(msg,"您已經沒有金幣了,現在您只能去打工,請發送DG.賺取金幣后,繼續本游戲.");
SendUser(msisdn,msg,dcode,fee,2); //平時包
return 0;
}
if(getrand_num(3) == 0)
{
score += 200;
sprintf(msg,"您遇到一位善良而富有的老人,他給了您200個金幣,運氣不算太壞,看來有希望發一筆橫財,繼續努力,人生充滿夢想!");
}
else
{
sprintf(msg,"討飯的生涯真是可憐,一個無賴不僅沒有給你一毛,反而打了你一頓,不過不要灰心,運氣總會好起來,人生充滿希望!");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -