コード例 #1
0
ファイル: SMSMOController.java プロジェクト: maruen/SCOMM
  private boolean existsCampaign() {

    String[] msgMo = moRequest.getTextMessage().split(delimiter);

    if (msgMo == null) {
      return false;
    }

    if (msgMo.length == 1) {
      String keycodeAsString = msgMo[0];
      keycode = keycodeDAO.findByNome(keycodeAsString);
      campaign = campanhaDAO.findByKeyword(keycodeAsString);

    } else if (msgMo.length == 2) {
      String keycodeAsString = msgMo[0];
      String keyword = msgMo[1];
      keycode = keycodeDAO.findByNome(keycodeAsString);
      campaign = campanhaDAO.findByKeyword(keyword);
    }

    Integer carrier = Integer.parseInt(moRequest.getCarrier());

    if (keycode != null && campaign != null) {
      rule = campaign.getRegra();
      if (rule != null
          && rule.getKeycode().getId() == keycode.getId()
          && rule.getLa().getId() == la.getId()
          && rule.getSharecode(carrier) != null) {
        return true;
      }
    }

    return false;
  }
コード例 #2
0
ファイル: SMSMOController.java プロジェクト: maruen/SCOMM
  protected ModelAndView handleRequestInternal(
      HttpServletRequest request, HttpServletResponse response) throws Exception {

    Date currentDate = new Date();

    try {
      moRequest = parseInputParameters(request);
      logger.info("MO Message: " + moRequest);
    } catch (Exception e) {
      logger.warn(loggerMessageDAO.getMessageById(5, e.getMessage()));
      response.sendError(HttpServletResponse.SC_BAD_REQUEST, loggerMessageDAO.getMessageById(6));
      return null;
    }

    String strLa = moRequest.getDestinationNumber();
    if (moRequest.getDestinationNumber().contains("-")) {
      strLa =
          moRequest
              .getDestinationNumber()
              .substring(0, moRequest.getDestinationNumber().indexOf("-"));
    }

    la = laDAO.findByNome(strLa);
    if (la == null) {
      logger.warn(loggerMessageDAO.getMessageById(7, moRequest.getDestinationNumber()));
      response.sendError(
          HttpServletResponse.SC_BAD_REQUEST,
          loggerMessageDAO.getMessageById(7, moRequest.getDestinationNumber()));
      return null;
    }

    if (isOptionIn()) {
      return null;
    }

    Mensagem msg = new Mensagem();
    msg.setLa(la);
    msg.setMensagem(moRequest.getTextMessage());
    msg.setMsisdn(moRequest.getOriginationNumber());
    msg.setOperadora(Integer.parseInt(moRequest.getCarrier()));
    msg.setProcessamento(currentDate);
    msg.setRequest(currentDate);

    Historico hist = new Historico();
    hist.setDtCriacao(currentDate);
    hist.setLa(la);
    hist.setMensagem(msg);
    hist.setTxMensagem(msg.getMensagem());
    hist.setMsisdn(msg.getMsisdn());
    hist.setOperadora(msg.getOperadora());
    hist.setStatusType(StatusType.FLOW_START);

    boolean isDuplicate = isDuplicate(msg.getMsisdn());

    if (isDuplicate) {
      msg.setMessageStatus(MessageStatus.DUPLICATE);
      hist.setMessageStatus(MessageStatus.DUPLICATE);
    } else {
      msg.setMessageStatus(MessageStatus.FLOW_START);
      hist.setMessageStatus(MessageStatus.FLOW_START);
    }

    try {

      msgDAO.save(msg);
      historicoDAO.save(hist);

      if (isDuplicate) {
        DuplicatedMessage dupMessage = new DuplicatedMessage();
        dupMessage.setCodigoOperadora(msg.getOperadora());
        dupMessage.setMensagem(msg);
        dupMessage.setSmsMtSent(0);
        dupMessage.setMsisdn(msg.getMsisdn());
        dupMessage.setDtCompra(Calendar.getInstance().getTime());
        duplicatedMessageDAO.save(dupMessage);
        return null;
      }

      if (!existsCampaign()) {

        hist.setMessageStatus(MessageStatus.CAMPAIGN_NOT_FOUND);
        msg.setMessageStatus(MessageStatus.CAMPAIGN_NOT_FOUND);
        msgDAO.update(msg);
        historicoDAO.update(hist);

        WithoutCampaignMsg withoutCampaignMsg = new WithoutCampaignMsg();
        withoutCampaignMsg.setCodigoOperadora(msg.getOperadora());
        withoutCampaignMsg.setMensagem(msg);
        withoutCampaignMsg.setSmsMtSent(0);
        withoutCampaignMsg.setTxtMensagem(msg.getMensagem());
        withoutCampaignMsg.setMsisdn(msg.getMsisdn());
        withoutCampaignMsgDAO.save(withoutCampaignMsg);
        return null;
      }

      if (reachedLimitOfBuying(msg)) {

        hist.setMessageStatus(MessageStatus.BUY_LIMIT_REACHED);
        msg.setMessageStatus(MessageStatus.BUY_LIMIT_REACHED);
        msgDAO.update(msg);
        historicoDAO.update(hist);

        BuyingLimitExceed bl = new BuyingLimitExceed();
        bl.setMensagem(msg);
        bl.setMsisdn(msg.getMsisdn());
        bl.setSmsMtSent(0);
        bl.setCodigoOperadora(msg.getOperadora());
        bl.setDtCompra(Calendar.getInstance().getTime());
        buyingLimitExceedDAO.save(bl);
        return null;
      }

      Sharecode sharecode = campaign.getRegra().getSharecode(msg.getOperadora());
      Transacao tr = new Transacao();
      tr.setDtSchedule(currentDate);
      tr.setDtTransacao(currentDate);
      tr.setKeycode(campaign.getRegra().getKeycode());
      tr.setLa(la);
      tr.setMensagem(msg);
      tr.setMsisdn(msg.getMsisdn());
      tr.setOperadora(msg.getOperadora());
      tr.setParceiro(keycode.getParceiro());
      tr.setRegra(campaign.getRegra());
      tr.setCampanha(campaign);
      tr.setSharecode(sharecode);
      tr.setValorTarifacao(sharecode.getTarifacao());
      tr.setDoubleOptionIn(0);

      switch (campaign.getFlowType()) {
        case Campanha.REQUIRES_AUTHORIZATION_FLOW:
          tr.setTransactionStatus(TransactionStatus.WAITING_TO_PROCESS);
          break;

        case Campanha.SIMPLIFIED_FLOW:
          tr.setTransactionStatus(TransactionStatus.TRANSACTION_AUTHORIZED);
          break;

        case Campanha.VOUCHER_FLOW:
          tr.setTransactionStatus(TransactionStatus.WAITING_TO_PROCESS);
          break;
      }

      transacaoDAO.save(tr);

    } catch (Exception e) {

      logger.error(loggerMessageDAO.getMessageById(8, e.getMessage()));
      hist.setMessageStatus(MessageStatus.ERROR);
      msg.setMessageStatus(MessageStatus.ERROR);
      msgDAO.update(msg);
      historicoDAO.update(hist);
    }

    return null;
  }