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

📄 unit1.cpp

📁 基于EMS的短信收发SP程序 主要实现短信的上行和下行,实际应用较高的稳定性
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "EMEATLLib_OCX"
#pragma link "EMESENDERLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   WideString UserName=Edit1->Text;             //用户名
   WideString PassWord=Edit4->Text;             //密码
   WideString ServiceID=Edit8->Text;            //业务代码
   WideString ServiceType="test";               //业务代码一
   WideString IPAddress=Edit2->Text;            //本地ip地址
   String Port=Edit5->Text;                     //本地端口号
   WideString LogIP=Edit3->Text;                //业务服务器ip地址
   String LogPort=Edit6->Text;                  //业务服务器端口
   WideString ServiceType2="123";               //业务代码二

   long Fee=300;    //费率
   long FeeType = 3 ; //默认为1

   long logport;
   logport=StrToInt(LogPort);
   long port;
   port=StrToInt(Port);

   EmeSmsSvr1->Port=port;
   EmeSmsSvr1->LoginSvrIPAddr=LogIP;
   EmeSmsSvr1->LoginSvrPort=logport;
   EmeSmsSvr1->Actived=true;    //激活服务

   EmeSmsSvr1->SetFeeInfo(ServiceID,FeeType,Fee); //费率设置,如果每次业务请求的费率都不同,请用evt对象的属性操作,否则,可用此函数设置。

   try
   {
        EmeSmsSvr1->ServiceLogin(UserName,PassWord,1,ServiceType,ServiceType2,IPAddress,port) ;
   }
   catch(const Exception &E)
   {
      AnsiString str8=E.Message;
      Memo1->Lines->Add(str8);
   }

   //登录信息
   AnsiString str="用户"+UserName+"登录"+"  "+"请求登录服务器:"+IPAddress+"  监听端口:"+Port;
   AnsiString str2="登录服务器:"+LogIP+"  发送申请端口:"+LogPort;
   Memo1->Lines->Clear();
   Memo1->Lines->Add(str);
   Memo1->Lines->Add(str2);
   String dateS;
   dateS = GetLocalTime();
   Memo1->Lines->Add(dateS);
   Timer1->Enabled=true;


}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        Close();        
}
//---------------------------------------------------------------------------
String __fastcall TForm1::GetLocalTime()
{
   AnsiString DateTmp = DateToStr(Date());
   AnsiString TimeTmp = TimeToStr(Time());
   String date;
   date = DateTmp+" "+TimeTmp;
   return date;
}
//--------------------------------------------------------------------------
void __fastcall TForm1::EmeSmsSvr1UserRequest(TObject *Sender,
      Variant *evt)
{
         String Stemp;
         String TeleCode;
         String Log;
         String date;
         String Return_Str;
         //String Return_StrSuccess ="感谢您的参与,您将有机会参加下月16日的抽奖活动!";
         //String Return_StrError = "对不起!无您所投的 %s 选手,正确投票请回复3位数字选手编号。";
         //String Return_StrTwo = "对不起!您已经登记过了,无须再次登记,谢谢您的参与!";
         String LinkID;
         String stmp;
         String ServiceType;
         String First;
         int indx;
         int num;
         int SendType;
         String SourceMobile = Edit7->Text;
         SAFEARRAY *pSa;
	 VARIANT *pVariant;
	 pSa=evt->parray;
	 SafeArrayAccessData(pSa, (void**)&pVariant);
         Stemp=pVariant[emeRequestStr].bstrVal; //获取上行短信信息
         TeleCode=pVariant[emeUserID].bstrVal;  //获取上行短信来源
         LinkID = pVariant[emeLinkID].bstrVal; //获取linkid
         ServiceType = Edit8->Text;
         indx = Stemp.Pos(" ");
         Stemp=Stemp.SubString(indx+1,Stemp.Length());
         Stemp=Stemp.UpperCase();
         Stemp=Stemp.Trim();
         TeleCode=TeleCode.Trim();
         num=Stemp.Pos("+");
         Return_Str ="0578或05781莲都,05782青田,05783缙云,05784龙泉,05785庆元,05786云和,05787景宁,05788松阳,05789遂昌,05780学校。例如:松阳用户,回复05788,以此方法类推";


         int CLength=Stemp.Length();
         if (CLength==4)
         {
                First=Stemp.SubString(0,4);
         }
         else if (CLength==5)
         {
                First=Stemp.SubString(0,5);
         }
         Find_User(TeleCode);
         if (Flag==1)
         {
                 if (Stemp == "QX")
                 {
                        DelRecord(TeleCode);
                        Return_Str = "【移动商讯通】提醒您:您取消了商讯通业务,请至丽水移动商城(中东路148号)办理退卡手续!询13905780800";
                 }
                 else if(Stemp.SubString(0,2)=="SS")
                 {
                        Update_SS(TeleCode);
                        Return_Str = "请您编辑内容:姓名+地址 发送至09166,系统根据您提供的地址5个工作日内给你提供邮寄!如有问题请咨询:13905780800";
                 }
                 else if (num>0)
                 {
                        String Name=Stemp.SubString(0,num-1);
                        String Addr=Stemp.SubString(num+1,Stemp.Length());
                        UpRecord(TeleCode,Name,Addr);
                        Return_Str ="您的姓名:"+Name+"  地址:"+Addr+" 已经被记录,谢谢您的配合!";
                 }
                 else if(Stemp.SubString(0,2)=="BG")
                 {
                        Find_User(TeleCode);
                        Return_Str ="【移动商讯通】地址变更:您旧地址为:"+Address+" 请回复姓名+地址即可完成变更!" ;
                 }

                 else if(Stemp=="8888")
                 {
                        AnsiString DateTmp = Now().FormatString("mm");
                        String date=DateTmp;
                        Return_Str = "【商讯通" + date + "月电子优惠券】凭此短信或生活卡在加盟商户享受会员优惠。详细加盟商户信息请编辑0发送至09166,详询13905780800";
                 }
                 else if(Stemp=="CX")
                 {
                        try
                        {
                                String sql;
                                Query1->Close();
                                Query1->SQL->Clear();
                                sql = "select * from sjuser where sj='" + TeleCode + "'";
                                Query1->SQL->Text = sql;
                                Query1->Active = true;
                                if (!Query1->Eof)
                                {
                                        Return_Str = "姓名:"+Query1->FieldByName("LoginName")->AsString+"  ";
                                        Return_Str = Return_Str+"卡号:"+Query1->FieldByName("CardNumber")->AsString+"  ";
                                        Return_Str = Return_Str+"地址:"+Query1->FieldByName("Address")->AsString+"  ";
                                        Return_Str = Return_Str+"积分:"+Query1->FieldByName("Jifen")->AsString;
                                }
                        }
                        catch(const Exception &E)
                        {
                                AnsiString str8=E.Message;
                                Memo1->Lines->Add(str8);
                        }
                 }
                 else
                 {
                        try
                        {
                                String sql;
                                Query1->Close();
                                Query1->SQL->Clear();
                                sql = "select business from sj114 where userid='" + Stemp + "'";
                                Query1->SQL->Text = sql;
                                Query1->Active = true;
                                if (!Query1->Eof)
                                {
                                        Return_Str = Query1->FieldByName("business")->AsString;
                                }
                                else
                                {
                                        Return_Str = "您已经定制了商讯通,编辑短信8888至09166下载电子会员卡,凭卡享受丽水众多加盟商家提供的优惠服务!详询13905780800";
                                }
                        }
                        catch(const Exception &E)
                        {
                                AnsiString str8=E.Message;
                                Memo1->Lines->Add(str8);
                        }
                 }
         }
         else if (First.Length()>=4)
         {
                if (First.SubString(0,4)=="0578")
                {
                        ReRecord(TeleCode,First);
                        if(Flag==1)
                        {
                                 Return_Str = "【移动商讯通】欢迎加入:请至中东路148号领会员卡(寄送请回复SS),凭卡享受300家商户会员优惠,回复0查询加盟商信息,询13905780800";
                        }
                        else
                        {
                                Return_Str = "您已经定制了商讯通,编辑短信8888至09166下载电子会员卡,凭卡享受丽水众多加盟商家提供的优惠服务!详询13905780800";
                        }
                }
         }


         String str="收到信息:"+ Stemp;
         String str1="发送者:"+TeleCode;
         String str2="回复信息:"+Return_Str;
         Memo1->Lines->Add(" ");
         Memo1->Lines->Add("//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ");
         Memo1->Lines->Add(" ");
         Memo1->Lines->Add(str);
         Memo1->Lines->Add(str1);
         Memo1->Lines->Add(str2);
         String dateS;
         dateS = GetLocalTime();
         Memo1->Lines->Add(dateS);
         AddHistory(TeleCode,Stemp,SourceMobile,"mo");
         AddHistory(TeleCode,Return_Str,SourceMobile,"mt");
         Sleep(2000);
         SendReturnMessage(TeleCode,Return_Str,LinkID,ServiceType);


         return;
}
//---------------------------------------------------------------------------
int __fastcall TForm1::SendReturnMessage(String usid,String message,String LinkId,String ServiceTypeS)
{

         WideString  mobile;
         WideString  messagetmp;
         WideString  IP;
         WideString SourceMobile;
         WideString ServiceType;
         WideString LinkIdtmp;
         String     FeeType_str;
         short      FeeType;
         short      Fee;
         long       port;
         Fee = 300;
         FeeType = 3;
         ServiceType = ServiceTypeS;
         LinkIdtmp = LinkId;
         SourceMobile = Edit7->Text;
         IP = Edit3->Text;
         EmeSmsSender1->SvrAddr = IP;
         port= StrToInt(Edit6->Text);
         EmeSmsSender1->SvrPort = port;
         EmeSmsSender1->SetSourceMobile(SourceMobile);   //设置源号码
         EmeSmsSender1->UserName = Edit1->Text;          //用户名
         EmeSmsSender1->Password = Edit4->Text;          //密码
         EmeSmsSender1->ServiceType = ServiceType ;     //业务类型
         EmeSmsSender1->SetFeeProperty(ServiceType,Fee,FeeType);   //记费设置
         EmeSmsSender1->SetLinkId(LinkIdtmp);
         mobile = usid;
         mobile = Trim(mobile);                 //目的号码
         messagetmp = message;
         messagetmp = Trim(messagetmp);                //信息文本
         EmeSmsSender1->Send(1,mobile,messagetmp);     //发送信息
         return 0;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::DelRecord(String Mobile)
{
       try
        {
                String sql;
                String dateS;
                dateS = GetLocalTime();
                Query1->Close();
                Query1->SQL->Clear();
                sql = "select * from sjuser where sj='" + Mobile + "'";
                Query1->SQL->Text = sql;
                Query1->Active = true;
                if(!Query1->Eof)
                {
                    String addr         =Query1->FieldByName("address")->AsString;
                    String usergroup    =Query1->FieldByName("usergroup")->AsString;
                    String LoginName    =Query1->FieldByName("LoginName")->AsString;
                    String CardNumber   =Query1->FieldByName("CardNumber")->AsString;
                    String JIfen        =Query1->FieldByName("JIfen")->AsString;
                    String Sex          =Query1->FieldByName("Sex")->AsString;

                    Query1->Close();
                    Query1->SQL->Clear();
                    sql = "insert into sjuserqx(sj,usergroup,LoginName,CardNumber,JIfen,Sex,address,insertdate) values('"+
                    Mobile +"','"+ usergroup +"','"+ LoginName +"','"+ CardNumber +"','"+ JIfen +"','"+ Sex +"','"+ addr +"','"+dateS+"')";
                                Query1->SQL->Text = sql;

⌨️ 快捷键说明

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