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

📄 u_innerdealpack.pas

📁 软件功能:下载一个网站上所有的彩铃! 铃声下载完后
💻 PAS
📖 第 1 页 / 共 5 页
字号:
      ConnectionString:=DBConnectionString;
      If CustomDealFlag Then//定制处理
      Begin
        If ProviderChargeType=1 Then
        Begin
          StrSql:='Insert Into '+CustomTableName+'(Provider_ID,Gate_ID,User_Msisdn,Item_ID,Inner_Code,Custom_Date,Custom_Status,Cancel_Status,FirstCustom_Date,LastUseDate_Date,User_Type,Custom_Src,Charge_Date)';
          StrSql:=StrSql+' Values(:ProviderID,:GateID,:Phone,:Service_Code,:Inner_Code,SysDate,1,1,SysDate,SysDate,0,1,SysDate)';
        End
        Else
        Begin
          StrSql:='Insert Into '+CustomTableName+'(Provider_ID,Gate_ID,User_Msisdn,Item_ID,Inner_Code,Custom_Date,Custom_Status,Cancel_Status,FirstCustom_Date,LastUseDate_Date,User_Type,Custom_Src)';
          StrSql:=StrSql+' Values(:ProviderID,:GateID,:Phone,:Service_Code,:Inner_Code,SysDate,1,1,SysDate,SysDate,0,1)';
        End;
      End
      Else//请求或取消处理
      Begin
        StrSql:='Insert Into '+CustomTableName+'(Provider_ID,Gate_ID,User_Msisdn,Item_ID,Inner_Code,Custom_Status,Cancel_Status,LastUseDate_Date,User_Type,Custom_Src)';
        StrSql:=StrSql+' Values(:ProviderID,:GateID,:Phone,:Service_Code,:Inner_Code,0,1,SysDate,0,1)';
      End;
      Close;SQL.Clear;SQL.Add(StrSql);
      Parameters.ParamByName('ProviderID').Value:=ProviderID;//运营尚ID号码
      Parameters.ParamByName('GateID').Value:=GateID;//网关号码
      Parameters.ParamByName('Phone').Value:=Phone;//手机号码
      Parameters.ParamByName('Service_Code').Value:=ServiceCode;//业务代码
      Parameters.ParamByName('Inner_Code').Value:=InnerCode;//内部编码
      ExecSQL;
    End;
  Except
    On E:EOleException Do
    Begin
      E.ErrorCode:=0;
      DBError(E);
    End;
  End;
  ADOQuery.Free;
End;
//用户取消定制指令处理过程,即将用户转化为取消的用户
Procedure CustomDeal(DBConnectionString,CustomTableName:String;CustomMsgRec:Rec_CustomMsg;CustomStatus:Integer);
Begin
  If CustomStatus In [1,2,3] Then
    //进行定制处理
    UpdateCustomRec(DBConnectionString,CustomTableName,CustomMsgRec,True)
  Else If CustomStatus In [0] Then
    //初始设置成定制用户
    InsertCustomRec(DBConnectionString,CustomTableName,CustomMsgRec,True)
  Else Exit;
End;
//用户取消定制指令处理过程,即将用户转化为取消的用户
Procedure CancelCustomDeal(DBConnectionString,CustomTableName:String;CustomMsgRec:Rec_CustomMsg;CustomStatus:Integer);
Begin
  If CustomStatus In [2] Then
    //进行取消定制处理
    UpdateCustomRec(DBConnectionString,CustomTableName,CustomMsgRec,False)
  Else If CustomStatus In [0] Then
    //初始设置成请求用户
    InsertCustomRec(DBConnectionString,CustomTableName,CustomMsgRec,False)
  Else Exit;
End;
//获取用户定制状态(返回值为-1是异常,为0是新用户,1是请求用户,2是定制用户,3是退定用户)
Function GetCustomStatus(DBConnectionString,CustomTableName:String;Var CustomMsgRec:Rec_CustomMsg):Integer;
Var
  ADOQuery:TADOQuery;
  StrSql:String;
Begin
  Try
    Result:=0;//新用户标志
    ADOQuery:=TADOQuery.Create(nil);
    With ADOQuery,CustomMsgRec Do
    Begin
      ConnectionString:=DBConnectionString;
      StrSql:='Select * From '+CustomTableName+' Where User_Msisdn=:Phone And Item_ID=:ServiceCode';
      Close;SQL.Clear;SQL.Add(StrSql);
      Parameters.ParamByName('Phone').Value:=Phone;
      Parameters.ParamByName('ServiceCode').Value:=ServiceCode;
      Open;
      If Not Eof Then
      Begin
        Result:=1;//请求用户标志
        CustomFlag:=FieldByName('Custom_Status').AsInteger;//定制标志
        CancelFlag:=FieldByName('Cancel_Status').AsInteger;//取消标志
        FirstCustomTime:=FieldByName('FirstCustom_Date').AsString;//首次定制时间
        UserType:=FieldByName('User_Type').AsInteger;//用户类型
        If (CustomFlag>0) And (CancelFlag=1) Then Result:=2//定制用户标志
        Else If (CustomFlag>0) And (CancelFlag=0) Then Result:=3;//退定用户标志
      End;
    End;
  Except
    On E:EOleException Do
    Begin
      //异常标志
      Result:=-1;E.ErrorCode:=0;DBError(E);
    End;
  End;
  ADOQuery.Free;
End;
//数据库操作出错处理操作
procedure DBError(E:EOleException);
Begin
  Beep();Beep();
  //DBADOConnection.Connected:=False;
  //LOGDBADOConnection.Connected:=False;
  //StopReconnectFlag:=False;
  AddErrMsg('数据库脚本运行错误:'+E.Message);
End;
{
On E:EOleException Do
Begin
  E.ErrorCode:=0;
  DBError(E);
End;
}
//发送下行信息
procedure To_Out(Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo;Msg:String);
Var
  Info:String;
  rSmgSubmitReq:TSmgSubmitReq;
Begin
  CMPP_SubmitDeal(Indeal,DialCodeInfoRec);
  Info:=Msg;Info:=GetSomeWordFromStr(Info,70);//截取字符串前70个字
  ZeroMemory(@rSmgSubmitReq,SizeOf(TSmgSubmitReq));
  rSmgSubmitReq.byActionType:=0;//动作类型
  CopyMemory(@rSmgSubmitReq.MsgID,@Indeal.MsgID,SizeOf(Indeal.MsgID));//消息ID
  CopyMemory(@rSmgSubmitReq.LinkID,@Indeal.LinkID,SizeOf(Indeal.LinkID));//连结ID
  rSmgSubmitReq.iMsgCounts:=1;//消息数
  rSmgSubmitReq.iMsgNumber:=1;//消息号
  rSmgSubmitReq.byMsgFmt:=15;//消息格式
  CopyMemory(@rSmgSubmitReq.FeeType,@DialCodeInfoRec.FeeType[1],SizeOf(DialCodeInfoRec.FeeType)-1);//资费类型
  CopyMemory(@rSmgSubmitReq.FeeCode,@DialCodeInfoRec.FeeCode[1],SizeOf(DialCodeInfoRec.FeeCode)-1);//资费代码
  rSmgSubmitReq.byFeeUserType:=0;//计费类型
  CopyMemory(@rSmgSubmitReq.sServiceID,@DialCodeInfoRec.OuterCode[1],SizeOf(DialCodeInfoRec.OuterCode)-1);//外部编码
  CopyMemory(@rSmgSubmitReq.sSrcAddr,@Indeal.sDstAddr,SizeOf(Indeal.sDstAddr));//目标地址(如101097797等)
  CopyMemory(@rSmgSubmitReq.sDstAddr,@Indeal.sSrcAddr,SizeOf(Indeal.sSrcAddr));//手机号码
  rSmgSubmitReq.iMsgLen:=Length(Info);//消息长度
  StrpCopy(rSmgSubmitReq.sMsgContent,Info);//消息内容
  AddMemoMsg(Info+'('+DialCodeInfoRec.OuterCode+')');
  If Not (SendSubmitReq(MsgID,Form_Main.Sock,rSmgSubmitReq)=SOCKET_ERROR) Then
  Begin
    Inc(MsgID);
  End Else Begin
    AddErrMsg('发送失败');
  End;
End;
//发送下行信息
procedure To_Out(Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo;List:TStrings);
Var
  i:Integer;
  Info:String;
  rSmgSubmitReq:TSmgSubmitReq;
Begin
  If List.Count=0 Then Exit;
  For i:=0 To List.Count-1 Do
  Begin
    CMPP_SubmitDeal(Indeal,DialCodeInfoRec);
    Info:=List.Strings[i];Info:=GetSomeWordFromStr(Info,70);//截取字符串前70个字
    ZeroMemory(@rSmgSubmitReq,SizeOf(TSmgSubmitReq));
    rSmgSubmitReq.byActionType:=0;//动作类型
    CopyMemory(@rSmgSubmitReq.MsgID,@Indeal.MsgID,SizeOf(Indeal.MsgID));//消息ID
    CopyMemory(@rSmgSubmitReq.LinkID,@Indeal.LinkID,SizeOf(Indeal.LinkID));//连结ID
    rSmgSubmitReq.iMsgCounts:=1;//消息数
    rSmgSubmitReq.iMsgNumber:=1;//消息号
    rSmgSubmitReq.byMsgFmt:=15;//消息格式
    CopyMemory(@rSmgSubmitReq.FeeType,@DialCodeInfoRec.FeeType[1],SizeOf(DialCodeInfoRec.FeeType)-1);//资费类型
    CopyMemory(@rSmgSubmitReq.FeeCode,@DialCodeInfoRec.FeeCode[1],SizeOf(DialCodeInfoRec.FeeCode)-1);//资费代码
    rSmgSubmitReq.byFeeUserType:=0;//计费类型
    CopyMemory(@rSmgSubmitReq.sServiceID,@DialCodeInfoRec.OuterCode[1],SizeOf(DialCodeInfoRec.OuterCode)-1);//外部编码
    CopyMemory(@rSmgSubmitReq.sSrcAddr,@Indeal.sDstAddr,SizeOf(Indeal.sDstAddr));//目标地址(如101097797等)
    CopyMemory(@rSmgSubmitReq.sDstAddr,@Indeal.sSrcAddr,SizeOf(Indeal.sSrcAddr));//手机号码
    rSmgSubmitReq.iMsgLen:=Length(Info);//消息长度
    StrpCopy(rSmgSubmitReq.sMsgContent,Info);//消息内容
    AddMemoMsg(Info+'('+DialCodeInfoRec.OuterCode+')');
    If Not (SendSubmitReq(MsgID,Form_Main.Sock,rSmgSubmitReq)=SOCKET_ERROR) Then Inc(MsgID) Else AddErrMsg('发送失败');
  End;
  List.Free;
End;
//发送下行信息
procedure To_Out(Indeal:TSmgDeliverReq;DialCodeInfoRec,ChargeDialCodeInfoRec:Rec_DialCodeInfo;List:TStrings);
Var
  i:Integer;
  Info:String;
  rSmgSubmitReq:TSmgSubmitReq;
  SubmitDialCodeInfoRec:Rec_DialCodeInfo;
Begin
  If List.Count=0 Then Exit;
  For i:=0 To List.Count-1 Do
  Begin
    If i=0 Then SubmitDialCodeInfoRec:=ChargeDialCodeInfoRec Else SubmitDialCodeInfoRec:=DialCodeInfoRec;
    CMPP_SubmitDeal(Indeal,SubmitDialCodeInfoRec);
    Info:=List.Strings[i];Info:=GetSomeWordFromStr(Info,70);//截取字符串前70个字
    ZeroMemory(@rSmgSubmitReq,SizeOf(TSmgSubmitReq));
    rSmgSubmitReq.byActionType:=0;//动作类型
    CopyMemory(@rSmgSubmitReq.MsgID,@Indeal.MsgID,SizeOf(Indeal.MsgID));//消息ID
    CopyMemory(@rSmgSubmitReq.LinkID,@Indeal.LinkID,SizeOf(Indeal.LinkID));//连结ID
    rSmgSubmitReq.iMsgCounts:=1;//消息数
    rSmgSubmitReq.iMsgNumber:=1;//消息号
    rSmgSubmitReq.byMsgFmt:=15;//消息格式
    CopyMemory(@rSmgSubmitReq.FeeType,@SubmitDialCodeInfoRec.FeeType[1],SizeOf(SubmitDialCodeInfoRec.FeeType)-1);//资费类型
    CopyMemory(@rSmgSubmitReq.FeeCode,@SubmitDialCodeInfoRec.FeeCode[1],SizeOf(SubmitDialCodeInfoRec.FeeCode)-1);//资费代码
    rSmgSubmitReq.byFeeUserType:=0;//计费类型
    CopyMemory(@rSmgSubmitReq.sServiceID,@SubmitDialCodeInfoRec.OuterCode[1],SizeOf(SubmitDialCodeInfoRec.OuterCode)-1);//外部编码
    CopyMemory(@rSmgSubmitReq.sSrcAddr,@Indeal.sDstAddr,SizeOf(Indeal.sDstAddr));//目标地址(如101097797等)
    CopyMemory(@rSmgSubmitReq.sDstAddr,@Indeal.sSrcAddr,SizeOf(Indeal.sSrcAddr));//手机号码
    rSmgSubmitReq.iMsgLen:=Length(Info);//消息长度
    StrpCopy(rSmgSubmitReq.sMsgContent,Info);//消息内容
    AddMemoMsg(Info+'('+SubmitDialCodeInfoRec.OuterCode+')');
    If Not (SendSubmitReq(MsgID,Form_Main.Sock,rSmgSubmitReq)=SOCKET_ERROR) Then Inc(MsgID) Else AddErrMsg('发送失败');
  End;
  List.Free;
End;
//发送下行信息
procedure To_Out(Indeal:TSmgDeliverReq;DialCodeInfoRec,ChargeDialCodeInfoRec:Rec_DialCodeInfo;ChargeAmount:Integer;List:TStrings);
Var
  i:Integer;
  Info:String;
  rSmgSubmitReq:TSmgSubmitReq;
  SubmitDialCodeInfoRec:Rec_DialCodeInfo;
Begin
  If List.Count=0 Then Exit;
  For i:=0 To List.Count-1 Do
  Begin
    If i<ChargeAmount Then SubmitDialCodeInfoRec:=ChargeDialCodeInfoRec Else SubmitDialCodeInfoRec:=DialCodeInfoRec;
    CMPP_SubmitDeal(Indeal,SubmitDialCodeInfoRec);
    Info:=List.Strings[i];Info:=GetSomeWordFromStr(Info,70);//截取字符串前70个字
    ZeroMemory(@rSmgSubmitReq,SizeOf(TSmgSubmitReq));
    rSmgSubmitReq.byActionType:=0;//动作类型
    CopyMemory(@rSmgSubmitReq.MsgID,@Indeal.MsgID,SizeOf(Indeal.MsgID));//消息ID
    CopyMemory(@rSmgSubmitReq.LinkID,@Indeal.LinkID,SizeOf(Indeal.LinkID));//连结ID
    rSmgSubmitReq.iMsgCounts:=1;//消息数
    rSmgSubmitReq.iMsgNumber:=1;//消息号
    rSmgSubmitReq.byMsgFmt:=15;//消息格式
    CopyMemory(@rSmgSubmitReq.FeeType,@SubmitDialCodeInfoRec.FeeType[1],SizeOf(SubmitDialCodeInfoRec.FeeType)-1);//资费类型
    CopyMemory(@rSmgSubmitReq.FeeCode,@SubmitDialCodeInfoRec.FeeCode[1],SizeOf(SubmitDialCodeInfoRec.FeeCode)-1);//资费代码
    rSmgSubmitReq.byFeeUserType:=0;//计费类型
    CopyMemory(@rSmgSubmitReq.sServiceID,@SubmitDialCodeInfoRec.OuterCode[1],SizeOf(SubmitDialCodeInfoRec.OuterCode)-1);//外部编码
    CopyMemory(@rSmgSubmitReq.sSrcAddr,@Indeal.sDstAddr,SizeOf(Indeal.sDstAddr));//目标地址(如101097797等)
    CopyMemory(@rSmgSubmitReq.sDstAddr,@Indeal.sSrcAddr,SizeOf(Indeal.sSrcAddr));//手机号码
    rSmgSubmitReq.iMsgLen:=Length(Info);//消息长度
    StrpCopy(rSmgSubmitReq.sMsgContent,Info);//消息内容
    AddMemoMsg(Info+'('+SubmitDialCodeInfoRec.OuterCode+')');
    If Not (SendSubmitReq(MsgID,Form_Main.Sock,rSmgSubmitReq)=SOCKET_ERROR) Then Inc(MsgID) Else AddErrMsg('发送失败');
  End;
  List.Free;
End;
//根据用户点拨信息以获取相应的操作指令(返回0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令)
Function GetOperatorCmdFlag(MsgContent:String):Integer;
Var
  ADOQuery:TADOQuery;
  StrSql:String;
  CmdID:Integer;
Begin
  Try
    Result:=0;//错误指令
    ADOQuery:=TADOQuery.Create(nil);
    With ADOQuery Do
    Begin
      ConnectionString:=DBConnectionString;
      StrSql:='Select * From OperatorCmdSet Where CmdCode=:CmdCode';
      Close;SQL.Clear;SQL.Add(StrSql);
      Parameters.ParamByName('CmdCode').Value:=MsgContent;
      Open;
      If Not Eof Then Result:=FieldByName('CmdID').AsInteger Else Result:=3;//正常业务指令
    End;
  Except
    On E:EOleException Do
    Begin
      E.ErrorCode:=0;DBError(E);
    End;
  End;
  ADOQuery.Free;
End;
//获取定制消息的标题(定制信息标题、再次定制信息标题、未定制信息标题、取消定制信息标题、再次取消定制信息标题)
Procedure SetCustomInfoTitle(Var CustomInfoTitle:Array Of String);
Begin
  CustomInfoTitle[1]:='%%1%%_CustomInfo';//定制信息标题
  CustomInfoTitle[2]:='%%1%%_CustomedInfo';//再次定制信息标题
  CustomInfoTitle[3]:='%%1%%_NoCustomInfo';//未定制信息标题
  CustomInfoTitle[4]:='%%1%%_CancelCustomInfo';//取消定制信息标题
  CustomInfoTitle[5]:='%%1%%_CanceledCustomInfo';//再次取消定制信息标题
End;
//获取收费的点拨号段
Function GetChargeDialCode:String;
Var
  ChargeDialCode:String;
Begin
  ChargeDialCode:='%%1%%BY';
  Result:=ChargeDialCode;
End;
//定制消息处理过程
//获取用户定制状态(返回值为-1是异常,为0是新用户,1是请求用户,2是定制用户,3是退定用户)
//0是错误指令、1是定制指令、2是取消定制指令、3是正常业务指令
Procedure CustomInfoDeal(Title:String;ProviderChargeType,CustomStatus,CmdID:Integer;Indeal:TSmgDeliverReq;DialCodeInfoRec:Rec_DialCodeInfo);
Var
  //定制信息标题、再次定制信息标题、未定制信息标题、取消定制信息标题、再次取消定制信息标题
  CustomInfoTitle:Array[1..5] Of String;
  ChargeDialCode,InfoTitle:String;
  i,GateID:Integer;
Begin
  GateID:=Indeal.GateID;
  SetCustomInfoTitle(CustomInfoTitle);
  For i:=1 To 5 Do
  Begin
    CustomInfoTitle[i]:=StringReplace(CustomInfoTitle[i+1],'%%1%%',Title,[rfReplaceAll]);
  End;
  ChargeDialCode:=StringReplace(GetChargeDialCode,'%%1%%',Title,[rfReplaceAll]);
  Case CmdID Of

⌨️ 快捷键说明

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