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

📄 processormsgthread.java

📁 介绍短信的处理程序,从接收到短信,分类找到相应的业务处理名称,然后发送HTTP到业务来进行短信的处理.
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
package com.mdream.sms;

import com.mdream.comm.*;
import java.sql.*;
import java.io.*;
import java.util.*;
import java.net.*;
import java.lang.Object;
import org.apache.log4j.*;
import org.apache.log4j.Logger;

public class ProcessorMsgThread
    extends Thread {
  static Logger log = Logger.getLogger("sxsmgp");
  private ServerMsgThread servermsgthr = null;
  private boolean stop = false;
  private String question = "";
  String[] numberdis = {
      "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
  String[] letterdis = {
      "a", "b", "c", "d", "e", "f", "g", "h", "i", "g", "k", "l", "m", "n",
      "o", "p", "q", "r", "s", "p", "u", "v", "w", "x", "y", "z"};
  String[] LETTERDIS = {
      "A", "B", "C", "D", "E", "F", "G", "H", "I", "G", "K", "L", "M", "N",
      "O", "P", "Q", "R", "S", "P", "U", "V", "W", "X", "Y", "Z"};
  String[] chuqu = {
      " ", "+", "#", "$", "*"};

  public ProcessorMsgThread(ServerMsgThread servermsgthr) {
    this.servermsgthr = servermsgthr;
  }

  public void run() {
    log.info("--------(xiao ling tong) SMS Processor Start at " +
             new java.util.Date().toString());
    while (!stop) {
      smsprocessor();
      servermsgthr.getSendMsgThread().setsendrun(true);
      setprowait(true);
      //suspend();
    }
    log.info("--------(xiao ling tong) SMS Processor Stop at " +
             new java.util.Date().toString());
  }

  public boolean IsCanDealCommand(String command, String toPhone) {
    Connection conn = null;
    String code = "";
    String data = "";
    boolean isbool = false;
    log.info("--------(xiao ling tong) IsCanDealCommand command:" +
             command);
    log.info("--------(xiao ling tong) toPhone.substring(0,4):" +
             toPhone.substring(0, 4).toString());
    if (toPhone.startsWith("5888")) {
      isbool = true;
    }
    else {
      isbool = false;
    }
    return isbool;
  }

  private void sepData(String msgContent, String Code, String Data) {

    int I;
    int nleg;
    int singlemsg;
    boolean num = false;
    boolean letlow = false;
    boolean letupp = false;
    nleg = msgContent.length();
    msgContent = msgContent.trim();
    I = 0;
    while (I < nleg) {
      String midstr = msgContent.substring(I, I);
      log.info("--------(xiao ling tong) midstr:" + midstr);
      for (int j = 0; j < numberdis.length; j++) {
        if (midstr.equals(numberdis[j])) {
          Data = Data + midstr;
          num = false;
          break;
        }
        else {
          num = true;
        }
      }
      for (int m = 0; m < letterdis.length; m++) {
        if (midstr.equals(letterdis[m])) {
          Code = Code + midstr.toUpperCase();
          letlow = false;
          break;
        }
        else {
          letlow = true;
        }
      }
      for (int n = 0; n < LETTERDIS.length; n++) {
        if (midstr.equals(LETTERDIS[n])) {
          Code = Code + midstr;
          letupp = false;
          break;
        }
        else {
          letupp = true;
        }
      }

      I += 1;

    }
    I = 0;
    while (I < nleg && num && letlow && letupp) {
      String midchina = msgContent.substring(I, I);
      Data = Data + midchina;
      I += 1;
    }
  }

  public String getsvccode(String toPhone, String command) {
    Connection conn = null;
    String str = "";
    try {
      conn = DBMgr.getCon("qqqsms");
      PreparedStatement stmt = conn.prepareStatement(
          "select * from CommandName where ToPhone = ? and command = ?");
      stmt.setString(1, toPhone);
      stmt.setString(2, command);
      ResultSet rs = stmt.executeQuery();
      while (rs.next()) {
        str = rs.getString("svccode");
      }
      rs.close();
      stmt.close();
    }
    catch (Exception e) {
      log.info(
          "--------(xiao ling tong) log.info getsvccode data!!!");
    }

    finally {
      try {
        if (conn != null) {
          conn.close();
        }
      }
      catch (Exception ie) {

      }
    }

    return str;
  }

  public int getrequesttype(String toPhone, String command) {

    Connection conn = null;
    int type = 1;
    try {
      conn = DBMgr.getCon("qqqsms");
      PreparedStatement stmt = conn.prepareStatement(
          "select * from CommandName where ToPhone = ? and command = ? ");
      stmt.setString(1, toPhone);
      stmt.setString(2, command);
      ResultSet rs = stmt.executeQuery();
      while (rs.next()) {
        type = rs.getInt("sendtype");
      }
      rs.close();
      stmt.close();
    }
    catch (Exception e) {
      log.info(
          "--------(xiao ling tong) system display not Analyze command deal type");
    }
    finally {
      try {
        if (conn != null) {
          conn.close();
        }
      }
      catch (Exception ex) {

      }
    }
    log.info("--------(xiao ling tong) type :" + type);
    return type;
  }

  /**
   * 消息发送
   * @param phone String 用户号码
   * @param msg String 消息内容
   * @return boolean 返回正确执行的布尔量
   */
  private boolean doSendMessage(String phone, String tophone, String svccode,
                                String msg) {
    log.info(phone);
    log.info(msg);
    msg = msg.trim();
    Connection conn = null;
    PreparedStatement stmt = null;
    String feecode = "000000";

    if (tophone.startsWith("5888")) {
      tophone = "118" + tophone;
    }
    if (svccode.equals("HELP")) {
      feecode = "000000";
    }
    else if (svccode.equalsIgnoreCase("YCXY")) {
      feecode = "000050";
    }
    else if (svccode.equalsIgnoreCase("DXQQ")) {
      feecode = "000200";
    }
    try {

      conn = DBMgr.getCon("qqqsms");
      if (msg.length() <= 45) {
        stmt = conn.prepareStatement("insert into tsubmit(SubType,NeedReport,Priority,ServiceID,FeeType,FeeCode,MsgFormat,SrcTermID,ChargeTermID,DestTermIDCount,DestTermID,MsgContent,ValidTime,isdeal,spid) values(?,?,?,?,?,?,?,?,?,?,?,?,now(),?,?)");
        stmt.setInt(1, 2);
        stmt.setInt(2, 1);
        stmt.setInt(3, 0);
        stmt.setString(4, svccode);
        stmt.setString(5, "01");
        stmt.setString(6, feecode);
        stmt.setString(7, "15");
        stmt.setString(8, tophone);
        stmt.setString(9, phone);
        stmt.setInt(10, 1);
        stmt.setString(11, phone);
        stmt.setString(12, msg);
        stmt.setInt(13, 0);
        stmt.setString(14, "02900050");
        stmt.executeUpdate();
      }
      else if (msg.length() <= 90 && msg.length() > 45) {
        stmt = conn.prepareStatement("insert into tsubmit(SubType,NeedReport,Priority,ServiceID,FeeType,FeeCode,MsgFormat,SrcTermID,ChargeTermID,DestTermIDCount,DestTermID,MsgContent,ValidTime,isdeal,spid) values(?,?,?,?,?,?,?,?,?,?,?,?,now(),?,?)");
        stmt.setInt(1, 2);
        stmt.setInt(2, 1);
        stmt.setInt(3, 0);
        stmt.setString(4, svccode);
        stmt.setString(5, "01");
        stmt.setString(6, feecode);
        stmt.setString(7, "15");
        stmt.setString(8, tophone);
        stmt.setString(9, phone);
        stmt.setInt(10, 1);
        stmt.setString(11, phone);
        stmt.setString(12, msg.substring(0, 45));
        stmt.setInt(13, 0);
        stmt.setString(14, "02900050");
        stmt.executeUpdate();

        stmt = conn.prepareStatement("insert into tsubmit(SubType,NeedReport,Priority,ServiceID,FeeType,FeeCode,MsgFormat,SrcTermID,ChargeTermID,DestTermIDCount,DestTermID,MsgContent,ValidTime,isdeal,spid) values(?,?,?,?,?,?,?,?,?,?,?,?,now(),?,?)");
        stmt.setInt(1, 2);
        stmt.setInt(2, 1);
        stmt.setInt(3, 0);
        stmt.setString(4, svccode);
        stmt.setString(5, "01");
        stmt.setString(6, feecode);
        stmt.setString(7, "15");
        stmt.setString(8, tophone);
        stmt.setString(9, phone);

⌨️ 快捷键说明

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