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..5c41b594 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,
+ commonParams.getProviderIds())
.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, 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)
@@ -410,6 +414,7 @@ private ConditionParameterSource prepareInvoicePaymentsCondition(ConditionParame
: null,
EQUALS)
.addInConditionValue(PAYMENT_DATA.PARTY_SHOP_ID, commonParams.getShopIds())
+ .addInConditionValue(PAYMENT_DATA.PROVIDER_ID, commonParams.getProviderIds())
.addInConditionValue(PAYMENT_DATA.INVOICE_ID, invoiceIds);
return paymentParameterSource;
}
@@ -424,7 +429,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