From 6b7e764a70e9fe0f83c9637ab48354ce98125111 Mon Sep 17 00:00:00 2001 From: luoyang Date: Wed, 26 Jun 2019 16:24:03 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=90=88=E4=BC=99=E4=BA=BA=E6=8F=90?= =?UTF-8?q?=E6=88=90=20=E4=BF=AE=E5=A4=8Dsurcharge=5Fcashback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impls/CityPartnerPrizeServiceImpl.java | 28 +++++++++++++------ .../mappers/payment/TransactionMapper.xml | 4 ++- src/main/ui/MP_verify_8lb7qo78Ssfr5yBD.txt | 1 + 3 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 src/main/ui/MP_verify_8lb7qo78Ssfr5yBD.txt diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index 0e2c3bf07..1ea8bf8fd 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletResponse; import javax.swing.plaf.basic.BasicScrollPaneUI; import au.com.royalpay.payment.manage.mappers.system.ClientBankAccountMapper; +import au.com.royalpay.payment.manage.mappers.system.ClientRateMapper; import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.merchants.core.MerchantInfoProvider; import org.apache.commons.collections.CollectionUtils; @@ -499,9 +500,9 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { } for (JSONObject params : oneChannel.getValue()) { - BigDecimal tmpClearingAmount = params.getBigDecimal("clearing_amount").subtract(params.getBigDecimal("surcharge_cashback")); + BigDecimal tmpClearingAmount = params.getBigDecimal("clearing_amount"); BigDecimal channelRate = params.get("org_rate") != null ? params.getBigDecimal("org_rate") : (orgInfo.getBigDecimal(channel.toLowerCase() + "_rate_value").divide(CommonConsts.HUNDRED, 4, RoundingMode.DOWN)); - BigDecimal tmpTotalSurcharge = tmpClearingAmount.multiply(params.getBigDecimal("surcharge_rate")).setScale(2, RoundingMode.HALF_UP); + BigDecimal tmpTotalSurcharge = params.getBigDecimal("total_surcharge").subtract(params.getBigDecimal("surcharge_cashback")); //增加货币判断 int i = currencyScale(params.getString("clearing_currency")); total = total.add(tmpClearingAmount); @@ -542,9 +543,9 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { channel = "cb_bankpay"; } for (JSONObject params : oneChannel.getValue()) { - BigDecimal tmpClearingAmount = params.getBigDecimal("clearing_amount").subtract(params.getBigDecimal("surcharge_cashback")); + BigDecimal tmpClearingAmount = params.getBigDecimal("clearing_amount"); BigDecimal channelRate = params.get("org_rate") != null ? params.getBigDecimal("org_rate") : (orgInfo.getBigDecimal(channel.toLowerCase() + "_rate_value").divide(CommonConsts.HUNDRED, 4, RoundingMode.DOWN)); - BigDecimal tmpTotalSurcharge = tmpClearingAmount.multiply(params.getBigDecimal("surcharge_rate")).setScale(2, RoundingMode.HALF_UP); + BigDecimal tmpTotalSurcharge = params.getBigDecimal("total_surcharge").subtract(params.getBigDecimal("surcharge_cashback")); //增加货币判断 int i = currencyScale(params.getString("clearing_currency")); BigDecimal parent_surage = tmpClearingAmount.multiply(parentOrgInfo.getBigDecimal(channel.toLowerCase() + "_rate_value").divide(CommonConsts.HUNDRED, 4, RoundingMode.DOWN)).setScale(i, RoundingMode.HALF_UP); @@ -594,14 +595,21 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { Date dateto = new Date(); JSONObject json = new JSONObject(); String channel = oneChannel.getKey(); + String rateChannel = oneChannel.getKey(); if ("hf".equals(oneChannel.getKey().toLowerCase()) || "yeepay".equals(oneChannel.getKey().toLowerCase()) || "lakalapay".equals(oneChannel.getKey().toLowerCase())) { channel = "cb_bankpay"; + rateChannel = "CB_BankPay"; + } + JSONObject clientRate = null; + try { + clientRate = merchantInfoProvider.clientCurrentRate(clientId, oneChannel.getValue().get(0).getDate("transaction_time"), + rateChannel); + } catch (Exception e) { } - for (JSONObject params : oneChannel.getValue()) { - BigDecimal tmpClearingAmount = params.getBigDecimal("clearing_amount").subtract(params.getBigDecimal("surcharge_cashback")); + BigDecimal tmpClearingAmount = params.getBigDecimal("clearing_amount"); BigDecimal channelRate = params.get("org_rate") != null ? params.getBigDecimal("org_rate") : (orgInfo.getBigDecimal(channel.toLowerCase() + "_rate_value").divide(CommonConsts.HUNDRED, 4, RoundingMode.DOWN)); - BigDecimal tmpTotalSurcharge = tmpClearingAmount.multiply(params.getBigDecimal("surcharge_rate")).setScale(2, RoundingMode.HALF_UP); + BigDecimal tmpTotalSurcharge = params.getBigDecimal("total_surcharge").subtract(params.getBigDecimal("surcharge_cashback")); //增加货币判断 int i = currencyScale(params.getString("clearing_currency")); if (total.compareTo(BigDecimal.ZERO) == 0) { @@ -630,7 +638,11 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { json.put("record_id", recordId); json.put("client_id", clientId); - json.put("client_rate", oneChannel.getValue().get(0).getBigDecimal("surcharge_rate").multiply(CommonConsts.HUNDRED)); + if (clientRate != null) { + json.put("client_rate", clientRate.getBigDecimal("rate_value")); + }else { + json.put("client_rate", oneChannel.getValue().get(0).getBigDecimal("surcharge_rate").multiply(CommonConsts.HUNDRED)); + } json.put("gross_amount", total); json.put("total_charge", total_surage); json.put("org_rate", orgInfo.getBigDecimal(channel.toLowerCase() + "_rate_value")); diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml index c0f206355..23ae1f780 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml @@ -766,7 +766,9 @@ if(t.transaction_type = 'Credit', t.clearing_amount, -t.clearing_amount) clearing_amount, if(t.transaction_type = 'Credit', t.total_surcharge, -t.total_surcharge) total_surcharge, if(t.transaction_type = 'Credit', t.channel_surcharge, -t.channel_surcharge) channel_surcharge, - t.order_id + t.order_id, + t.org_rate, + t.surcharge_cashback from pmt_transactions t INNER JOIN sys_org so ON t.org_id = so.org_id AND so.is_valid = 1 AND so.type = 0 diff --git a/src/main/ui/MP_verify_8lb7qo78Ssfr5yBD.txt b/src/main/ui/MP_verify_8lb7qo78Ssfr5yBD.txt new file mode 100644 index 000000000..702b1ac18 --- /dev/null +++ b/src/main/ui/MP_verify_8lb7qo78Ssfr5yBD.txt @@ -0,0 +1 @@ +8lb7qo78Ssfr5yBD \ No newline at end of file