From fbbcf13d54efc27487c674b0d13bec9eca87992d Mon Sep 17 00:00:00 2001 From: kostyastruga Date: Fri, 6 Mar 2026 17:23:14 +0300 Subject: [PATCH 1/3] Add providers ids --- pom.xml | 4 ++-- .../magista/dao/impl/SearchDaoImpl.java | 16 +++++++++++++++- .../dao/impl/mapper/StatChargebackMapper.java | 6 ++++++ .../service/PaymentAdjustmentService.java | 1 + .../service/PaymentChargebackService.java | 1 + .../magista/service/PaymentRefundService.java | 1 + .../db/migration/V36__add_provider_ids.sql | 8 ++++++++ .../dao/impl/ChargebackSearchDaoImplTest.java | 16 ++++++++++++++++ .../dao/impl/RefundsSearchDaoImplTest.java | 14 ++++++++++++++ ...hargeback_search_with_provider_id_data.sql | 19 +++++++++++++++++++ .../refund_search_with_provider_id_data.sql | 5 +++++ 11 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/db/migration/V36__add_provider_ids.sql create mode 100644 src/test/resources/data/sql/search/chargeback_search_with_provider_id_data.sql create mode 100644 src/test/resources/data/sql/search/refund_search_with_provider_id_data.sql diff --git a/pom.xml b/pom.xml index c411bf1b..3dd43398 100644 --- a/pom.xml +++ b/pom.xml @@ -110,12 +110,12 @@ dev.vality damsel - 1.677-0ac1d9c + 1.685-5c25c2e dev.vality magista-proto - 1.58-2de1ebf + 1.60-6cafe01 dev.vality.geck diff --git a/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java b/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java index 179d09dd..28b16cda 100644 --- a/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java +++ b/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Optional; import java.util.UUID; +import java.util.stream.Collectors; import static dev.vality.geck.common.util.TypeUtil.toEnumField; import static dev.vality.geck.common.util.TypeUtil.toEnumFields; @@ -194,6 +195,8 @@ public List getChargebacks(ChargebackSearchQuery chargebackSearc .addValue(CHARGEBACK_DATA.PARTY_ID, commonParams.getPartyId(), EQUALS) .addInConditionValue(CHARGEBACK_DATA.PARTY_SHOP_ID, commonParams.getShopIds()) + .addInConditionValue(CHARGEBACK_DATA.PROVIDER_ID, + mapProviderIds(commonParams)) .addInConditionValue( CHARGEBACK_DATA.INVOICE_ID, chargebackSearchQuery.getInvoiceIds()) @@ -291,6 +294,7 @@ private ConditionParameterSource prepareRefundCondition(RefundSearchQuery search return new ConditionParameterSource() .addValue(REFUND_DATA.PARTY_ID, commonParams.getPartyId(), EQUALS) .addInConditionValue(REFUND_DATA.PARTY_SHOP_ID, commonParams.getShopIds()) + .addInConditionValue(REFUND_DATA.PROVIDER_ID, mapProviderIds(commonParams)) .addInConditionValue(REFUND_DATA.INVOICE_ID, searchQuery.getInvoiceIds()) .addValue(REFUND_DATA.PAYMENT_ID, searchQuery.getPaymentId(), EQUALS) .addValue(REFUND_DATA.REFUND_ID, searchQuery.getRefundId(), EQUALS) @@ -410,10 +414,20 @@ private ConditionParameterSource prepareInvoicePaymentsCondition(ConditionParame : null, EQUALS) .addInConditionValue(PAYMENT_DATA.PARTY_SHOP_ID, commonParams.getShopIds()) + .addInConditionValue(PAYMENT_DATA.PROVIDER_ID, mapProviderIds(commonParams)) .addInConditionValue(PAYMENT_DATA.INVOICE_ID, invoiceIds); return paymentParameterSource; } + private List mapProviderIds(CommonSearchQueryParams commonParams) { + if (commonParams.getProviderIds() == null || commonParams.getProviderIds().isEmpty()) { + return null; + } + return commonParams.getProviderIds().stream() + .map(Integer::valueOf) + .collect(Collectors.toList()); + } + private Condition buildInvoiceTemplateStatusCondition(InvoiceTemplateSearchQuery invoiceTemplateSearchQuery) { Condition invoiceTemplateStatus = DSL.trueCondition(); if (invoiceTemplateSearchQuery.isSetInvoiceTemplateStatus()) { @@ -424,7 +438,7 @@ private Condition buildInvoiceTemplateStatusCondition(InvoiceTemplateSearchQuery case deleted -> invoiceTemplateStatus = INVOICE_TEMPLATE.EVENT_TYPE.eq( InvoiceTemplateEventType.INVOICE_TEMPLATE_DELETED); default -> throw new IllegalArgumentException("Unknown enum type " + - invoiceTemplateSearchQuery.getInvoiceTemplateStatus()); + invoiceTemplateSearchQuery.getInvoiceTemplateStatus()); } } return invoiceTemplateStatus; diff --git a/src/main/java/dev/vality/magista/dao/impl/mapper/StatChargebackMapper.java b/src/main/java/dev/vality/magista/dao/impl/mapper/StatChargebackMapper.java index 4796054d..f231b3f4 100644 --- a/src/main/java/dev/vality/magista/dao/impl/mapper/StatChargebackMapper.java +++ b/src/main/java/dev/vality/magista/dao/impl/mapper/StatChargebackMapper.java @@ -1,6 +1,7 @@ package dev.vality.magista.dao.impl.mapper; import dev.vality.damsel.base.Content; +import dev.vality.damsel.domain.ProviderRef; import dev.vality.geck.common.util.TypeUtil; import dev.vality.magista.StatChargeback; import org.springframework.jdbc.core.RowMapper; @@ -22,6 +23,7 @@ public StatChargeback mapRow(ResultSet rs, int i) throws SQLException { .setExternalId(rs.getString(CHARGEBACK_DATA.EXTERNAL_ID.getName())) .setPartyId(rs.getString(CHARGEBACK_DATA.PARTY_ID.getName())) .setShopId(rs.getString(CHARGEBACK_DATA.PARTY_SHOP_ID.getName())) + .setProviderId(initProviderRef(rs)) .setChargebackStatus(MapperHelper.toInvoicePaymentChargebackStatus(rs)) .setCreatedAt(TypeUtil.temporalToString( rs.getObject(CHARGEBACK_DATA.CHARGEBACK_CREATED_AT.getName(), LocalDateTime.class)) @@ -50,4 +52,8 @@ public StatChargeback mapRow(ResultSet rs, int i) throws SQLException { } return chargeback; } + + private static ProviderRef initProviderRef(ResultSet rs) throws SQLException { + return new ProviderRef(rs.getInt(CHARGEBACK_DATA.PROVIDER_ID.getName())); + } } diff --git a/src/main/java/dev/vality/magista/service/PaymentAdjustmentService.java b/src/main/java/dev/vality/magista/service/PaymentAdjustmentService.java index ff2ac56d..30b7f288 100644 --- a/src/main/java/dev/vality/magista/service/PaymentAdjustmentService.java +++ b/src/main/java/dev/vality/magista/service/PaymentAdjustmentService.java @@ -55,6 +55,7 @@ public void saveAdjustments(List adjustments) throws NotFoundExc paymentService.getPaymentData(adjustment.getInvoiceId(), adjustment.getPaymentId()); adjustment.setPartyId(paymentData.getPartyId().toString()); adjustment.setPartyShopId(paymentData.getPartyShopId()); + adjustment.setProviderId(paymentData.getProviderId()); } else { AdjustmentData previousAdjustmentEvent = adjustmentDataCacheMap.computeIfAbsent( adjustment.getInvoiceId() + adjustment.getPaymentId() + diff --git a/src/main/java/dev/vality/magista/service/PaymentChargebackService.java b/src/main/java/dev/vality/magista/service/PaymentChargebackService.java index f752f98e..88dcb2d2 100644 --- a/src/main/java/dev/vality/magista/service/PaymentChargebackService.java +++ b/src/main/java/dev/vality/magista/service/PaymentChargebackService.java @@ -54,6 +54,7 @@ public void saveChargeback(List chargebackDataList) { paymentService.getPaymentData(chargeback.getInvoiceId(), chargeback.getPaymentId()); chargeback.setPartyId(paymentData.getPartyId().toString()); chargeback.setPartyShopId(paymentData.getPartyShopId()); + chargeback.setProviderId(paymentData.getProviderId()); if (chargeback.getChargebackStage() == null) { chargeback.setChargebackStage(ChargebackStage.chargeback); } diff --git a/src/main/java/dev/vality/magista/service/PaymentRefundService.java b/src/main/java/dev/vality/magista/service/PaymentRefundService.java index 384cfaa1..b184fdc1 100644 --- a/src/main/java/dev/vality/magista/service/PaymentRefundService.java +++ b/src/main/java/dev/vality/magista/service/PaymentRefundService.java @@ -53,6 +53,7 @@ public void saveRefunds(List refundEvents) throws NotFoundException, paymentService.getPaymentData(refund.getInvoiceId(), refund.getPaymentId()); refund.setPartyId(paymentData.getPartyId().toString()); refund.setPartyShopId(paymentData.getPartyShopId()); + refund.setProviderId(paymentData.getProviderId()); if (refund.getRefundAmount() == null) { refund.setRefundAmount(paymentData.getPaymentAmount()); refund.setRefundCurrencyCode(paymentData.getPaymentCurrencyCode()); diff --git a/src/main/resources/db/migration/V36__add_provider_ids.sql b/src/main/resources/db/migration/V36__add_provider_ids.sql new file mode 100644 index 00000000..8f0962ea --- /dev/null +++ b/src/main/resources/db/migration/V36__add_provider_ids.sql @@ -0,0 +1,8 @@ +ALTER TABLE mst.refund_data + ADD COLUMN provider_id integer; + +ALTER TABLE mst.adjustment_data + ADD COLUMN provider_id integer; + +ALTER TABLE mst.chargeback_data + ADD COLUMN provider_id integer; \ No newline at end of file diff --git a/src/test/java/dev/vality/magista/dao/impl/ChargebackSearchDaoImplTest.java b/src/test/java/dev/vality/magista/dao/impl/ChargebackSearchDaoImplTest.java index 0e1a8c13..739b6f86 100644 --- a/src/test/java/dev/vality/magista/dao/impl/ChargebackSearchDaoImplTest.java +++ b/src/test/java/dev/vality/magista/dao/impl/ChargebackSearchDaoImplTest.java @@ -68,4 +68,20 @@ void chargebackSearchTest() { } + + @Test + @Sql("classpath:data/sql/search/chargeback_search_with_provider_id_data.sql") + void chargebackSearchWithProviderIdTest() { + ChargebackSearchQuery chargebackSearchQuery = new ChargebackSearchQuery() + .setCommonSearchQueryParams(new CommonSearchQueryParams() + .setPartyId("party_id_1") + .setShopIds(List.of("party_shop_id_1")) + .setProviderIds(List.of(1)) + .setFromTime("2016-10-25T15:45:20Z") + .setToTime("3018-10-25T18:10:10Z")); + List chargebacks = searchDao.getChargebacks(chargebackSearchQuery); + assertEquals(1, chargebacks.size()); + assertEquals(1, chargebacks.get(0).getProviderId().getId()); + + } } diff --git a/src/test/java/dev/vality/magista/dao/impl/RefundsSearchDaoImplTest.java b/src/test/java/dev/vality/magista/dao/impl/RefundsSearchDaoImplTest.java index d5a0bdfa..e8b11322 100644 --- a/src/test/java/dev/vality/magista/dao/impl/RefundsSearchDaoImplTest.java +++ b/src/test/java/dev/vality/magista/dao/impl/RefundsSearchDaoImplTest.java @@ -47,6 +47,20 @@ public void testSearchByInvoiceIds() { assertEquals(2, refunds.size()); } + @Test + @Sql("classpath:data/sql/search/refund_search_with_provider_id_data.sql") + public void testSearchByProviderId() { + RefundSearchQuery refundSearchQuery = new RefundSearchQuery() + .setCommonSearchQueryParams(new CommonSearchQueryParams() + .setPartyId("PARTY_ID_1") + .setShopIds(List.of("SHOP_ID_1")) + .setProviderIds(List.of(1)) + .setFromTime("2016-10-25T15:45:20Z") + .setToTime("3018-10-25T18:10:10Z")); + refundSearchQuery.setInvoiceIds(List.of("INVOICE_ID_1", "INVOICE_ID_2", "INVOICE_ID")); + List refunds = searchDao.getRefunds(refundSearchQuery); + assertEquals(1, refunds.size()); + } private RefundSearchQuery buildRefundSearchQuery() { return new RefundSearchQuery() diff --git a/src/test/resources/data/sql/search/chargeback_search_with_provider_id_data.sql b/src/test/resources/data/sql/search/chargeback_search_with_provider_id_data.sql new file mode 100644 index 00000000..9d157af4 --- /dev/null +++ b/src/test/resources/data/sql/search/chargeback_search_with_provider_id_data.sql @@ -0,0 +1,19 @@ +INSERT INTO mst.chargeback_data( + event_id, event_created_at, event_type, invoice_id, payment_id, chargeback_id, + party_id, party_shop_id, chargeback_status, chargeback_created_at, chargeback_reason, chargeback_reason_category, + chargeback_domain_revision, chargeback_party_revision, chargeback_levy_amount, chargeback_levy_currency_code, + chargeback_amount, chargeback_currency_code, chargeback_fee, chargeback_provider_fee, chargeback_external_fee, + chargeback_stage, chargeback_context, external_id, provider_id) + VALUES (1, now(), 'INVOICE_PAYMENT_CHARGEBACK_CREATED', 'invoice_id_1', 'payment_id_1', 'chargeback_id_1', + 'party_id_1', 'party_shop_id_1', 'pending', now(), 'some reason', 'fraud', + 1, 1, 1000, 'RUB', 1000, 'USD', 10, 10, 10, 'chargeback', null, 'ext_1', 1); + +INSERT INTO mst.chargeback_data( + event_id, event_created_at, event_type, invoice_id, payment_id, chargeback_id, + party_id, party_shop_id, chargeback_status, chargeback_created_at, chargeback_reason, chargeback_reason_category, + chargeback_domain_revision, chargeback_party_revision, chargeback_levy_amount, chargeback_levy_currency_code, + chargeback_amount, chargeback_currency_code, chargeback_fee, chargeback_provider_fee, chargeback_external_fee, + chargeback_stage, chargeback_context, external_id, provider_id) + VALUES (2, now(), 'INVOICE_PAYMENT_CHARGEBACK_CREATED', 'invoice_id_2', 'payment_id_1', 'chargeback_id_1', + 'party_id_1', 'party_shop_id_1', 'accepted', now(), 'some reason', 'dispute', + 1, 1, 1000, 'RUB', 1000, 'USD', 10, 10, 10, 'arbitration', null, 'ext_2', 2); \ No newline at end of file diff --git a/src/test/resources/data/sql/search/refund_search_with_provider_id_data.sql b/src/test/resources/data/sql/search/refund_search_with_provider_id_data.sql new file mode 100644 index 00000000..db09b48d --- /dev/null +++ b/src/test/resources/data/sql/search/refund_search_with_provider_id_data.sql @@ -0,0 +1,5 @@ +insert into mst.refund_data (event_id, event_created_at, event_type, party_id, party_shop_id, invoice_id, payment_id, refund_id, refund_status, refund_amount, refund_currency_code, refund_created_at, provider_id) +values (1, now(), 'INVOICE_PAYMENT_REFUND_CREATED', 'PARTY_ID_1', 'SHOP_ID_1', 'INVOICE_ID_1', '1', '1', 'pending', 5, 'RUB', now(), 1); + +insert into mst.refund_data (event_id, event_created_at, event_type, party_id, party_shop_id, invoice_id, payment_id, refund_id, refund_status, refund_amount, refund_currency_code, refund_created_at, provider_id) +values (2, now(), 'INVOICE_PAYMENT_REFUND_CREATED', 'PARTY_ID_1', 'SHOP_ID_1', 'INVOICE_ID_2', '1', '1', 'pending', 5, 'RUB', now(), 2); \ No newline at end of file From 447032f3406d2b69871dec9d8a9c9629ad25b53c Mon Sep 17 00:00:00 2001 From: kostyastruga Date: Fri, 6 Mar 2026 17:24:36 +0300 Subject: [PATCH 2/3] Add providers ids --- .../vality/magista/dao/impl/SearchDaoImpl.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java b/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java index 28b16cda..0d1fc7dc 100644 --- a/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java +++ b/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java @@ -196,7 +196,7 @@ public List getChargebacks(ChargebackSearchQuery chargebackSearc .addInConditionValue(CHARGEBACK_DATA.PARTY_SHOP_ID, commonParams.getShopIds()) .addInConditionValue(CHARGEBACK_DATA.PROVIDER_ID, - mapProviderIds(commonParams)) + commonParams.getProviderIds()) .addInConditionValue( CHARGEBACK_DATA.INVOICE_ID, chargebackSearchQuery.getInvoiceIds()) @@ -294,7 +294,7 @@ private ConditionParameterSource prepareRefundCondition(RefundSearchQuery search return new ConditionParameterSource() .addValue(REFUND_DATA.PARTY_ID, commonParams.getPartyId(), EQUALS) .addInConditionValue(REFUND_DATA.PARTY_SHOP_ID, commonParams.getShopIds()) - .addInConditionValue(REFUND_DATA.PROVIDER_ID, mapProviderIds(commonParams)) + .addInConditionValue(REFUND_DATA.PROVIDER_ID, , commonParams.getProviderIds()) .addInConditionValue(REFUND_DATA.INVOICE_ID, searchQuery.getInvoiceIds()) .addValue(REFUND_DATA.PAYMENT_ID, searchQuery.getPaymentId(), EQUALS) .addValue(REFUND_DATA.REFUND_ID, searchQuery.getRefundId(), EQUALS) @@ -414,20 +414,11 @@ private ConditionParameterSource prepareInvoicePaymentsCondition(ConditionParame : null, EQUALS) .addInConditionValue(PAYMENT_DATA.PARTY_SHOP_ID, commonParams.getShopIds()) - .addInConditionValue(PAYMENT_DATA.PROVIDER_ID, mapProviderIds(commonParams)) + .addInConditionValue(PAYMENT_DATA.PROVIDER_ID, commonParams.getProviderIds()) .addInConditionValue(PAYMENT_DATA.INVOICE_ID, invoiceIds); return paymentParameterSource; } - private List mapProviderIds(CommonSearchQueryParams commonParams) { - if (commonParams.getProviderIds() == null || commonParams.getProviderIds().isEmpty()) { - return null; - } - return commonParams.getProviderIds().stream() - .map(Integer::valueOf) - .collect(Collectors.toList()); - } - private Condition buildInvoiceTemplateStatusCondition(InvoiceTemplateSearchQuery invoiceTemplateSearchQuery) { Condition invoiceTemplateStatus = DSL.trueCondition(); if (invoiceTemplateSearchQuery.isSetInvoiceTemplateStatus()) { From d003064b9a9636e2444e835548adcd1a7828e657 Mon Sep 17 00:00:00 2001 From: kostyastruga Date: Fri, 6 Mar 2026 17:26:43 +0300 Subject: [PATCH 3/3] Add providers ids --- src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java b/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java index 0d1fc7dc..5c41b594 100644 --- a/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java +++ b/src/main/java/dev/vality/magista/dao/impl/SearchDaoImpl.java @@ -294,7 +294,7 @@ private ConditionParameterSource prepareRefundCondition(RefundSearchQuery search return new ConditionParameterSource() .addValue(REFUND_DATA.PARTY_ID, commonParams.getPartyId(), EQUALS) .addInConditionValue(REFUND_DATA.PARTY_SHOP_ID, commonParams.getShopIds()) - .addInConditionValue(REFUND_DATA.PROVIDER_ID, , commonParams.getProviderIds()) + .addInConditionValue(REFUND_DATA.PROVIDER_ID, commonParams.getProviderIds()) .addInConditionValue(REFUND_DATA.INVOICE_ID, searchQuery.getInvoiceIds()) .addValue(REFUND_DATA.PAYMENT_ID, searchQuery.getPaymentId(), EQUALS) .addValue(REFUND_DATA.REFUND_ID, searchQuery.getRefundId(), EQUALS)