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

📄 mtdispatcher.java

📁 采用JAVA开发
💻 JAVA
字号:
package com.gctech.sms.platform;

import com.gctech.sms.msg.MTInfo;
import org.apache.log4j.Logger;
import java.util.Collection;
import com.gctech.sms.dao.SpBusinessDao;
import java.util.Map;
import com.gctech.sms.vo.SpBusinessObject;
import com.gctech.sms.vo.SmsServiceObject;
import com.gctech.sms.msg.MsgColoner;
import java.sql.*;
import com.gctech.sms.msg.MTAck;
import org.apache.commons.lang.RandomStringUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import EDU.oswego.cs.dl.util.concurrent.SynchronizedInt;
import EDU.oswego.cs.dl.util.concurrent.WaitableInt;
import com.gctech.sms.core.Gateway;
import com.gctech.sms.card.CardApi;
import com.gctech.util.LimitedSynchronizedInt;
import com.gctech.sms.core.*;

/**
 * <p>Title: 下行分拣者</p>
 * <p>Description: 它的职责是根据SP业务代码找到服务代码,生成网关信息。</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: gctech</p>
 * @author 王红宝
 * @version $Id: MTDispatcher.java,v 1.10 2004/11/15 06:13:45 lijz Exp $
 */

public class MTDispatcher
{
  static final DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
  Map services;
  LimitedSynchronizedInt generator;
  void reloadService()
  {
    services.clear();
    loadService();
  }

  private void loadService()
  {
    services = SpBusinessDao.findAll();
  }

  private MTDispatcher()
  {
    generator = new LimitedSynchronizedInt(0, 0, 1000000);
    //载入服务
    loadService();
  }

  private static MTDispatcher singleton;
  public static MTDispatcher getInstance()
  {
    if (singleton == null)
      singleton = new MTDispatcher();
    return singleton;
  }

  public MTAck dispatch(MTInfo info)
  {
    //根据ProductId填充其它信息
    MTAck ack = new MTAck();
    boolean isPrepay =false;
    System.out.println("info.FeeType="+info.FeeType);
    if (!FeeType.FEE_MONTH_MONEY.getValue().equals(info.FeeType))
    {
      System.out.println("FeeType.FEE_MONTH_MONEY.getValue()="+FeeType.FEE_MONTH_MONEY.getValue());
      Object objSvc = services.get(info.productID);
      if (objSvc == null)
      {
        logger.warn("can't find the product id:" + info.productID);
        ack.setStatus(Constants.WRONG_BUSINESS_ID);
        return ack;
      }
      SpBusinessObject svc = (SpBusinessObject) objSvc;
      System.out.println("svc.isprepay="+svc.getIsprepay());
      SmsServiceObject smsSvc = svc.getService();
      info.FeeType = smsSvc.getFeeType();
      info.FeeCode = smsSvc.getFeeCode();
      info.ServiceID = smsSvc.getID();
      info.bSubType = (byte) smsSvc.getSubType();
      info.bMsgFmt = smsSvc.getMsgFormat();
      if (info.srcPhone == null)
        info.srcPhone = "";
      isPrepay = (svc.getIsprepay() == IsPrepay.IS_NOT_PREPAY.getValue());
      System.out.println("设置isprepay="+isPrepay);
    }
    //根据接收短信路由网关
    int gateway = info.gateway;
    System.out.println("info.gateway="+info.gateway);
    System.out.println("info.bDestNo="+info.bDestNo);
	info.bDestNo = 1;
    for (int i = 0; i < info.bDestNo; i++)
    {
      System.out.println("enter=");
      MTInfo aMt = MsgColoner.cloneSingle(info, i);
      if (info.gateway < 0)
      {
        //路由网关
        String dest = aMt.sDestPhone;
        //System.out.println("spId is:" + aMt.spId + ".");
        //gateway = Gateway.getGatewayBySpId(dest, aMt.spId);
		gateway = 8;
        aMt.gateway = gateway;


      }
      //用卡支付
      System.out.println("isPrepay="+isPrepay);
      if (isPrepay)
      {
        int money = Integer.parseInt(aMt.FeeCode);
        if (money != 0)
        {
          aMt.FeeCode = "00";
          aMt.ServiceID = "MFXX";
          //认证,计费。
         // int status = CardApi.getInstance().devicePay(aMt.FeeterminalId,( (double) money) / 100);
         //此处修改 2004/06/24
          int status = CardApi.getInstance().directPay(aMt.FeeterminalId,
              ( (double) money) / 100);
          if (status != CardApi.SUCCESS)
          {
            ack.setStatus(Constants.BILL_ERROR);
            return ack;
          }
        }
      }

      //生成消息ID
      aMt.MsgID = nextId().toString();
      System.out.println("生成的msgid:"+aMt.MsgID);
	  System.out.println("发送的squenceid:"+aMt.squeceid);
      ack.msgId = aMt.MsgID;
      //记录日志
      logger.info(aMt);

      //放到特定网关队列中去
      //ack.setStatus(Server.getInstance().sentMt(info)); //wjl 2004-04-26 change
      ack.setStatus(Server.getInstance().sentMt(aMt, gateway));
      //save jifeishuju

    }
    //ack.setStatus(0);
    return ack;
  }

  static final Logger logger = Logger.getLogger(MTDispatcher.class);
  public static void main(String[] args)
  {
    System.out.println(Integer.parseInt("00"));
  }

  StringBuffer nextId()
  {
    StringBuffer sb = new StringBuffer(format.format(new Date()));
    int current = generator.increment();
    String curSeq = "" + current;
    int length = curSeq.length();
    if (length < 6)
    {
      for (int i = 0; i < 6 - length; i++)
      {
        sb.append('0');
      }
    }
    sb.append(curSeq);
    return sb;
  }
}

⌨️ 快捷键说明

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