Class TransactionManager

java.lang.Object
ru.bitel.common.dao.AbstarctDaoConstant
ru.bitel.common.dao.AbstractDao<B>
ru.bitel.common.dao.AbstractIdDao<B>
ru.bitel.bgbilling.server.bean.AbstractTransactionManager<Transaction>
ru.bitel.bgbilling.modules.assist.server.bean.TransactionManager
All Implemented Interfaces:
AutoCloseable

public class TransactionManager extends AbstractTransactionManager<Transaction>
Менеджер платежей ассист, записи о платежах/транзакциях в БД биллинга.
  • Field Details

    • DEFAULT_PAYMENT_COMMENT

      public static String DEFAULT_PAYMENT_COMMENT
  • Constructor Details

    • TransactionManager

      public TransactionManager(Connection con, int moduleId)
  • Method Details

    • addPayment

      public Transaction addPayment(int contractId, BigDecimal sum, int recurringParentId) throws ru.bitel.bgbilling.common.BGException
      Добавляем первоначальную строку платежа, когда юзер только пытается провести платёж - заносим сюда цид, дату и сумму. Для того, чтобы ИД этой записи отдать в качестве уникального номера заказа процессинговому центру. Пока статус - "непроведённый".
      Parameters:
      contractId - цид
      summ - сумма
      recurringParentId - если > 0 - добавляет рекуррентный (а не обычный платёж), должно быть номер orderId родительског платежа (это у нас сущность id нашей этой же таблицы assist_payment, хранится в настрйоках assist_payment_recurring)
      Returns:
      ид новой записи (ид_платежа/номер_заказа)
      Throws:
      SQLException
      ru.bitel.bgbilling.common.BGException
    • searchTransaction

      public void searchTransaction(SearchResult<Transaction> searchResult, int contractId, String contractTitle, String status) throws ru.bitel.bgbilling.common.BGException
      Поиск платежей по нескольким условиям
      Overrides:
      searchTransaction in class AbstractTransactionManager<Transaction>
      Parameters:
      period - дата начала (может не быть) и конца (может не быть) периода. учитывается с точностью до дня (!) и включительно. то есть чтобы вывести например за один день концы промежутка должны быть равны: 01.01.1999-01.01.1999
      statusList - статусов маска (комбинация из OK/FAIL/NEW статусов), должна быть указана
      f_groups - список групп договоров (если ничего нет, то будет маска договоров стало быть ноль и при поиске будет игнорироваться, то есть если не указано ничего, то предполагаются что все)
      f_orderid - поиск по части номера ID (типа номер заказа) (может не быть)
      f_contract - поиск по части номера договора (может не быть)
      f_cardname - поиск по части имени держателя карты ИЛИ по части имени плательщика этой карты (может не быть)
      f_cardtext - поиск по части номера карты ИЛИ части типа карты ИЛИ по части субтипа карты (может не быть)
      f_billnumber - поиск по части номера платежа системы assist (может не быть)
      Throws:
      SQLException
      ru.bitel.bgbilling.common.BGException
    • queryStatus

      protected void queryStatus(StringBuilder query, String status)
      Overrides:
      queryStatus in class AbstractTransactionManager<Transaction>
    • getPaymentList

      public List<Transaction> getPaymentList(int contractId, Date from, Date until, List<String> statusList) throws ru.bitel.bgbilling.common.BGException
      Платежи за период для договора с указанным статусом. Также для веба используется - все платежи за указанный месяц, используется для вывода в вебе списка платежей. Там тогда возвращаются все статусы - NEW, OK, FAIL.
      Parameters:
      contractId - цид
      from - дата начала (включительно)
      until - дата конца (включительно)
      status - маска статусов которые надо выбрать
      Returns:
      список пайментов
      Throws:
      SQLException
      ru.bitel.bgbilling.common.BGException
    • registerOrder

      public Transaction registerOrder(int contractId, BigDecimal sum, Map<String,Object> dataMap, boolean autopaymentTransaction, boolean requestBindingId) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • doCheckRequest

      public List<TransactionCheckResultDTO> doCheckRequest(int contractId, boolean autopaymentTransaction) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • doCheckRequest

      public TransactionCheckResultDTO doCheckRequest(Transaction transaction, int contractId, int orderId) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getImpl

      protected Transaction getImpl(int id) throws ru.bitel.bgbilling.common.BGException, SQLException
      Чтение одного платежа через его id и через cid (опционально). Также заполняется название договора.
      Overrides:
      getImpl in class ru.bitel.common.dao.AbstractDao<Transaction>
      Parameters:
      contractId - контрактИд, если надо специфицировать, или -1, если игнорировать этот параметр. Для пущей надёжности сделано, так что пренебрегать - чревато! Название договора заполняется независимо от этого параметра.
      id - идПлатежа (он же "номер заказа" в терминах всей платёжной цепочки)
      Returns:
      объект Payment (или null если нужного не найдено)
      Throws:
      SQLException
      ru.bitel.bgbilling.common.BGException
    • carryOutPayment

      public void carryOutPayment(Transaction transaction) throws ru.bitel.bgbilling.common.BGException
      Проведение платежа. Проверяется, чтобы статус у переданного был OK. Используется в админке при редактировании платежа, при запросе статуса ручном и в экзекутере.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getFirstYear

      public int getFirstYear(int contractId) throws ru.bitel.bgbilling.common.BGException
      Возвращает год, с которого были платежи для этого договора
      Parameters:
      contractId - контракт_ид
      Returns:
      четырёхзначное число - год
      Throws:
      SQLException
      ru.bitel.bgbilling.common.BGException
    • getLastRecurringForCid

      public Transaction getLastRecurringForCid(int contractId, int recurringParentId) throws ru.bitel.bgbilling.common.BGException
      Последний рекуррентный платёж. Для указанного договора. Для заданного родителя этого платежа (чтобы различать пдатежи от разных подключенных автоплатежей). Учитываются только проведённые или пока висящие (со статусом FAIL не считаются, что наверно логично) Берётся только последний, если есть, если нету, то будет null.
      Parameters:
      contractId -
      recurringParentId -
      Returns:
      Throws:
      ru.bitel.bgbilling.common.BGException
    • setContractData

      protected void setContractData(Transaction transaction, ResultSet rs) throws SQLException, ru.bitel.bgbilling.common.BGException
      Throws:
      SQLException
      ru.bitel.bgbilling.common.BGException
    • getFromRS

      protected Transaction getFromRS(ResultSet rs) throws SQLException, ru.bitel.bgbilling.common.BGException
      Specified by:
      getFromRS in class ru.bitel.common.dao.AbstractDao<Transaction>
      Throws:
      SQLException
      ru.bitel.bgbilling.common.BGException
    • updateImpl

      protected void updateImpl(Transaction transaction) throws ru.bitel.bgbilling.common.BGException, SQLException
      Specified by:
      updateImpl in class ru.bitel.common.dao.AbstractDao<Transaction>
      Throws:
      ru.bitel.bgbilling.common.BGException
      SQLException