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

📄 userinfo.cpp

📁 一个移动通信用SMPP协议写的.非常经典!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            if (strAnswer == sDate)
            {
                bReal=true;
                int iAnswercount=0,
                    iGrade=0;

                strSQL="select answercount,grade,breal from table_log where handset='"+sim+"'";
                if(!RunSQLNoOver(ADOQuery1,strSQL,true)) return;
                iAnswercount=ADOQuery1->FieldByName("answercount")->AsInteger;
                iGrade=ADOQuery1->FieldByName("grade")->AsInteger;
                int iReal=ADOQuery1->FieldByName("breal")->AsInteger;

                if (1 != iReal)//未回答
                {
                    iAnswercount++;
                    iGrade++;
                    strSQL = "update table_log set answercount="+IntToStr(iAnswercount)+", \
                             grade="+IntToStr(iGrade)+",breal=1 where handset='"+sim+"'";
                    if(!RunSQLNoOver(ADOQuery1,strSQL,false))
                        return;
                }

                AnsiString strTmp = GetDmBySim(sim);
                if (strTmp == "ERROR")
                    return;
                //选出名次
                strSQL = "select count(id) from table_log where grade>"+IntToStr(iGrade);
                if(!RunSQLNoOver(ADOQuery1,strSQL,true))
                    return;

                int iGradecount=ADOQuery1->Fields->Fields[0]->AsInteger+1;

                if(iGradecount<1)
                    iGradecount=1;

                if(1!=iReal)
                    SendDate(sim,"恭喜猜中:)积分["+IntToStr(iGrade)+"]名次["+IntToStr(iGradecount)+"]下条灯谜:"+strTmp);
                else
                    SendDate(sim,"积分["+IntToStr(iGrade)+"]名次["+IntToStr(iGradecount)+"]"+strTmp);

                if (iGrade == 1)
                {
                    if (IfInNumber(sim))
                        SendDate(sim,"恭喜您首次在本系统积分,您已经获得由移动公司提供的动感地带套餐(50元)及一个月短信套餐(20元)一份,请到延安路移动营业厅办理.咨询电话1860 ");
                    else
                        SendDate(sim,"本活动在杭州地区金卡及全球通用户范围内开展,谢谢。");
                }
                break;
            }
        }
        if(!bReal)
        {
            int iAnswercount=0;
            strSQL="select answercount from table_log where handset='"+sim+"'";
            if(!RunSQLNoOver(ADOQuery1,strSQL,true)) return;
            iAnswercount=ADOQuery1->FieldByName("answercount")->AsInteger;
            iAnswercount++;
            strSQL="update table_log set answercount="+IntToStr(iAnswercount)+" where handset='"+sim+"'";
            if(!RunSQLNoOver(ADOQuery1,strSQL,false)) return;
            SendDate(sim,"您猜错了,请再猜,发7查看积分,发8获得谜底~o~");
        }
    }
}
//返回用户谜底
void TUserInfo::AnswerToUser(AnsiString sim)
{
    AnsiString strSQL="select dmid from table_log where handset='"+sim+"'";
    if(!RunSQLNoOver(ADOQuery1,strSQL,true)) return;
    if(ADOQuery1->FieldByName("dmid")->AsString=="")
    {
         AnsiString strTmp=GetDmBySim(sim);
         if(strTmp=="ERROR") return;
         SendDate(sim,strTmp);
    }
    else
    {
        strSQL="select a.answer from table_dm a,table_log b where a.id=b.dmid and b.handset='"+sim+"'";
        AnsiString strMd;
        if(!RunSQLNoOver(ADOQuery1,strSQL,true)) return;
        strMd=ADOQuery1->FieldByName("answer")->AsString;
        AnsiString strTmp=GetDmBySim(sim);
        if(strTmp=="ERROR") return;
        SendDate(sim,"谜底:"+strMd+".下一条灯谜:"+strTmp);
    }
}
//分联通或移动发消息
void TUserInfo::SendDate(AnsiString sim,AnsiString strDate)
{
    if(StrToInt(sim.SubString(1,3))<134)
         MainForm->dtpProtocol->SendOne(strDate,
                                       sim,
                                       MainForm->YClientSocket->struct_linksrvpra.s_ltscc,
                                       true);
    else MainForm->dtpProtocol->SendOne(strDate,
                                       sim,
                                       MainForm->YClientSocket->struct_linksrvpra.s_ydscc,
                                       true);
}
//激活
void TUserInfo::SendAllDm(AnsiString sim)
{
    AnsiString strTmp;
    strTmp=GetDmBySim(sim);
    if(strTmp=="ERROR") return;
    SendDate(sim,strTmp);
}
//群发
void TUserInfo::SendAll(AnsiString sim)
{
    SendDate(sim,n_ceshi->data->Text);
}
//查积分
void TUserInfo::QueryGrade(AnsiString sim)
{
    AnsiString strSQL="select dmid from table_log where handset='"+sim+"'";
    if(!RunSQLNoOver(ADOQuery1,strSQL,true)) return;
    if(ADOQuery1->FieldByName("dmid")->AsString=="")
    {
         AnsiString strTmp=GetDmBySim(sim);
         if(strTmp=="ERROR") return;
         SendDate(sim,strTmp);
         return;
    }
    int iGrade=0;
    strSQL="select grade from table_log where handset='"+sim+"'";
    if(!RunSQLNoOver(ADOQuery1,strSQL,true)) return;
    iGrade=ADOQuery1->FieldByName("grade")->AsInteger;
    //选出名次
    strSQL="select count(id) from table_log where grade>"+IntToStr(iGrade);
    if(!RunSQLNoOver(ADOQuery1,strSQL,true)) return;
    int iGradecount=ADOQuery1->Fields->Fields[0]->AsInteger+1;
    if(iGradecount<1) iGradecount=1;
    SendDate(sim,"您的积分["+IntToStr(iGrade)+"]名次["+IntToStr(iGradecount)+"]");

}
//征谜面
void TUserInfo::AnswerMd(AnsiString sim,AnsiString sBody)
{
    if(sBody.Trim()=="")
    {
        AnsiString strTmp=GetDmBySim(sim);
        if(strTmp=="ERROR") return;
        SendDate(sim,"格式:6+谜面,增灯谜:"+strTmp);
    }
    else
    {
        AnsiString strSQL="insert into table_mm(sdatetime,handset,content) values('"+DateToStr(Date())+"','"+sim+"','"+sBody+"')";
        if(!RunSQLNoOver(ADOQuery1,strSQL,false)) return;
        AnsiString strTmp=GetDmBySim(sim);
        if(strTmp=="ERROR") return;
        SendDate(sim,"谜面征集成功,增灯谜:"+strTmp);
    }
}
//////////////////////////////////////////////////////////////////
//
//函数:    IfInNumber
//
//功能:    判断浙江号段,如果属于浙江号段,返回TRUE
//
//作者:    袁连军
//
//////////////////////////////////////////////////////////////////
bool TUserInfo::IfInNumber(AnsiString sim)
{
     if (sim.SubString(1,2) == "86")
        sim = sim.SubString(3,11);

     int iTmp;
     //1390H1H2H3,1380H1H2H3,1370H1H2H3,1360H1H2H3,1350H1H2H3
     iTmp = StrToInt(sim.SubString(5,3));
     if ((sim.SubString(1,4) == "1390") &&
        (
        ( iTmp == 571) || (iTmp == 581)  ||
        ( iTmp == 671) || (iTmp == 681)  ||
        ((iTmp >= 650) && (iTmp <= 653))
        ))
        return true;
     else if ((sim.SubString(1,4) == "1380") &&
        (
        ((iTmp >= 650) && (iTmp <= 652)) ||
        ((iTmp >= 570) && (iTmp <= 579))
        ))
        return true;
     else if ((sim.SubString(1,4) == "1370") &&
        (
        ( iTmp == 571) || (iTmp == 581)  ||
        ( iTmp == 650) || (iTmp == 651)  ||
        ( iTmp == 671) || (iTmp == 681)  ||
        ( iTmp == 757) || (iTmp == 754)
        ))
        return true;
     else if ((sim.SubString(1,4) == "1360") &&
        (
        ( iTmp == 570) || (iTmp == 571)  ||
        ( iTmp == 580) || (iTmp == 581)  ||
        ( iTmp == 650) || (iTmp == 651)  ||
        ( iTmp == 670) || (iTmp == 680)  ||
        ( iTmp == 671) || (iTmp == 681)  ||
        ((iTmp >= 660) && (iTmp <= 664)) ||
        ((iTmp >= 51 ) && (iTmp <= 54 ))
        ))
        return true;
     else if ((sim.SubString(1,4) == "1350") &&
        (
        ( iTmp == 571) || (iTmp == 581)  ||
        ( iTmp == 671) || (iTmp == 681)
        ))
        return true;
     //139H0H1H2H3,138H0H1H2H3
     iTmp = StrToInt(sim.SubString(4,4));
     if ((sim.SubString(1,3) == "139") &&
        (
        ((iTmp >= 5710) && (iTmp <= 5719)) ||
        ((iTmp >= 5800) && (iTmp <= 5819)) ||
        ((iTmp >= 6710) && (iTmp <= 6719)) ||
        ((iTmp >= 6800) && (iTmp <= 6819))
        ))
        return true;
     else if ((sim.SubString(1,3) == "138") &&
        (
        ((iTmp >= 5710) && (iTmp <= 5719)) ||
        ((iTmp >= 5800) && (iTmp <= 5819)) ||
        ((iTmp >= 6710) && (iTmp <= 6719)) ||
        ((iTmp >= 6800) && (iTmp <= 6819)) ||
        ((iTmp >= 6740) && (iTmp <= 6749)) ||
        ((iTmp >= 1910) && (iTmp <= 1919)) ||
        ((iTmp >= 1945) && (iTmp <= 1949))
        ))
        return true;
     //1351H1H2H3
     iTmp = StrToInt(sim.SubString(5,3));
     if ((sim.SubString(1,4) == "1351") &&
        (
        ( iTmp == 571) || (iTmp == 581)  ||
        ( iTmp == 677) || (iTmp == 685)  ||
        ( iTmp == 687) ||
        ((iTmp >= 670) && (iTmp <= 672)) ||
        ((iTmp >= 680) && (iTmp <= 682))
        ))
        return true;
     //13800XYZ
     iTmp = StrToInt(sim.SubString(6,3));
     if ((sim.SubString(1,4) == "13800") &&
        (
        ( iTmp == 571)
        ))
        return true;
     //40个原有号码段-神州行号段
     //1365H1H2H3
     iTmp = StrToInt(sim.SubString(5,3));
     if ((sim.SubString(1,4) == "1365") &&
        (
        ((iTmp >= 666) && (iTmp <= 669))
        ))
        return true;
     //1366H1H2H3
     iTmp = StrToInt(sim.SubString(5,3));
     if ((sim.SubString(1,4) == "1366") &&
        (
        ((iTmp >= 664) && (iTmp <= 669))
        ))
        return true;
     //13588H1H2
     iTmp = StrToInt(sim.SubString(6,2));
     if ((sim.SubString(1,5) == "13588") &&
        (
        ((iTmp >= 0 ) && (iTmp <= 49)) ||
        ((iTmp >= 70) && (iTmp <= 89))
        ))
        return true;

     return false;
}

⌨️ 快捷键说明

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