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
Менеджер платежей ассист, записи о платежах/транзакциях в БД биллинга.
-
Nested Class Summary
Nested classes/interfaces inherited from class ru.bitel.common.dao.AbstractDao
ru.bitel.common.dao.AbstractDao.ResultSetIterator
-
Field Summary
Fields inherited from class ru.bitel.bgbilling.server.bean.AbstractTransactionManager
moduleSetup
Fields inherited from class ru.bitel.common.dao.AbstractDao
cacheFilter, cacheJoin, cacheOrderBy, cachePaged, cachePS, cacheWhat, con, getByIdPS, moduleId, orderByPattern, tableName
Fields inherited from class ru.bitel.common.dao.AbstarctDaoConstant
ERROR, fields, SQL_ALL, SQL_AND, SQL_CALC_FOUND_ROWS, SQL_DELETE, SQL_DISTINCT, SQL_EQ, SQL_EQCS, SQL_FROM, SQL_GROUP, SQL_IN, SQL_INSERT, SQL_JOIN, SQL_LEFT_JOIN, SQL_LIMIT, SQL_NOT_IN, SQL_ON, SQL_ON_DUPLICATE_KEY_UPDATE, SQL_ORDER, SQL_SELECT, SQL_SET, SQL_UPDATE, SQL_VALUES, SQL_WHERE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionaddPayment
(int contractId, BigDecimal sum, int recurringParentId) Добавляем первоначальную строку платежа, когда юзер только пытается провести платёж - заносим сюда цид, дату и сумму.void
carryOutPayment
(Transaction transaction) Проведение платежа.doCheckRequest
(int contractId, boolean autopaymentTransaction) doCheckRequest
(Transaction transaction, int contractId, int orderId) int
getFirstYear
(int contractId) Возвращает год, с которого были платежи для этого договораprotected Transaction
protected Transaction
getImpl
(int id) Чтение одного платежа через его id и через cid (опционально).getLastRecurringForCid
(int contractId, int recurringParentId) Последний рекуррентный платёж.getPaymentList
(int contractId, Date from, Date until, List<String> statusList) Платежи за период для договора с указанным статусом.protected void
queryStatus
(StringBuilder query, String status) registerOrder
(int contractId, BigDecimal sum, Map<String, Object> dataMap, boolean autopaymentTransaction, boolean requestBindingId) void
searchTransaction
(SearchResult<Transaction> searchResult, int contractId, String contractTitle, String status) Поиск платежей по нескольким условиямprotected void
setContractData
(Transaction transaction, ResultSet rs) protected void
updateImpl
(Transaction transaction) Methods inherited from class ru.bitel.bgbilling.server.bean.AbstractTransactionManager
doConnection, doConnection, getLogger, getParameter, getParamString, getParamString, getParamString, psStatus, searchTransaction, setConnectionTimeout, setParameter
Methods inherited from class ru.bitel.common.dao.AbstractIdDao
delete, get, getAndDelete, getAndUpdate, opt
Methods inherited from class ru.bitel.common.dao.AbstractDao
close, delete, deleteImpl, eq, get, getById, getListFromRS, getPeriod, getQueryById, getSQLOrder, getTableName, list, list, listImpl, listImpl, listImplPS, listImplPS, ormFromResultSet, ormUpdateImpl, ormUpdateImpl, ormUpdateImpl, ormUpdateImpl, processException, recycle, setStatementParam, update
Methods inherited from class ru.bitel.common.dao.AbstarctDaoConstant
getSQLOrder
-
Field Details
-
DEFAULT_PAYMENT_COMMENT
-
-
Constructor Details
-
TransactionManager
-
-
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 Поиск платежей по нескольким условиям- Parameters:
period
- дата начала (может не быть) и конца (может не быть) периода. учитывается с точностью до дня (!) и включительно. то есть чтобы вывести например за один день концы промежутка должны быть равны: 01.01.1999-01.01.1999statusList
- статусов маска (комбинация из 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
- Overrides:
queryStatus
in classAbstractTransactionManager<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
Чтение одного платежа через его id и через cid (опционально). Также заполняется название договора.- Overrides:
getImpl
in classru.bitel.common.dao.AbstractDao<Transaction>
- Parameters:
contractId
- контрактИд, если надо специфицировать, или -1, если игнорировать этот параметр. Для пущей надёжности сделано, так что пренебрегать - чревато! Название договора заполняется независимо от этого параметра.id
- идПлатежа (он же "номер заказа" в терминах всей платёжной цепочки)- Returns:
- объект Payment (или null если нужного не найдено)
- Throws:
SQLException
ru.bitel.bgbilling.common.BGException
-
carryOutPayment
Проведение платежа. Проверяется, чтобы статус у переданного был 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 classru.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 classru.bitel.common.dao.AbstractDao<Transaction>
- Throws:
ru.bitel.bgbilling.common.BGException
SQLException
-