📄 srvmainunit.~cpp
字号:
}
}
if(0!=MInDat->Lines->Count)
{
SD1->Title="保存接收数据记录";
SD1->FileName="InDat"
+FormatDateTime("YYYY-mm-dd-hh-mm",Now())
+".log";
if(SD1->Execute())
{
MInDat->Lines->SaveToFile(SD1->FileName);
}
}
}
//---------------------------------------------------------------------------
//执行发送任务
int __fastcall TsmsSrvForm::ProcSendMsg()
{
int nRetCode;
__int64 msgid;
char sservice_id[10],sfee_type[2],sfee_code[6],svalid_time[14],sat_time[14],scharge_mobile[21],ssrc_mobile[21],sdest_mobiles[21],smsgcontent[160];
String str,smsid,service_id,fee_type,fee_code,valid_time,at_time,charge_mobile,src_mobile,dest_mobiles,msgcontent;
int retry,msg_level,fee_user_type,need_response,msgcontentLen;
String TmpStr;
str="select top 5 ID,msg_level,service_id,fee_type,fee_code,valid_time,at_time,fee_user_type,charge_mobile,src_mobile,dest_mobiles,msgcontent,need_response,retry FROM sendwait WHERE (sendtime < CONVERT(DATETIME, '" + DateTimeToStr(Now()) + "', 102) or (sendtime is null)) order by msg_level desc";
QueryOpen(QryUser,&str);
while (!QryUser->Eof)
{
smsid=QryUser->FieldByName("ID")->AsString;
retry=QryUser->FieldByName("retry")->AsInteger;
msg_level=QryUser->FieldByName("msg_level")->AsInteger;
fee_user_type=QryUser->FieldByName("fee_user_type")->AsInteger;
need_response=QryUser->FieldByName("need_response")->AsInteger;
valid_time=QryUser->FieldByName("valid_time")->AsString;
at_time=QryUser->FieldByName("at_time")->AsString;
charge_mobile=QryUser->FieldByName("charge_mobile")->AsString;
src_mobile=QryUser->FieldByName("src_mobile")->AsString;
dest_mobiles=QryUser->FieldByName("dest_mobiles")->AsString;
msgcontent=QryUser->FieldByName("msgcontent")->AsString;
msgcontentLen=msgcontent.Length();
strcpy(svalid_time,valid_time.c_str());
strcpy(sat_time,at_time.c_str());
strcpy(scharge_mobile,charge_mobile.c_str());
strcpy(ssrc_mobile,src_mobile.c_str());
strcpy(sdest_mobiles,dest_mobiles.c_str());
strcpy(smsgcontent,msgcontent.c_str());
fee_code=QryUser->FieldByName("fee_code")->AsString;
strcpy(sfee_code,fee_code.c_str());
fee_type=QryUser->FieldByName("fee_type")->AsString;
strcpy(sfee_type,fee_type.c_str());
service_id=QryUser->FieldByName("service_id")->AsString;
strcpy(sservice_id,service_id.c_str());
//发送短消息
nRetCode = CMPP_Brief_Submit(cMTgw_ip,
iMTport,
cUserName,
cPassWord,
&msgid,
msg_level,
sservice_id,
15,
cSP_Id,
sfee_type,
//"01",
sfee_code,
//"000000",
svalid_time,
sat_time,
0,
0,
fee_user_type,
scharge_mobile,
ssrc_mobile,
1,
sdest_mobiles,
smsgcontent,
msgcontentLen,
need_response);
TmpStr=sservice_id;
OutAllInf(INF_TYPE_OUT,TmpStr);
TmpStr=sfee_type;
OutAllInf(INF_TYPE_OUT,TmpStr);
TmpStr=sfee_code;
OutAllInf(INF_TYPE_OUT,TmpStr);
if(nRetCode==0)
{
OutAllInf(INF_TYPE_OUT,"给手机:"
+dest_mobiles
+"的消息: "
+msgcontent
+",发送成功!");
//删除已经发送的短信
str="delete from sendwait where id = "+smsid;
QueryExe(PubUserExe,&str);
//将已发送短信插入sended表中
str="insert into sended(ID,msg_level,service_id,fee_type,fee_code,valid_time,at_time,fee_user_type,charge_mobile,src_mobile,dest_mobiles,msgcontent,need_response,retry,msgid) values("
+smsid+","
+IntToStr(msg_level)+",'"
+service_id+"','"
+fee_type+"','"
+fee_code+"','"
+valid_time+"','"
+at_time+"',"
+IntToStr(fee_user_type)+",'"
+charge_mobile+"','"
+src_mobile+"','"
+dest_mobiles+"','"
+msgcontent+"',"
+IntToStr(need_response)+","
+IntToStr(retry)+",'"
+IntToStr(msgid)+"')";
QueryExe(PubUserExe,&str);
}
else
{
OutAllInf(INF_TYPE_OUT,"给手机:"
+dest_mobiles
+"的消息: "
+msgcontent
+",发送失败!");
if (retry>3)
{
str="delete from sendwait where id = "+smsid;
QueryExe(PubUserExe,&str);
str="insert into sendederr(ID,msg_level,service_id,fee_type,fee_code,valid_time,at_time,fee_user_type,charge_mobile,src_mobile,dest_mobiles,msgcontent,need_response,retry,msgid) values("
+smsid+","
+IntToStr(msg_level)+",'"
+service_id+"','"
+fee_type+"','"
+fee_code+"','"
+valid_time+"','"
+at_time+"',"
+IntToStr(fee_user_type)+",'"
+charge_mobile+"','"
+src_mobile+"','"
+dest_mobiles+"','"
+msgcontent+"',"
+IntToStr(need_response)+","
+IntToStr(retry)+",'"
+IntToStr(msgid)+"')";
QueryExe(PubUserExe,&str);
}
else
{
str="update sendwait set retry=retry+1 where id = "+smsid;
QueryExe(PubUserExe,&str);
}
return PROC_MIS_ERR;
}
QryUser->Next();
//消息处理
Application->ProcessMessages();
}
return PROC_MIS_OK; //任务执行成功
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::FormClose(TObject *Sender,
TCloseAction &Action)
{
//窗口关闭事件
if (MSysErr->Lines->Count>0)
{
MSysErr->Lines->SaveToFile("SysErr"
+FormatDateTime("YYYY-mm-dd-hh-mm",Now())
+".log");
}
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BtClearLogClick(TObject *Sender)
{
//清除系统运行情况
MSysLog->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BtSaveLogClick(TObject *Sender)
{
if (0==MSysLog->Lines->Count) exit;
SD1->Title="保存系统运行记录";
SD1->FileName="SysInf"
+FormatDateTime("YYYY-mm-dd-hh-mm",Now())
+".log";
if(SD1->Execute())
{
MSysLog->Lines->SaveToFile(SD1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::CBSysInfClick(TObject *Sender)
{
//是否观察发送的数据
if (true==CBSysInf->Checked)
OutSysInfFlag=OUT_INF;
else
OutSysInfFlag=NO_OUT_INF;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::TimerProcTimer(TObject *Sender)
{
TimerProc->Enabled=false;
PorcRT=ProcSendMsg();
TimerProc->Enabled=true;
}
//---------------------------------------------------------------------------
//InfType : 0:系统提示信息 1 :输出信息 2:输入信息
void __fastcall TsmsSrvForm::OutAllInf(int InfType,String str)
{
String instr=FormatDateTime("YYYY-mm-dd hh:mm:ss",Now())+str;
try
{
switch (InfType)
{
case INF_TYPE_SYS:
if (OUT_INF==OutSysInfFlag)
MSysLog->Lines->Append(instr);
break;
case INF_TYPE_OUT:
if (OUT_INF==OutInfFlag)
MOutDat->Lines->Append(instr);
break;
case INF_TYPE_IN:
if (OUT_INF==InInfFlag)
MInDat->Lines->Append(instr);
break;
case INF_TYPE_SYS_ERR:
MSysErr->Lines->Append(instr);
//达到一定行数,自动保存错误日志
if (MSysErr->Lines->Count>MAX_SYS_ERR_NUM)
{
MSysErr->Lines->SaveToFile("SysErr"
+FormatDateTime("YYYY-mm-dd-hh-mm",Now())
+".log");
}
break;
}
}
catch (...)
{
ShowMessage("不能正常输出提示信息!"+str);
}
}
//---------------------------------------------------------------------------
//后台sql语句执行过程
int __fastcall TsmsSrvForm::QueryOpen(TQuery *Qry,String *s)
{
Qry->Close();
Qry->SQL->Clear();
Qry->SQL->Add(*s);
try
{
Qry->Open();
return RT_OK;
}
catch(const Exception &E)
{
//打开Query出错
//OutAllInf(INF_TYPE_SYS_ERR,"执行查询出错!'"+*s+"'"+AnsiString(E.ClassName())+ E.Message);
OutAllInf(INF_TYPE_SYS_ERR,"执行查询出错!");
return RT_ERR;
}
}
//---------------------------------------------------------------------------
//执行 Sql语句(删除、插入)
int __fastcall TsmsSrvForm::QueryExe(TQuery *Qry,String *s)
{
Qry->Close();
Qry->SQL->Clear();
Qry->SQL->Add(*s);
try
{
Qry->ExecSQL();
return RT_OK;
}
catch(const Exception &E)
{
//打开Query出错
//OutAllInf(INF_TYPE_SYS_ERR,"执行SQL出错!"+*s+"'"+AnsiString(E.ClassName())+ E.Message);
OutAllInf(INF_TYPE_SYS_ERR,"执行SQL出错!");
return RT_ERR;
}
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BClearSysErrClick(TObject *Sender)
{
//清除错误日志
MSysErr->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BSaveSysErrClick(TObject *Sender)
{
//保存系统运行情况
//保存至文件
if (0==MSysErr->Lines->Count) exit;
SD1->Title="保存系统运行错误记录";
SD1->FileName="SysErr"
+FormatDateTime("YYYY-mm-dd-hh-mm",Now())
+".log";
if(SD1->Execute())
{
MSysErr->Lines->SaveToFile(SD1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::tlbBackupClick(TObject *Sender)
{
//退出系统
if (MSysErr->Lines->Count>0)
{
MSysErr->Lines->SaveToFile("SysErr"
+FormatDateTime("YYYY-mm-dd-hh-mm",Now())
+".log");
}
CMPP_Disconnect(result);
Close();
}
//---------------------------------------------------------------------------
String __fastcall TsmsSrvForm::Replace(String InStr)
{
int i;
String OutStr;
OutStr=InStr;
i=InStr.Pos("'");
while(i>0)
{
OutStr=InStr.Delete(i,1);
OutStr=InStr.Insert("\"",i);
i=InStr.Pos("'");
};
return OutStr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -