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

📄 u_innerdealpack.pas

📁 软件功能:下载一个网站上所有的彩铃! 铃声下载完后
💻 PAS
📖 第 1 页 / 共 5 页
字号:
Unit U_InnerDealPack;

Interface
Uses
  Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,Menus,
  ComCtrls,ToolWin,ExtCtrls,TeeProcs,TeEngine,Chart,DbChart,TeeFunci,Series,ImgList,
  StdCtrls,ADODB,DBGrids,ScktComp,jpeg,IdUDPServer,IdBaseComponent,IdComponent,
  IdUDPBase,IdUDPClient,idSocketHandle,ComObj,Winsock,U_RecordStruct,U_CS_DealPack;

//包月定制处理函数,返回值0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令
Function BY_Custom_Deal(CustomTableName,ServiceCode:String;Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo):Integer;Overload;
//包月定制处理函数,返回值0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令
Function BY_Custom_Deal(CustomTableName,ServiceCode:String;CmdID:Integer;Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo):Integer;Overload;
//网关上行处理
Procedure CMPP_DeliverDeal(Indeal:TSmgDeliverReq);
//网关下行处理
Procedure CMPP_SubmitDeal(Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo);
//读取所有点拨信息记录
Function ReadAllDialCodeInfo(DialCodeInfoTableName,DBConnectionString:String;ProviderID:String):Boolean;
//读取所有功能消息记录
Function ReadAllFunctionMsg(FunctionMsgTableName,DBConnectionString:String;ProviderID:String):Boolean;
//读取所有功能消息记录
Function ReadAllProviderFunctionMsg(FunctionMsgTableName,DBConnectionString:String;ProviderID:Integer):Boolean;
//获取点拨信息记录
Function GetDialCodeInfoRec(DialCode:String;GateID:Integer):Rec_DialCodeInfo;
//读取功能消息记录
//Function SearchMsg(Title:String;GateID:Integer):String;Overload;
//读取功能消息记录
Function SearchMsg(Title:String;GateID:Integer):TStrings;Overload;
//读取功能消息记录
Function SearchMsg(Title:String;GateID:Integer;OldPattern,NewPattern:Array Of String):TStrings;Overload;
//读取功能消息记录
Function SearchMsg(Title:String;ProviderID,GateID:Integer):TStrings;Overload;
//读取功能消息记录
Function SearchMsg(Title:String;ProviderID,GateID:Integer;OldPattern,NewPattern:Array Of String):TStrings;Overload;
//初始化系统
Procedure InitSystem;
//刷新系统配置
Procedure RefreshSystemSet;
//添加MEMO信息
Function AddMemoMsg(Msg:String):Integer;Overload;
//添加MEMO信息
Function AddMemoMsg(Msg:String;Index:Integer):Integer;Overload;
//添加错误信息
Function AddErrMsg(Msg:String):Integer;Overload;
//添加错误信息
Function AddErrMsg(Msg:String;Index:Integer):Integer;Overload;
//保存MEMO信息
procedure SaveMemo(Memo:TMemo);
//保存错误的Memo信息
procedure SaveErrMemo(Memo:Tmemo);
//重连服务器
Function ReConnectServer(Var Sock:TSocket;StatusBar:TStatusBar):Boolean;
//重连数据库
Function ReConnectDataBase(StatusBar:TStatusBar):Boolean;
//修改用户的定制标志(CustomDealFlag为True是定制操作、为False是取消操作)
Procedure UpdateCustomRec(DBConnectionString,CustomTableName:String;CustomMsgRec:Rec_CustomMsg;CustomDealFlag:Boolean);
//添加用户的定制记录(CustomDealFlag为True是定制操作、为False是请求或取消操作)
Procedure InsertCustomRec(DBConnectionString,CustomTableName:String;CustomMsgRec:Rec_CustomMsg;CustomDealFlag:Boolean);
//将使用我司包月业务的用户设置为包月定制用户
Procedure CustomDeal(DBConnectionString,CustomTableName:String;CustomMsgRec:Rec_CustomMsg;CustomStatus:Integer);
//用户取消定制指令处理过程,即将用户转化为取消的用户
Procedure CancelCustomDeal(DBConnectionString,CustomTableName:String;CustomMsgRec:Rec_CustomMsg;CustomStatus:Integer);
 //获取用户定制状态(返回值为-1是异常,为0是新用户,1是请求用户,2是定制用户,3是退定用户)
Function GetCustomStatus(DBConnectionString,CustomTableName:String;Var CustomMsgRec:Rec_CustomMsg):Integer;
//数据库操作出错处理操作
procedure DBError(E:EOleException);
//发送下行信息
procedure To_Out(Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo;Msg:String);Overload;
//发送下行信息
procedure To_Out(Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo;List:TStrings);Overload;
//发送下行信息
procedure To_Out(Indeal:TSmgDeliverReq;DialCodeInfoRec,ChargeDialCodeInfoRec:Rec_DialCodeInfo;List:TStrings);Overload;
//发送下行信息
procedure To_Out(Indeal:TSmgDeliverReq;DialCodeInfoRec,ChargeDialCodeInfoRec:Rec_DialCodeInfo;ChargeAmount:Integer;List:TStrings);Overload;
//根据用户点拨信息以获取相应的操作指令(返回0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令)
Function GetOperatorCmdFlag(MsgContent:String):Integer;
//获取定制消息的标题
Procedure SetCustomInfoTitle(Var CustomInfoTitle:Array Of String);
//获取收费的点拨号段
Function GetChargeDialCode:String;
//定制消息处理过程
//获取用户定制状态(返回值为-1是异常,为0是新用户,1是请求用户,2是定制用户,3是退定用户)
//0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令
Procedure CustomInfoDeal(Title:String;ProviderChargeType,CustomStatus,CmdID:Integer;Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo);
//队列初始化
Procedure MakeNull(Var Q:Rec_IndealQueue);
//判断队列是否为空
Function Empty(Q:Rec_IndealQueue):Boolean;
//获取队列头信息
Function Front(Q:Rec_IndealQueue):TSmgDeliverReq;
//数据入队
Procedure EnQueue(Indeal:TSmgDeliverReq;Var Q:Rec_IndealQueue);
//数据出队
Procedure DeQueue(Var Q:Rec_IndealQueue);Overload;
//数据出队
Function DeQueue(Var Q:Rec_IndealQueue;Var DealQueueDataFlag:Boolean):TSmgDeliverReq;Overload
//获取业务包月信息
Function GetServiceOpenBYFlag(ServiceBYInfoTableName,DBConnectionString,ProviderID,ServiceCode:String;GateID:Integer):Integer;
//获取业务连接信息
Function GetNoticeInfo(NoticeInfoTableName,DBConnectionString,ProviderID,ServiceCode:String;GateID:Integer):TStrings;
//获取业务追加连接信息
Function GetAppendNoticeInfo(NoticeInfoTableName,DBConnectionString,ProviderID,ServiceCode:String;GateID:Integer):String;
//获取点播号段的前缀
Function GetDialCodePre(DialCode:String):String;
//通过用户的手机号码获取运营商ID
Function GetProviderIDOfPhone(Phone:String):Integer;
//通过用户的手机号码获取运营商ID
Function ProviderIDIsSameType(CurrProviderID,DestProviderID:Integer):Boolean;
//判断手机号码是否正确
Function IsPhone(Phone:String):Boolean;
//初始化短信转发信息记录
Function InitSmsMtSendInfoRec:Rec_Sms_Mt_Send_Info;
//群发信息处理
Function DealSmsMtSendInfo(DBConnectionString,Phone,SrcAddress,MsgContent:String;ProviderID:Integer;DialCodeInfoRec:Rec_DialCodeInfo):String;
//群发列表信息处理
Function DealSmsMtSendListInfo(DBConnectionString,Phone,SrcAddress:String;ProviderID:Integer;List:TStrings;DialCodeInfoRec:Rec_DialCodeInfo):String;
//获取包月定制业务表名
Function GetCustomTableName(DBConnectionString,ServiceCode,ServiceType:String;ProviderID,GateID:Integer):StrArray;
//取消各种业务包月定制处理,操作
Procedure CustomMenu_Deal_CancelBYCustomFlag(DBConnectionString,CustomTableName,Phone,ServiceCode:String;ProviderID,GateID:Integer);
//获取包月定制业务代码
Function GetCustomServiceCode(DBConnectionString,CustomTableName,Phone,ServiceCode:String;ProviderID,GateID:Integer):StrArray;
//获取定制业务信息
Function GetCustomServiceInfo(DBConnectionString,ServiceCode:String;ProviderID,GateID,ServiceType:Integer):Rec_CustomMenu;Overload;
//获取定制业务信息
Function GetCustomServiceInfo(DBConnectionString:String;ProviderID,GateID,ServiceIndex:Integer):Rec_CustomMenu;Overload;
//获取公共业务信息
Function GetPublicServiceInfo(DBConnectionString,ServiceCode:String;ProviderID,GateID,ServiceType:Integer):Rec_PublicServiceInfo;
//获取定制业务最大的索引号
Function GetCustomMaxServiceIndex(DBConnectionString,ServiceCode:String;ProviderID,GateID:Integer):Integer;

implementation
  Uses U_MainForm,U_StringPublicPack,U_DBPublicPack,U_OtherPublicPack;

//包月定制处理函数,返回值0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令
Function BY_Custom_Deal(CustomTableName,ServiceCode:String;Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo):Integer;
Var
  InfoTitle:String;
  CustomStatus,GateID,CmdID:Integer;
  CustomMsgRec:Rec_CustomMsg;
Begin
  With Indeal,DialCodeInfoRec Do
  Begin
    CustomMsgRec.ProviderID:=ProviderID;//运营商ID号
    CustomMsgRec.GateID:=GateID;//网关号码
    CustomMsgRec.Phone:=sSrcAddr;//手机号码
    CustomMsgRec.ServiceCode:=ServiceCode;//业务代码
    CustomMsgRec.InnerCode:=InnerCode;//内部编码
    InfoTitle:=ServiceCode;//信息标题
    //获取用户定制状态(返回值为-1是异常,为0是新用户,1是请求用户,2是定制用户,3是退定用户)
    CustomStatus:=GetCustomStatus(DBConnectionString,CustomTableName,CustomMsgRec);
    //0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令
    CmdID:=GetOperatorCmdFlag(sMsgContent);
    //定制消息处理过程
    CustomInfoDeal(InfoTitle,ProviderChargeType,CustomStatus,CmdID,Indeal,DialCodeInfoRec);
    Case CmdID Of
      1,3:Begin//定制指令处理
        //用户取消定制指令处理过程,即将用户转化为取消的用户
        CustomDeal(DBConnectionString,CustomTableName,CustomMsgRec,CustomStatus);
      End;
      2:Begin//取消定制指令处理
        //用户取消定制指令处理过程,即将用户转化为取消的用户
        CancelCustomDeal(DBConnectionString,CustomTableName,CustomMsgRec,CustomStatus);
      End;
    End;
  End;
  Result:=CmdID;
End;
//包月定制处理函数,返回值0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令
Function BY_Custom_Deal(CustomTableName,ServiceCode:String;CmdID:Integer;Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo):Integer;
Var
  InfoTitle:String;
  CustomStatus,GateID:Integer;
  CustomMsgRec:Rec_CustomMsg;
Begin
  With Indeal,DialCodeInfoRec Do
  Begin
    CustomMsgRec.ProviderID:=ProviderID;//运营商ID号
    CustomMsgRec.GateID:=GateID;//网关号码
    CustomMsgRec.Phone:=sSrcAddr;//手机号码
    CustomMsgRec.ServiceCode:=ServiceCode;//业务代码
    CustomMsgRec.InnerCode:=InnerCode;//内部编码
    InfoTitle:=ServiceCode;//信息标题
    //获取用户定制状态(返回值为-1是异常,为0是新用户,1是请求用户,2是定制用户,3是退定用户)
    CustomStatus:=GetCustomStatus(DBConnectionString,CustomTableName,CustomMsgRec);
    //定制消息处理过程
    CustomInfoDeal(InfoTitle,ProviderChargeType,CustomStatus,CmdID,Indeal,DialCodeInfoRec);
    Case CmdID Of
      1,3:Begin//定制指令处理
        //用户取消定制指令处理过程,即将用户转化为取消的用户
        CustomDeal(DBConnectionString,CustomTableName,CustomMsgRec,CustomStatus);
      End;
      2:Begin//取消定制指令处理
        //用户取消定制指令处理过程,即将用户转化为取消的用户
        CancelCustomDeal(DBConnectionString,CustomTableName,CustomMsgRec,CustomStatus);
      End;
    End;
  End;
  Result:=CmdID;
End;
//网关上行处理
Procedure CMPP_DeliverDeal(Indeal:TSmgDeliverReq);
Var
  MsgID:String;i:Integer;
Begin
  Inc(DelAmount);
  For i:=0 To 15 Do
  MsgID:=MsgID+Indeal.MsgID[i];
  AddMemoMsg('MsgID:'+MsgID);
  AddMemoMsg(Indeal.sDstAddr+''+Indeal.sMsgContent+'('+Indeal.sSrcAddr+')');
  Form_Main.StatusBar.Panels[3].Text:=IntToStr(DelAmount);
End;
//网关下行处理
Procedure CMPP_SubmitDeal(Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo);
Begin
  Inc(SubAmount);
  Form_Main.StatusBar.Panels[5].Text:=IntToStr(SubAmount);
End;
//读取所有点拨信息记录
Function ReadAllDialCodeInfo(DialCodeInfoTableName,DBConnectionString:String;ProviderID:String):Boolean;
Var
  GateIDIndex,NumIndex:integer;
  ADOQuery:TADOQuery;
  SqlStr:String;
Begin
  Try
    Result:=False;
    ADOQuery:=TADOQuery.Create(nil);
    With ADOQuery Do
    Begin
      ConnectionString:=DBConnectionString;
      For GateIDIndex:=1 To MaxGateID Do
      Begin
        SqlStr:='Select Length(S_Code),S_Code,Inner_Code,Fee_Type,Fee_Code,Service_ID From '+DialCodeInfoTableName+' Where Provider_ID=:ProviderID And Gate_ID=:GateID Order By Length(S_Code) Desc';
        Close;Sql.Clear;Sql.Add(SqlStr);
        Parameters.ParamByName('ProviderID').Value:=ProviderID;
        Parameters.ParamByName('GateID').Value:=GateIDIndex;
        Open;
        DialCodeInfoNum[GateIDIndex]:=RecordCount;
        SetLength(AllDialCodeInfo[GateIDIndex],DialCodeInfoNum[GateIDIndex]);
        For NumIndex:=0 to DialCodeInfoNum[GateIDIndex]-1 Do
        Begin
          AllDialCodeInfo[GateIDIndex][NumIndex].DialCode:=Trim(FieldByName('S_Code').AsString);
          AllDialCodeInfo[GateIDIndex][NumIndex].InnerCode:=Trim(FieldByName('Inner_Code').AsString);
          AllDialCodeInfo[GateIDIndex][NumIndex].FeeType:=FieldByName('Fee_Type').AsString;
          AllDialCodeInfo[GateIDIndex][NumIndex].FeeCode:=FieldByName('Fee_Code').AsString;
          AllDialCodeInfo[GateIDIndex][NumIndex].OuterCode:=Trim(FieldByName('Service_ID').AsString);
          Next;
          Application.ProcessMessages;
        End;
        Application.ProcessMessages;
      End;
      AddErrMsg('所有点拨信息记录读取成功!('+DialCodeInfoTableName+')');
      Result:=True;
    End;
  Except
    On E:EOleException Do
    Begin
      E.ErrorCode:=0;
      DBError(E);
    End;
  End;
  ADOQuery.Free;
End;
//读取所有功能消息记录
Function ReadAllFunctionMsg(FunctionMsgTableName,DBConnectionString:String;ProviderID:String):Boolean;
Var
  ADOQuery:TADOQuery;
  SqlStr:String;
  i:integer;
Begin
  Result:=False;
  ADOQuery:=TADOQuery.Create(nil);
  Try
    With ADOQuery Do
    Begin
      ConnectionString:=DBConnectionString;
      SqlStr:='Select * From '+FunctionMsgTableName+' Where Provider_ID=:ProviderID Order By Gate_ID Desc,Title,Order_ID';
      Close;Sql.Clear;Sql.Add(SqlStr);
      Parameters.ParamByName('ProviderID').Value:=ProviderID;
      Open;
      SetLength(AllFunctionMsg,RecordCount);
      If Not Eof Then
      Begin
        For i:=0 To RecordCount-1 Do
        Begin
          AllFunctionMsg[i].Title:=UpperCase(Trim(FieldByName('Title').AsString));
          AllFunctionMsg[i].GateID:=FieldByName('Gate_ID').AsInteger;
          AllFunctionMsg[i].MsgContent:=Trim(FieldByName('Msg_Content').AsString);
          AllFunctionMsg[i].OrderID:=FieldByName('Order_ID').AsInteger;
          Next;
        End;
      End;
      AddErrMsg('所有功能消息记录读取成功!('+FunctionMsgTableName+')');
      Result:=True;
    End;
  Except
    On E:EOleException Do
    Begin
      E.ErrorCode:=0;
      DBError(E);
    End;
  End;

⌨️ 快捷键说明

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