From 68a1942364d98636566044a05f02b0668a5ed623 Mon Sep 17 00:00:00 2001 From: luoyang Date: Thu, 8 Nov 2018 09:45:16 +0800 Subject: [PATCH 01/62] =?UTF-8?q?add=20&&=20fix=20=E5=95=86=E6=88=B7?= =?UTF-8?q?=E5=8F=B7=E7=AE=A1=E7=90=86\=E4=BC=98=E5=8C=96SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/ClientRatesAnalysisMapper.xml | 11 ++++----- .../analysis/mappers/OrderAnalysisMapper.xml | 8 +++---- src/main/ui/manage.html | 9 ++++++-- .../ui/static/menu/templates/main_menu.html | 23 +++++++++---------- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/ClientRatesAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/ClientRatesAnalysisMapper.xml index 6c4a23d6d..140c8d33e 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/ClientRatesAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/ClientRatesAnalysisMapper.xml @@ -30,13 +30,12 @@ INNER JOIN ( SELECT c.client_id, - count(o.order_id) orders + SUM(o.orders) orders FROM sys_clients c - LEFT JOIN pmt_orders o - ON o.client_id = c.client_id AND o.status > 4 - AND date(o.create_time) <= date(#{end}) - AND date(o.create_time) >= date(#{begin}) - and o.total_amount>10 + LEFT JOIN statistics_customer_order o + ON o.client_id = c.client_id AND o.total > 10 + AND date(o.date) <= date(#{end}) + AND date(o.date) >= date(#{begin}) WHERE c.approve_result=1 and c.is_valid=1 GROUP BY c.client_id ) c ON c.client_id = r.client_id diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/OrderAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/OrderAnalysisMapper.xml index 6c3265277..650a06208 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/OrderAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/OrderAnalysisMapper.xml @@ -197,10 +197,9 @@ - \ No newline at end of file + diff --git a/src/main/resources/templates/mail/gateway_email_notice.html b/src/main/resources/templates/mail/gateway_email_notice.html new file mode 100644 index 000000000..e2bbfbff9 --- /dev/null +++ b/src/main/resources/templates/mail/gateway_email_notice.html @@ -0,0 +1,32 @@ + + + + + + +
+
+
+ +
+
+

您好,

+

您有一笔收款信息如下:

+
+

RoyalPay到账提醒:

+
    +
  • 支付渠道:
  • +
  • 订单编号:
  • +
  • 收款金额: 
  • +
  • 到账时间:
  • +
+
+ 此致
+ RoyalPay +
+
+ +
+ + + diff --git a/src/main/ui/static/analysis/channels_analysis.js b/src/main/ui/static/analysis/channels_analysis.js index c9153a7db..2ebcd186f 100644 --- a/src/main/ui/static/analysis/channels_analysis.js +++ b/src/main/ui/static/analysis/channels_analysis.js @@ -158,7 +158,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' trigger: 'axis' }, legend: { - data: ['Alipay交易金额','AlipayOnline交易金额', 'Bestpay交易金额','Wechat交易金额',"JD Pay交易金额","HF Pay交易金额"], + data: ['Alipay交易金额','AlipayOnline交易金额', 'Bestpay交易金额','Wechat交易金额',"JD Pay交易金额","HF Pay交易金额","Yeepay交易金额"], bottom: 0, height: '15%', width: '80%', @@ -170,7 +170,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' type: 'value' } ], - color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"] + color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33","#66ff00"] }, xAxis: { basic: {type: 'category', boundaryGap: false}, @@ -242,6 +242,17 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' yAxisIndex: 0 }, column: {key: 'hf.total'} + }, + { + basic: { + name: 'Yeepay交易金额', + type: 'line', + label: {normal: {show: true}}, + showAllSymbols: true, + showSymbol: true, + yAxisIndex: 0 + }, + column: {key: 'Yeepay.total'} } ] }; @@ -252,7 +263,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' trigger: 'axis' }, legend: { - data: ['Alipay交易订单','AlipayOnline交易订单', 'Bestpay交易订单','Wechat交易订单',"JD Pay交易订单","HF Pay交易订单"], + data: ['Alipay交易订单','AlipayOnline交易订单', 'Bestpay交易订单','Wechat交易订单',"JD Pay交易订单","HF Pay交易订单","Yeepay交易订单"], bottom: 0, height: '15%', width: '80%', @@ -264,7 +275,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' type: 'value' } ], - color: ['#00a0e9','00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"] + color: ['#00a0e9','00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33","#66ff00"] }, xAxis: { basic: {type: 'category', boundaryGap: false}, @@ -336,7 +347,18 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' yAxisIndex: 0 }, column: {key: 'hf.orders'} - } + }, + { + basic: { + name: 'Yeepay交易订单', + type: 'line', + label: {normal: {show: true}}, + showAllSymbols: true, + showSymbol: true, + yAxisIndex: 0 + }, + column: {key: 'Yeepay.orders'} + }, ] }; var channels_single_amount_chart = { @@ -345,7 +367,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' trigger: 'axis' }, legend: { - data: ['Alipay交易客单价','AlipayOnline交易客单价', 'Bestpay交易客单价','Wechat交易客单价',"JD Pay交易客单价","HF Pay交易客单价"], + data: ['Alipay交易客单价','AlipayOnline交易客单价', 'Bestpay交易客单价','Wechat交易客单价',"JD Pay交易客单价","HF Pay交易客单价","Yeepay交易客单价"], bottom: 0, }, yAxis: [ @@ -354,7 +376,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' type: 'value' } ], - color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"] + color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33","#66ff00"] }, xAxis: { basic: {type: 'category', boundaryGap: false}, @@ -426,6 +448,17 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' yAxisIndex: 0 }, column: {key: 'hf.single_amount'} + }, + { + basic: { + name: 'Yeepay交易客单价', + type: 'line', + label: {normal: {show: true}}, + showAllSymbols: true, + showSymbol: true, + yAxisIndex: 0 + }, + column: {key: 'Yeepay.single_amount'} } ] }; diff --git a/src/main/ui/static/analysis/clearing-log.js b/src/main/ui/static/analysis/clearing-log.js index feeaaeb19..e8ceabfb6 100644 --- a/src/main/ui/static/analysis/clearing-log.js +++ b/src/main/ui/static/analysis/clearing-log.js @@ -545,8 +545,10 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func return '/static/images/hf_sign_lg.png'; case 'Rpay': return '/static/images/rpayplus_sign_lg.png'; + case 'Yeepay': + return '/static/images/yeepay_sign_lg.png'; } } }); return app; -}); \ No newline at end of file +}); diff --git a/src/main/ui/static/analysis/templates/customer_analysis.html b/src/main/ui/static/analysis/templates/customer_analysis.html index 099aba25f..72c40413d 100644 --- a/src/main/ui/static/analysis/templates/customer_analysis.html +++ b/src/main/ui/static/analysis/templates/customer_analysis.html @@ -203,6 +203,8 @@ uib-tooltip="HF Pay" ng-if="order.channel=='hf'"/> + {{order.order_id}} {{order.short_name}}(HF Pay | RPay + + ng-click="params.channel='RPAY';doAnalysis(1)">RPay + | + Yeepay

@@ -148,4 +150,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/analysis/templates/partner_customers_orders.html b/src/main/ui/static/analysis/templates/partner_customers_orders.html index 25b7e3865..88436a1f0 100644 --- a/src/main/ui/static/analysis/templates/partner_customers_orders.html +++ b/src/main/ui/static/analysis/templates/partner_customers_orders.html @@ -101,6 +101,10 @@ ng-click="params.channel='jd';doAnalysis(1)">JD Pay | HF Pay + RPay + | + Yeepay

@@ -133,4 +137,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/analysis/templates/partner_trans_analysis.html b/src/main/ui/static/analysis/templates/partner_trans_analysis.html index b282d5943..4af659a20 100644 --- a/src/main/ui/static/analysis/templates/partner_trans_analysis.html +++ b/src/main/ui/static/analysis/templates/partner_trans_analysis.html @@ -100,7 +100,9 @@ JD Pay | HF Pay + ng-click="params.channel='hf';doAnalysis(1)">HF Pay | + Yeepay

@@ -133,4 +135,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/analysis/templates/trans_analysis.html b/src/main/ui/static/analysis/templates/trans_analysis.html index f1ab22f81..f80936201 100644 --- a/src/main/ui/static/analysis/templates/trans_analysis.html +++ b/src/main/ui/static/analysis/templates/trans_analysis.html @@ -99,7 +99,9 @@ HF Pay | RPay + + ng-click="params.channel='RPAY';doAnalysis(1)">RPay + | + Yeepay

@@ -209,6 +211,15 @@ +
+
+
Yeepay
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Paying Surcharge
diff --git a/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html b/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html index 854e13fb7..5385003d5 100644 --- a/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html +++ b/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html @@ -172,6 +172,7 @@
  • JDpay
  • HFpay
  • Rpay+
  • +
  • Yeepay
  • @@ -212,4 +213,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/payment/partner/templates/partner_new_rate.html b/src/main/ui/static/payment/partner/templates/partner_new_rate.html index 6b6872b29..189a97ab1 100644 --- a/src/main/ui/static/payment/partner/templates/partner_new_rate.html +++ b/src/main/ui/static/payment/partner/templates/partner_new_rate.html @@ -160,6 +160,30 @@ +
    + +
    +
    + +
    %
    +
    +
    +
    + No more than 2.2% +
    +
    + No less than 0.6% +
    +
    + Required Field +
    +
    + +
    +
    +
    @@ -214,4 +238,4 @@ \ No newline at end of file +
    diff --git a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html index 630f9d6ab..da618eaeb 100644 --- a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html +++ b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html @@ -31,7 +31,9 @@ Partial Refund | Full Refund + ng-click="params.status='FULL_REFUNDED';loadTradeLogs(1)">Full Refund | + Yeepay

    @@ -87,7 +89,9 @@ HFpay | RPay + + ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay + | + Yeepay

    @@ -188,6 +192,7 @@ + {{trade.order_id}} @@ -371,4 +375,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html b/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html index 30380e9a6..3640a2c4b 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html @@ -45,6 +45,11 @@ +
  • + + + +
  • @@ -251,4 +256,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html b/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html index b69d79e45..c27eedccf 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html @@ -95,9 +95,11 @@ JD Pay | HF Pay + ng-click="params.channel='HF';loadTradeLogs(1)">HF Pay | RPay+ + ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay+ | + Yeepay

    @@ -325,6 +327,7 @@ + {{trade.order_id}}
    @@ -232,4 +237,4 @@ last-text="»">
    Total Records:{{pagination.totalCount}};Total Pages:{{pagination.totalPages}}
    - \ No newline at end of file + diff --git a/src/main/ui/static/payment/partner/templates/partner_payment_info.html b/src/main/ui/static/payment/partner/templates/partner_payment_info.html index 804ab968b..3cdc89959 100644 --- a/src/main/ui/static/payment/partner/templates/partner_payment_info.html +++ b/src/main/ui/static/payment/partner/templates/partner_payment_info.html @@ -56,6 +56,14 @@

    +
    + +
    +

    + {{paymentInfo.yeepay_sub_merchant_id||'初始化'}} +

    +
    +
    @@ -209,6 +217,12 @@
    +
    + +
    + +
    +
    @@ -354,6 +368,29 @@ +
    +
    + + +
    +
    + + +
    +   仅支持微信客户端扫描 +
    +
    +
    + +
    + +
    +
    diff --git a/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html b/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html index 8deec83d1..52b6da3ee 100644 --- a/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html +++ b/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html @@ -149,4 +149,65 @@ - \ No newline at end of file + +
    +
    +
    +
    +
    +
    +

    + Yeepay Sub Merchant Id : {{partner.yeepay_sub_merchant_id}} + +

    + +
    +
    +
    +
    +

    List of Sub Merchant Id

    +
    +
    +
      +
    • + Sub Merchant Id + (当前使用){{id_apply.sub_merchant_id}} +
    • +
    • + Apply Time + +
    • +
    • + Business Content + {{id_apply.business_content | yeepayBusinessContent}} +
    • +
    • + Business Category + {{id_apply.industry | yeepayIndustry}} +
    • +
    • + Operator + +
    • +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/src/main/ui/static/payment/tradelog/templates/balance_report.html b/src/main/ui/static/payment/tradelog/templates/balance_report.html index c6acfce95..91feaa526 100644 --- a/src/main/ui/static/payment/tradelog/templates/balance_report.html +++ b/src/main/ui/static/payment/tradelog/templates/balance_report.html @@ -97,7 +97,9 @@ HF Pay | RPay + + ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay + | + Yeepay

    @@ -298,6 +300,8 @@ uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/> + {{trade.order_id2}}
    @@ -386,4 +389,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/payment/tradelog/templates/trade_logs.html b/src/main/ui/static/payment/tradelog/templates/trade_logs.html index b4a3173f4..baa6712bd 100644 --- a/src/main/ui/static/payment/tradelog/templates/trade_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/trade_logs.html @@ -135,7 +135,9 @@ HF Pay | RPay + + ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay + | + Yeepay

    @@ -355,6 +357,8 @@ uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/> + {{trade.order_id}}
    @@ -405,4 +409,4 @@ - \ No newline at end of file + From 285a436a9133fa0af0cf4dfb36097daca9dd78cc Mon Sep 17 00:00:00 2001 From: lujian Date: Mon, 12 Nov 2018 11:13:12 +0800 Subject: [PATCH 10/62] =?UTF-8?q?[fix]=E9=A3=8E=E6=8E=A7=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/impl/RiskBusinessServiceImpl.java | 8 +++++-- .../manage/mappers/payment/OrderMapper.xml | 3 ++- .../templates/mail/risk_upload_mail.html | 1 + src/main/ui/static/analysis/risk_business.js | 9 ++++++-- .../analysis/templates/new_riskEvent.html | 8 ++++--- .../analysis/templates/riskEvent_detail.html | 22 +++++++++++++------ .../analysis/templates/risk_business.html | 4 ++-- 7 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 365852461..a547c05b8 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -204,14 +204,17 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo for (int i = 0; i < orderIdArray.length; i++) { JSONObject orderInfo = orderMapper.findOrderById(orderIdArray[i],client.getIntValue("client_id")); // 判断该笔订单是否存在,是否属于该商户 + // 由于查询订单时已经关联商户了,所以只会抛出订单不匹配的异常 if (orderInfo == null) - throw new OrderNotExistsException(); + throw new OrderNotMatchException(); + /* else { - if (!clientMoniker.equals(orderInfo.getString("partner_code"))) { + if (!clientMoniker.equals(orderInfo.getString("client_moniker"))) { throw new OrderNotMatchException(); } orderAmountList.add(orderInfo.getString("total_amount")); } + */ } params.put("order_amounts", StringUtils.join(orderAmountList, ",")); } @@ -444,6 +447,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo ctx.setVariable("uploadUrl", uploadUrl); ctx.setVariable("royalpay_order_type", event.getIntValue("royalpay_order_type")); ctx.setVariable("warning_order_type", event.getIntValue("warning_order_type")); + ctx.setVariable("description", event.getString("description")); String[] orderIds = event.getString("order_ids").split(","); List orders = new ArrayList(); switch (event.getIntValue("order_type")){ diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml index 2eb0ebb9b..818a9fd68 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml @@ -750,6 +750,7 @@
    +

    2、

    如果提交的材料不齐, 则有关停支付的风险。感谢,辛苦。

    Submit Risk Materials

    diff --git a/src/main/ui/static/analysis/risk_business.js b/src/main/ui/static/analysis/risk_business.js index fa8177534..409aaddc8 100644 --- a/src/main/ui/static/analysis/risk_business.js +++ b/src/main/ui/static/analysis/risk_business.js @@ -161,8 +161,8 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], } ]); - app.controller('riskEventDetailCtrl', ['$scope', '$state', '$http', '$uibModal', '$filter', 'Upload', 'commonDialog', 'riskEvent', - function ($scope, $state, $http, $uibModal, $filter, Upload, commonDialog, riskEvent) { + app.controller('riskEventDetailCtrl', ['$scope', '$state', '$http', '$uibModal', '$filter', 'Upload', 'commonDialog', 'riskEvent', 'orderService', + function ($scope, $state, $http, $uibModal, $filter, Upload, commonDialog, riskEvent, orderService) { $scope.orderTypes = orderTypesMap; $scope.resultTypes = resultTypesMap; @@ -279,6 +279,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], }) }; + // 发送email $scope.resendUploadEmail = function () { commonDialog.confirm({ title: 'Warning', @@ -295,6 +296,10 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], }) }; + // 订单详情 + $scope.showTradeDetail = function (order) { + orderService.managerOrderDetail(order) + }; // 以下为BD上传材料相关 $scope.material={}; diff --git a/src/main/ui/static/analysis/templates/new_riskEvent.html b/src/main/ui/static/analysis/templates/new_riskEvent.html index 4900bf874..c48e47f96 100644 --- a/src/main/ui/static/analysis/templates/new_riskEvent.html +++ b/src/main/ui/static/analysis/templates/new_riskEvent.html @@ -158,15 +158,17 @@ ng-if="riskEvent.order_type != 4" ng-class="{'has-error':riskEventForm.order_ids.$invalid && riskEventForm.order_ids.$dirty}"> + for="order-ids-input">Platform Transaction IDs
    - +

    - +

    @@ -227,8 +227,8 @@ Partner - Order ID Platform Transaction ID + Order ID Order Description Customer ID IP @@ -247,8 +247,8 @@ {{trade.client.short_name}}({{trade.client.client_moniker}}) - {{trade.order_id}} {{trade.system_transaction_id}} + {{trade.order_id}} {{trade.order_description}} {{trade.customer_id}} {{trade.customer_ip}} @@ -267,6 +267,7 @@ + @@ -275,24 +276,31 @@ + + +
    Platform Transaction ID Order ID Amount Input AmountStatus Create Time GatewayOperation
    {{trade.system_transaction_id}} {{trade.order_id}} {{trade.currency}} {{trade.total_amount}} {{trade.currency}} {{trade.display_amount}} AUD {{trade.clearing_amount}} - - + + - + + + +
    @@ -389,7 +397,7 @@ ng-if="riskEventEdit.order_type != 4" ng-class="{'has-error':riskEventForm.order_ids.$invalid && riskEventForm.order_ids.$dirty}">

    - +
    Date: Mon, 12 Nov 2018 19:43:55 +0800 Subject: [PATCH 11/62] =?UTF-8?q?[fix]=E9=A3=8E=E6=8E=A7=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/payment/TransactionMapper.java | 12 +++ .../mappers/riskbusiness/RiskEventMapper.java | 3 + .../core/RiskBusinessService.java | 7 ++ .../core/impl/RiskBusinessServiceImpl.java | 94 ++++++++++++++----- .../web/RiskBusinessController.java | 13 +++ .../manage/mappers/payment/OrderMapper.xml | 11 +-- src/main/ui/static/analysis/risk_business.js | 2 + .../analysis/templates/riskEvent_detail.html | 14 ++- .../analysis/templates/risk_business.html | 8 +- 9 files changed, 126 insertions(+), 38 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java index d2b2a2dac..8f4ab97b4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java @@ -9,6 +9,7 @@ import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.github.miemiedev.mybatis.paginator.domain.PageList; import org.apache.ibatis.annotations.Param; import org.joda.time.DateTime; +import org.springframework.beans.factory.annotation.Autowired; import java.math.BigDecimal; import java.util.Date; @@ -145,4 +146,15 @@ public interface TransactionMapper { List getHfClearAmount(JSONObject params); List analysisForATOReport(@Param("clientId") int clientId, @Param("from") Date startOfMon, @Param("to") Date endOfMon); + + /** + * 付款退款都是同一个退款单号 + * @param clientId + * @param systemTransactionId + * @return + */ + @AutoSql(type = SqlType.SELECT) + PageList findByClientIdAndSystemTransactionId(@Param("client_id") int clientId, + @Param("system_transaction_id") String systemTransactionId, + PageBounds pageBounds); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java index d27b4351b..200a00356 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java @@ -31,4 +31,7 @@ public interface RiskEventMapper { @AutoSql(type = SqlType.SELECT) JSONObject findById(@Param("risk_id") String riskId); + @AutoSql(type = SqlType.DELETE) + void deleteRiskEvent(@Param("risk_id") String risk_id); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java index 52ccf932d..bb6a2be17 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java @@ -84,4 +84,11 @@ public interface RiskBusinessService { * @return */ JSONObject getRiskMaterial(JSONObject param); + + /** + * 补全历史数据的real_order_ids + */ + void completeEventRealOrderIds(); + + void deleteRiskEvent(String riskId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index a547c05b8..b6b9f3510 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -6,6 +6,7 @@ import au.com.royalpay.payment.core.exceptions.OrderNotExistsException; import au.com.royalpay.payment.core.exceptions.OrderNotMatchException; import au.com.royalpay.payment.manage.mappers.log.AppMessageLogMapper; import au.com.royalpay.payment.manage.mappers.payment.OrderMapper; +import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper; import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskEventMapper; import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskFileMapper; import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskMaterialMapper; @@ -77,6 +78,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Resource private OrderMapper orderMapper; @Resource + private TransactionMapper transactionMapper; + @Resource private StringRedisTemplate stringRedisTemplate; @Resource private SpringTemplateEngine thymeleaf; @@ -146,21 +149,20 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Override public List getRiskEventOrderList(JSONObject riskEvent) { - String orderIds = riskEvent.getString("order_ids"); + //String orderIds = riskEvent.getString("order_ids"); + String realOrderIds = riskEvent.getString("real_order_ids"); JSONObject client = clientMapper.findClientByMonikerAll(riskEvent.getString("client_moniker")); List tradeLogs = new ArrayList<>(); /** * 通用号调单会有client为空的情况,所以无法查到订单信息 */ - if (client != null && StringUtils.isNotBlank(orderIds)) { - String[] orderIdArray = orderIds.trim().split(","); + if (client != null && StringUtils.isNotBlank(realOrderIds)) { + String[] orderIdArray = realOrderIds.trim().split(","); JSONObject orderInfo = new JSONObject(); - String realOrderId = ""; // 获取订单信息 if (riskEvent.getIntValue("order_type") == 3) { for (int i = 0; i < orderIdArray.length; i++) { - realOrderId = orderMapper.findOrderById(orderIdArray[i],client.getIntValue("client_id")).getString("order_id"); - orderInfo = tradeLogService.getOrderDetail(new JSONObject(), riskEvent.getString("client_moniker"), realOrderId, null); + orderInfo = tradeLogService.getOrderDetail(new JSONObject(), riskEvent.getString("client_moniker"), orderIdArray[i], null); tradeLogs.add(orderInfo); } } else { @@ -173,8 +175,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo return tradeLogs; } - @Override - public void addRiskEvent(JSONObject params, JSONObject manager) { + private JSONObject getEvent(JSONObject params) { // 通用号调单不需要填写client_moniker JSONObject client = null; String clientMoniker = params.getString("client_moniker"); @@ -185,8 +186,6 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } } - params.put("fillin_id", manager.getString("manager_id")); - params.put("fillin_person", manager.getString("display_name")); String orderIds = params.getString("order_ids"); if (StringUtils.isNotBlank(orderIds)) { // 去除所有空格与中文逗号',' @@ -195,6 +194,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo params.put("order_ids", orderIds); String[] orderIdArray = orderIds.split(","); List orderAmountList = new ArrayList<>(); + List realOrderIdList = new ArrayList<>(); /** * 通用号调单的时候,是不用填写client_moniker的,但是系统需要client_id关联查询订单信息, * 所以当client为空的时候,就不去校验订单的信息了,从而order_amounts字段为空 @@ -202,10 +202,10 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo */ if (client != null) { for (int i = 0; i < orderIdArray.length; i++) { - JSONObject orderInfo = orderMapper.findOrderById(orderIdArray[i],client.getIntValue("client_id")); + PageList transactionList = transactionMapper.findByClientIdAndSystemTransactionId(client.getIntValue("client_id"), orderIdArray[i], new PageBounds(Order.formString("transaction_time.desc"))); // 判断该笔订单是否存在,是否属于该商户 // 由于查询订单时已经关联商户了,所以只会抛出订单不匹配的异常 - if (orderInfo == null) + if (transactionList == null || transactionList.size() <= 0) throw new OrderNotMatchException(); /* else { @@ -215,15 +215,27 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo orderAmountList.add(orderInfo.getString("total_amount")); } */ + + // 将订单order_id存入数据库方便后面快速查询 + JSONObject orderInfo = transactionList.get(0); + realOrderIdList.add(orderInfo.getString("order_id")); + orderAmountList.add(orderInfo.getString("transaction_amount")); } params.put("order_amounts", StringUtils.join(orderAmountList, ",")); + params.put("real_order_ids", StringUtils.join(realOrderIdList, ",")); } } + return params; + } + @Override + public void addRiskEvent(JSONObject params, JSONObject manager) { + params = getEvent(params); riskEventMapper.save(params); } @Override public void updateRiskEvent(JSONObject params) { + params = getEvent(params); riskEventMapper.update(params); } @@ -280,7 +292,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo event.put("result_type", RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType()); event.put("submit_url",uploadUrl); Integer orderType = event.getInteger("order_type"); - if (orderType == RiskOrderTypeEnum.WARNING_ORDER.getOrderType()) { + if (orderType.equals(RiskOrderTypeEnum.WARNING_ORDER.getOrderType())) { event.put("result_type", RiskResultTypeEnum.ALREADY_HANDLED.getResultType()); } riskEventMapper.update(event); @@ -291,8 +303,6 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo if(event.getIntValue("order_type")==3){ sendAppRiskMessage(event); } - - } private void sendAppRiskMessage(JSONObject event){ @@ -448,12 +458,13 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo ctx.setVariable("royalpay_order_type", event.getIntValue("royalpay_order_type")); ctx.setVariable("warning_order_type", event.getIntValue("warning_order_type")); ctx.setVariable("description", event.getString("description")); - String[] orderIds = event.getString("order_ids").split(","); + //String[] orderIds = event.getString("order_ids").split(","); + String[] realOrderIds = event.getString("real_order_ids").split(","); List orders = new ArrayList(); switch (event.getIntValue("order_type")){ case 1: case 2: - for(String orderId : orderIds){ + for(String orderId : realOrderIds){ JSONObject order = orderMapper.findOrderById(orderId,client.getIntValue("client_id")); if(order==null){ throw new BadRequestException("Order: "+orderId+" not exists"); @@ -465,10 +476,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo ctx.setVariable("emailsTos", bdEmails); break; case 3: - String realOrderId = ""; - for(String orderId : orderIds){ - realOrderId = orderMapper.findOrderById(orderId,client.getIntValue("client_id")).getString("order_id"); - JSONObject order = tradeLogService.getOrderDetail(new JSONObject(), clientMoniker, realOrderId, null); + for(String orderId : realOrderIds){ + JSONObject order = tradeLogService.getOrderDetail(new JSONObject(), clientMoniker, orderId, null); if(order==null){ throw new BadRequestException("Order: "+orderId+" not exists"); } @@ -526,16 +535,42 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo return null; } + @Override + public void completeEventRealOrderIds() { + List riskEventList = getRiskEvents(null); + if (riskEventList != null && riskEventList.size() > 0) { + for (JSONObject riskEvent : riskEventList) { + String clientMoniker = riskEvent.getString("client_moniker"); + JSONObject client = clientMapper.findClientByMonikerAll(clientMoniker); + String systemTransactionIds = riskEvent.getString("order_ids"); + if (StringUtils.isBlank(systemTransactionIds)) + continue; + String[] systemTransactionIdArr = riskEvent.getString("order_ids").split(","); + List realOrderIds = new ArrayList<>(); + if (client == null) + continue; + for (int i = 0; i < systemTransactionIdArr.length; i++) { + PageList transactionList = transactionMapper.findByClientIdAndSystemTransactionId( + client.getIntValue("client_id"), + systemTransactionIdArr[i], + new PageBounds(Order.formString("transaction_time.desc"))); + if (transactionList != null && transactionList.size() > 0) + realOrderIds.add(transactionList.get(0).getString("order_id")); + } + riskEvent.put("real_order_ids", StringUtils.join(realOrderIds, ",")); + //updateRiskEvent(riskEvent); + riskEventMapper.update(riskEvent); + } + } + } private byte[] generateRiskOrders(JSONObject event) throws IOException { String[] orderIds = event.getString("order_ids").split(","); JSONObject client = clientMapper.findClientByMonikerAll(event.getString("client_moniker")); Workbook wb = new XSSFWorkbook(); - String realOrderId = ""; for(String orderId : orderIds){ - realOrderId = orderMapper.findOrderById(orderId,client.getIntValue("client_id")).getString("order_id"); - JSONObject orderDetail = tradeLogService.getOrderDetail(new JSONObject(), event.getString("client_moniker"), realOrderId, null); + JSONObject orderDetail = tradeLogService.getOrderDetail(new JSONObject(), event.getString("client_moniker"), orderId, null); Sheet sheet = wb.createSheet(orderId); sheet.setDefaultColumnWidth((short) 40); Row row0 = sheet.createRow(0); @@ -652,6 +687,11 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Override public void checkTodo(JSONObject manager, List notices) { + /** + * 1、判断登录的角色是不是BD + * 2、列出BD管理的商户 + * 3、 + */ if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) { JSONObject params = new JSONObject(); params.put("bd_id", manager.getString("manager_id")); @@ -681,4 +721,10 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } } } + + @Override + public void deleteRiskEvent(String riskId) { + riskEventMapper.deleteRiskEvent(riskId); + } + } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java index b92252ec5..837a29134 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java @@ -56,6 +56,8 @@ public class RiskBusinessController { @PostMapping(value = "events") public void RegisterRiskEvent(@RequestBody JSONObject params, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + params.put("fillin_id", manager.getString("manager_id")); + params.put("fillin_person", manager.getString("display_name")); riskBusinessService.addRiskEvent(params, manager); } @@ -128,5 +130,16 @@ public class RiskBusinessController { JSONObject param = partnerQuery.toJsonParam(); return clientManager.getClientBySimpleQuery(param); } + + // 更新库中的orderIds + @GetMapping(value = "/complete/real_order_id") + public void completeEventRealOrderIds() { + riskBusinessService.completeEventRealOrderIds(); + } + + @GetMapping(value = "/delete/event") + public void deleteRiskEvent(@RequestParam("risk_id") String riskId) { + riskBusinessService.deleteRiskEvent(riskId); + } } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml index 818a9fd68..4c51f4555 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml @@ -739,14 +739,6 @@ - +
    +
    + + +
    +
    +
    From 0322fc05706621bfb926c2418e997e58f370e219 Mon Sep 17 00:00:00 2001 From: lujian Date: Wed, 14 Nov 2018 09:09:00 +0800 Subject: [PATCH 14/62] =?UTF-8?q?[fix]=E9=A3=8E=E6=8E=A7=E5=AF=B9app?= =?UTF-8?q?=E7=AB=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appclient/web/RetailAppController.java | 69 ++++++++++++++ .../core/RiskBusinessService.java | 18 ++++ .../core/impl/RiskBusinessServiceImpl.java | 90 ++++++++++++++++++- .../web/RiskBusinessController.java | 1 + .../mappers/riskbusiness/RiskEventMapper.xml | 15 ++++ 5 files changed, 192 insertions(+), 1 deletion(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java index 2b0c92902..92569a46c 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java @@ -13,6 +13,9 @@ import au.com.royalpay.payment.manage.bill.core.BillOrderService; import au.com.royalpay.payment.manage.bill.core.BillService; import au.com.royalpay.payment.manage.merchants.beans.ClientAuthFilesInfo; import au.com.royalpay.payment.manage.merchants.beans.ClientUpdateInfo; +import au.com.royalpay.payment.manage.riskbusiness.bean.RiskEventQuery; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskUploadService; import au.com.royalpay.payment.manage.settlement.core.ManualSettleSupport; import au.com.royalpay.payment.manage.signin.beans.ChangePwdBean; import au.com.royalpay.payment.manage.signin.core.SignInStatusManager; @@ -29,9 +32,11 @@ import au.com.royalpay.payment.tools.merchants.beans.UpdateSurchargeDTO; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.Errors; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -75,6 +80,11 @@ public class RetailAppController { @Resource private AttachmentClient attachmentClient; + @Autowired + private RiskBusinessService riskBusinessService; + + @Autowired + private RiskUploadService riskUploadService; @RequestMapping(value = "/token", method = RequestMethod.PUT) public void updateDevToken(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device, @RequestBody JSONObject token) { @@ -565,4 +575,63 @@ public class RetailAppController { retailAppService.cancelCouponAccuessLog(accuess_id, remark); } + /** + * app端获取风控通知信息 + * @param clientId + * @return + */ + @GetMapping(value = "/risk/business/notice") + public JSONObject riskNotice(@RequestParam("client_id") int clientId) { + return riskBusinessService.getNoticeInfo(clientId); + } + + /** + * app端风控事件列表接口 + * @param riskEventQuery + * @return + */ + @GetMapping(value = "/risk/business/events") + public JSONObject getRiskEvents(RiskEventQuery riskEventQuery) { + JSONObject param = riskEventQuery.toJSON(); + param.put("client_moniker", riskEventQuery.getClientMoniker()); + return riskBusinessService.getRiskEventsByPage(param, null); + } + + /** + * app端风控事件详情接口 + * @param riskId + * @return + */ + @GetMapping(value = "/risk/business/events/{risk_id}") + public JSONObject getRiskEventDetail(@PathVariable("risk_id") String riskId) { + JSONObject riskEvent = riskBusinessService.getRiskEventDetail(riskId); + List tradeLogs = riskBusinessService.getRiskEventOrderList(riskEvent); + riskEvent.put("tradeLogs", tradeLogs); + return riskEvent; + } + + /** + * app端获取风控事件上传的材料信息 + * @param riskId + * @return + */ + @GetMapping(value = "/risk/business/events/{risk_id}/materials") + public JSONObject getRiskEventMaterialsRemark(@PathVariable("risk_id") String riskId) { + return riskBusinessService.getRiskEventMaterialsRemark(riskId); + } + + /** + * app端上传调单材料接口 + * @param material + */ + @PostMapping(value = "/risk/business/events") + public void uploadMaterial(@RequestBody JSONObject material) { + riskUploadService.submitMaterial(material); + } + + @RequestMapping(value = "/risk/business/upload/files", method = RequestMethod.POST) + public JSONObject uploadImage(@RequestParam MultipartFile file) throws Exception { + return attachmentClient.uploadFile(file,false); + } + } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java index bb6a2be17..83a9cb955 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java @@ -90,5 +90,23 @@ public interface RiskBusinessService { */ void completeEventRealOrderIds(); + /** + * 删除事件 + * @param riskId + */ void deleteRiskEvent(String riskId); + + /** + * 商户端获取通知信息 + * @param clientId + * @return + */ + JSONObject getNoticeInfo(int clientId); + + /** + * 获取风控事件所需上传的材料说明 + * @param riskId + * @return + */ + JSONObject getRiskEventMaterialsRemark(String riskId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index b6b9f3510..f36badc9b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -30,6 +30,7 @@ import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import au.com.royalpay.payment.tools.exceptions.ServerErrorException; import au.com.royalpay.payment.tools.threadpool.RoyalThreadPoolExecutor; import au.com.royalpay.payment.tools.utils.PageListUtils; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.miemiedev.mybatis.paginator.domain.Order; import com.github.miemiedev.mybatis.paginator.domain.PageBounds; @@ -46,6 +47,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.thymeleaf.context.Context; import org.thymeleaf.spring4.SpringTemplateEngine; @@ -113,7 +115,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo public JSONObject getRiskEventsByPage(JSONObject params, JSONObject manager) { // 如果登录的角色是BD,添加查询条件result_type为1,2,3,4,order_type为1或者2 - if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) { + if (manager != null && ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) { params.put("bd_id", manager.getString("manager_id")); List orderTypes = Arrays.asList(RiskOrderTypeEnum.WECHAT_ORDER.getOrderType(), RiskOrderTypeEnum.ALIPAY_ORDER.getOrderType()); @@ -536,6 +538,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } @Override + @Transactional public void completeEventRealOrderIds() { List riskEventList = getRiskEvents(null); if (riskEventList != null && riskEventList.size() > 0) { @@ -727,4 +730,89 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo riskEventMapper.deleteRiskEvent(riskId); } + @Override + public JSONObject getNoticeInfo(int clientId) { + + JSONObject client = clientMapper.findClient(clientId); + if(client == null){ + throw new InvalidShortIdException(); + } + JSONObject params = new JSONObject(); + params.put("is_send_client", 1); + List resultTypes = Arrays.asList(RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType(), + RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType()); + params.put("result_types", resultTypes); + PageList riskEventList = riskEventMapper.listRisksByPage(params, new PageBounds(Order.formString("create_time.desc"))); + + JSONObject result = new JSONObject(); + result.put("notice_flag", false); + if (riskEventList != null && riskEventList.size() > 0) { + result.put("notice_flag", true); + } + return result; + } + + @Override + public JSONObject getRiskEventMaterialsRemark(String riskId) { + JSONObject riskEvent = riskEventMapper.findById(riskId); + Integer orderType = riskEvent.getInteger("order_type"); + List materialItemList = new ArrayList<>(); + + List materialsRemark = new ArrayList<>(); + if (orderType.equals(RiskOrderTypeEnum.WECHAT_ORDER.getOrderType())) { + materialsRemark = Arrays.asList( + "1、物流公司发货单据照片 要求:每笔交易对应的物流单必须提供,且单据必须清晰可见\n" + + "Photos of logistics companies’ goods-delivery documents Requirement: The logistics order record corresponding to each transaction must be provided, and details of records should be clearly visible. ", + "2、用户购买虚拟物品需要提供聊天记录、订单信息、发货凭证截图、 虚拟物品最终消费场景(例如何种游戏、软件)、提供消费场景网址/下载链接 要求:每笔交易对应的截图必须清晰可见\n" + + "Users need to provide chat records, order information, screenshots of delivery documents, final consumption scenarios of virtual goods (such as games, software); provide consumer scene URL / download link. Requirement: The screenshot corresponding to each transaction must be clearly visible. ", + "3、购物小票/发票存根照片 照片应清晰,必须显示商户名称、商户地址、购物时间、物品名称 购物金额等\n" + + "Photos of shopping receipts/ invoice stubs Requirement: The photos should be clear and must show Merchant name, Business address, Transaction time, Product information, Quantity purchased, etc. ", + "4、显示商户门牌号码和店头名称的照片 要求:清晰可见,至少一张\n" + + "Photos of Merchant Street number & Merchant name Requirement: At least one visible photo ", + "5、显示商户营业场景所场内部情况(如店内商品陈列、收银台等)的照片 要求:照片清晰,且能清楚显示商户实际售卖物品或服务,至少三张\n" + + "Photos of internal environment of merchant business (such as in-store merchandise display, checkout counter, etc.) Requirements: The photos (at least three) showing merchant activities including actual selling-goods or services obviously ", + "6、其他图片\n" + + "Other pictures " + ); + } else if (orderType.equals(RiskOrderTypeEnum.ALIPAY_ORDER.getOrderType())) { + String alipayMaterials = riskEvent.getString("alipay_materials"); + if (StringUtils.isNotBlank(alipayMaterials)) { + List alipayMaterialRemarkList = JSONObject.parseArray(alipayMaterials, JSONObject.class); + if (alipayMaterialRemarkList != null && alipayMaterialRemarkList.size() > 0) { + for (int i = 0; i < alipayMaterialRemarkList.size(); i++) { + materialsRemark.add(alipayMaterialRemarkList.get(i).getString("question" + (i + 1))); + } + } + } + } else if (orderType.equals(RiskOrderTypeEnum.ROYALPAY_ORDER.getOrderType())) { + materialsRemark = Arrays.asList( + "1.请解释相应的消费场景/业务模式,例如网站商城,扫码支付, 消费者到店支付等;\n" + + "Please explain the relative payment scenario/business activities, for example, online store, QR code payment, payment at the store, etc;", + "2.提供相应购物清单,订单小票(请提供与被查交易订单号相匹配的交易时间及金额的发票);\n" + + "Provide related shopping lists, invoices. (Please provide the invoices, amount of which matches that of the abnormal transaction);", + "3.提供相应的发货证明,报关单(若有消费者在国内购买,请提供物流单据或报关单);\n" + + "Relative proof of delivery, customs declaration (If the consumer purchased from China, please provide shipping receipt or customs declaration);", + "4.提供您的门店照片(门店照及店铺内的照片各一张, 一张可以看到商户名的门头照,一张可以看到相关商品或服务的店内照片);\n" + + "Photos of the store ( one of each front-store and in-store);", + "5.其他可以还原交易背景的资料,如和消费者的聊天记录等,来佐证被查单号交易的真实性;\n" + + "Other materials that can verify the payment scenario, for example, chatting history, to prove the truth of the transactions;", + "6、其他图片\n" + + "Other pictures" + ); + } + + JSONObject material = getRiskMaterial(riskEvent); + for (int i = 0; i < materialsRemark.size(); i++) { + JSONObject materialItem = new JSONObject(); + materialItem.put("question" + (i + 1), materialsRemark.get(i)); + if (material != null) + materialItem.put("file" + (i + 1), material.getJSONArray("file" + (i + 1))); + materialItemList.add(materialItem); + } + JSONObject result = new JSONObject(); + result.put("material", materialItemList); + if (material != null && material.containsKey("description")) + result.put("description", material.getString("description")); + return result; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java index 837a29134..60ef91875 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java @@ -30,6 +30,7 @@ import java.util.List; */ @RestController @ManagerMapping(value = "/risk/business/", role = {ManagerRole.OPERATOR, ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.RISK_MANAGER}) +//@RequestMapping(value = "/risk/business/") public class RiskBusinessController { @Autowired diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml index b9bf6b672..b666dc8d1 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml @@ -23,6 +23,9 @@ re.in_user_blacklist, re.processed_remark, re.create_time, + re.alipay_materials, + re.is_send_client, + re.real_order_ids, sc.industry, sc.short_name, IFNULL(sc.sub_merchant_id, re.sub_merchant_id) sub_merchant_id @@ -66,10 +69,15 @@ AND re.risk_id = #{risk_id} + AND re.client_moniker = #{client_moniker} + + AND re.is_send_client = #{is_send_client} + + #{order_type_item} @@ -93,19 +101,26 @@ AND re.order_ids LIKE CONCAT('%', #{order_ids}, '%') + AND sc.sub_merchant_id = #{sub_merchant_id} + AND sc.industry = #{industry} + AND re.receive_email_date = #{receive_email_date} + AND re.reply_email_date = #{reply_email_date} + + AND re.real_order_ids = #{real_order_ids} + \ No newline at end of file From 7be33376abc2906f4c7511fb99034e676f7275fe Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Wed, 14 Nov 2018 10:02:04 +0800 Subject: [PATCH 15/62] Yeepay Order Dev --- .../royalpay/payment/manage/dev/web/TestController.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java b/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java index 57adeb692..4e654a8b6 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java @@ -6,6 +6,7 @@ import au.com.royalpay.payment.channels.bestpay.runtime.BestPayClient; import au.com.royalpay.payment.channels.jd.runtime.JDClient; import au.com.royalpay.payment.channels.rpay.runtime.RpayClient; import au.com.royalpay.payment.channels.wechat.runtime.WxPayClient; +import au.com.royalpay.payment.channels.yeepay.runtime.YeePayClient; import au.com.royalpay.payment.core.PaymentApi; import au.com.royalpay.payment.core.exceptions.InvalidShortIdException; import au.com.royalpay.payment.core.exceptions.OrderNotExistsException; @@ -102,6 +103,8 @@ public class TestController implements ApplicationEventPublisherAware { @Resource private RpayClient rpayClient; @Resource + private YeePayClient yeepayClient; + @Resource private TradeLogService tradeLogService; @Resource private RetailAppService retailAppService; @@ -306,6 +309,9 @@ public class TestController implements ApplicationEventPublisherAware { String rpayjson = JSON.toJSONString(orderInfo, SerializerFeature.PrettyFormat); res.put("xml", rpayjson); break; + case "Yeepay": + res.put("xml", yeepayClient.queryOrderStd(orderId).toString()); + break; default: throw new BadRequestException("Not Support channel:" + channel); } @@ -350,6 +356,9 @@ public class TestController implements ApplicationEventPublisherAware { xmlStr = XmlFormatUtils.formatXml(elem); res.put("xml", xmlStr); break; + case "Yeepay": + res.put("xml", yeepayClient.queryRefundStd(refundOrder.getString("out_refund_id")).toString()); + break; default: throw new BadRequestException("Not Support channel:" + channel); } From ab2242079c18c86d325da069d0bb12110f5569ed Mon Sep 17 00:00:00 2001 From: lujian Date: Wed, 14 Nov 2018 15:18:09 +0800 Subject: [PATCH 16/62] =?UTF-8?q?[fix]=E9=A3=8E=E6=8E=A7=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../riskbusiness/core/impl/RiskBusinessServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index f36badc9b..d79b14fd6 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -804,9 +804,9 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo JSONObject material = getRiskMaterial(riskEvent); for (int i = 0; i < materialsRemark.size(); i++) { JSONObject materialItem = new JSONObject(); - materialItem.put("question" + (i + 1), materialsRemark.get(i)); + materialItem.put("question", materialsRemark.get(i)); if (material != null) - materialItem.put("file" + (i + 1), material.getJSONArray("file" + (i + 1))); + materialItem.put("file", material.getJSONArray("file" + (i + 1))); materialItemList.add(materialItem); } JSONObject result = new JSONObject(); From bbc079e03f1218cd211728a3585cb6b0b82c44a4 Mon Sep 17 00:00:00 2001 From: lujian Date: Thu, 15 Nov 2018 15:08:27 +0800 Subject: [PATCH 17/62] =?UTF-8?q?[fix]=E9=A3=8E=E6=8E=A7=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appclient/web/RetailAppController.java | 16 +++++++++++++--- .../core/impl/RiskUploadServiceIpml.java | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java index 92569a46c..b2c1c30d8 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java @@ -16,6 +16,7 @@ import au.com.royalpay.payment.manage.merchants.beans.ClientUpdateInfo; import au.com.royalpay.payment.manage.riskbusiness.bean.RiskEventQuery; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; import au.com.royalpay.payment.manage.riskbusiness.core.RiskUploadService; +import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; import au.com.royalpay.payment.manage.settlement.core.ManualSettleSupport; import au.com.royalpay.payment.manage.signin.beans.ChangePwdBean; import au.com.royalpay.payment.manage.signin.core.SignInStatusManager; @@ -44,6 +45,7 @@ import org.springframework.web.servlet.ModelAndView; import java.math.BigDecimal; import java.text.ParseException; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -592,9 +594,17 @@ public class RetailAppController { */ @GetMapping(value = "/risk/business/events") public JSONObject getRiskEvents(RiskEventQuery riskEventQuery) { - JSONObject param = riskEventQuery.toJSON(); - param.put("client_moniker", riskEventQuery.getClientMoniker()); - return riskBusinessService.getRiskEventsByPage(param, null); + JSONObject params = riskEventQuery.toJSON(); + params.put("client_moniker", riskEventQuery.getClientMoniker()); + params.put("is_send_client", 1); + params.putIfAbsent("page", 1); + List resultTypes = Arrays.asList(RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType(), + RiskResultTypeEnum.WAIT_FOR_AUDIT.getResultType(), + RiskResultTypeEnum.MATERIAL_AUDIT_PASS.getResultType(), + RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType(), + RiskResultTypeEnum.ALREADY_HANDLED.getResultType()); + params.put("result_types", resultTypes); + return riskBusinessService.getRiskEventsByPage(params, null); } /** diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java index 17133ae4a..6cea25854 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java @@ -40,6 +40,7 @@ public class RiskUploadServiceIpml implements RiskUploadService { @Override public void submitMaterial(JSONObject material) { JSONObject event = riskEventMapper.findById(material.getString("risk_id")); + material.putIfAbsent("update_time", DateFormatUtils.format(new Date(), "yyyy-MM-dd hh:mm:ss")); riskMaterialMapper.save(material); material.put("material_id",riskMaterialMapper.findAllMaterials(material.getString("risk_id")).get(0).getString("material_id")); for(int i=1;i<=10;i++){ From 872d5664498518128191ed15c7b0f3e8fa9a91fe Mon Sep 17 00:00:00 2001 From: lujian Date: Thu, 15 Nov 2018 15:16:32 +0800 Subject: [PATCH 18/62] [fix] --- .../manage/riskbusiness/core/RiskBusinessService.java | 2 ++ .../riskbusiness/core/impl/RiskBusinessServiceImpl.java | 9 +++++++++ .../manage/riskbusiness/web/RiskBusinessController.java | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java index 83a9cb955..9a426ed12 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java @@ -109,4 +109,6 @@ public interface RiskBusinessService { * @return */ JSONObject getRiskEventMaterialsRemark(String riskId); + + JSONObject updateIsSendClient(String riskId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index d79b14fd6..19955dd31 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -815,4 +815,13 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo result.put("description", material.getString("description")); return result; } + + @Override + public JSONObject updateIsSendClient(String riskId) { + JSONObject event = riskEventMapper.findById(riskId); + event.put("is_send_client", 1); + riskEventMapper.update(event); + event = riskEventMapper.findById(riskId); + return event; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java index 60ef91875..c93d27d8f 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java @@ -142,5 +142,10 @@ public class RiskBusinessController { public void deleteRiskEvent(@RequestParam("risk_id") String riskId) { riskBusinessService.deleteRiskEvent(riskId); } + + @GetMapping(value = "/update/event/is_send_client") + public JSONObject updateRiskEvent(@RequestParam("risk_id") String riskId) { + return riskBusinessService.updateIsSendClient(riskId); + } } From 03bae404745269b0fc69d219b9b3994b110980ff Mon Sep 17 00:00:00 2001 From: lujian Date: Thu, 15 Nov 2018 15:35:12 +0800 Subject: [PATCH 19/62] [fix] --- .../payment/manage/riskbusiness/web/RiskBusinessController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java index c93d27d8f..be14e5b64 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java @@ -144,7 +144,7 @@ public class RiskBusinessController { } @GetMapping(value = "/update/event/is_send_client") - public JSONObject updateRiskEvent(@RequestParam("risk_id") String riskId) { + public JSONObject updateRiskEventIsSendClient(@RequestParam("risk_id") String riskId) { return riskBusinessService.updateIsSendClient(riskId); } } From ed84c506f9deb28a00a1f525c3ee27082da4acf7 Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Thu, 15 Nov 2018 18:00:58 +0800 Subject: [PATCH 20/62] update app message --- .../core/impl/RiskBusinessServiceImpl.java | 71 ++++++++++--------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 19955dd31..a727e396e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -14,6 +14,7 @@ import au.com.royalpay.payment.manage.mappers.system.ClientDeviceTokenMapper; import au.com.royalpay.payment.manage.mappers.system.ClientMapper; import au.com.royalpay.payment.manage.mappers.system.ClientBDMapper; import au.com.royalpay.payment.manage.notice.core.MailService; +import au.com.royalpay.payment.manage.pushMessage.APNSMessageHelper; import au.com.royalpay.payment.manage.pushMessage.bean.AppManagerMessageBuilder; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; @@ -104,6 +105,9 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo private Map senderMap = new HashMap<>(); + @Resource + private APNSMessageHelper apnsMessageHelper; + private ThreadPoolExecutor sendingAppleMsgPool = new ThreadPoolExecutor(10, 30, 5, TimeUnit.SECONDS, new LinkedBlockingQueue()); @Override @@ -311,41 +315,40 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo JSONObject client = clientMapper.findClientByMoniker(event.getString("client_moniker")); logger.debug("sendRiskAppMessage-" + client.getString("client_moniker") + "-" + "risk_id:"+event.getString("risk_id")); List tokens = clientDeviceTokenMapper.listTokensByClient_id(client.getIntValue("client_id")); - for (final JSONObject devToken : tokens) { - Runnable task = () -> { - String token = devToken.getString("token"); - if (token == null) { - return; - } - JSONObject log = saveAppMessageLog(devToken.getString("dev_id"), devToken.getIntValue("client_id"), "risk", token, - event.getString("risk_id")); - try { - event.put("send_type", "risk"); - JSONObject type = new JSONObject(); - type.put("send_type", "risk"); - type.put("id", event.getString("risk_id")); - AppMsgSender sender = senderMap.get(devToken.getString("client_type")); - if (token == null || sender == null) { - return; - } - JSONObject managerMsg = new JSONObject(); - managerMsg.put("title", LocaleSupport.localeMessage("app.message.title.risk")); - managerMsg.put("body", - LocaleSupport.localeMessage("app.message.body.risk")); - managerMsg.put("type", type); - managerMsg.put("data", event); - managerMsg.put("msgType", "risk"); - AppMessage appMessage = new AppManagerMessageBuilder(managerMsg).buildMessage(); - sender.sendMessage(appMessage, devToken); - log.put("status", 2); - appMessageLogMapper.update(log); - } catch (Exception e) { - logger.error("出错了:" + e.getMessage()); - appMessageLogMapper.updateStatus(log.getString("send_id"), 1, e.getMessage()); - throw new ServerErrorException("Send App " + devToken.getString("client_type") + " Failed", e); + for (JSONObject devToken : tokens) { + String token = devToken.getString("token"); + if (token == null) { + continue; + } + JSONObject log = saveAppMessageLog(devToken.getString("dev_id"), devToken.getIntValue("client_id"), "risk", token, + event.getString("risk_id")); + try { + JSONObject type = new JSONObject(); + type.put("send_type", "risk"); + type.put("id", event.getString("risk_id")); + apnsMessageHelper.sendAppleMessageDetail( + LocaleSupport.localeMessage("app.message.title.risk"), LocaleSupport.localeMessage("app.message.body.risk"), + token, event, type); + AppMsgSender sender = senderMap.get(devToken.getString("client_type")); + if (token == null || sender == null) { + continue; } - }; - sendingAppleMsgPool.execute(task); + JSONObject managerMsg = new JSONObject(); + managerMsg.put("title", LocaleSupport.localeMessage("app.message.title.risk")); + managerMsg.put("body", + LocaleSupport.localeMessage("app.message.body.risk")); + managerMsg.put("type", type); + managerMsg.put("data", event); + managerMsg.put("msgType", "risk"); + AppMessage appMessage = new AppManagerMessageBuilder(managerMsg).buildMessage(); + sender.sendMessage(appMessage, devToken); + log.put("status", 2); + appMessageLogMapper.update(log); + } catch (Exception e) { + logger.error("出错了:" + e.getMessage()); + appMessageLogMapper.updateStatus(log.getString("send_id"), 1, e.getMessage()); + throw new ServerErrorException("Send App " + devToken.getString("client_type") + " Failed", e); + } } } From ca864b4f0bf91eafc6b0869da0ff8139ef539e63 Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Thu, 15 Nov 2018 18:01:33 +0800 Subject: [PATCH 21/62] update --- src/main/resources/i18n/msg_en.properties | 2 +- src/main/resources/i18n/msg_zh.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/i18n/msg_en.properties b/src/main/resources/i18n/msg_en.properties index 5af979791..e7663bb89 100644 --- a/src/main/resources/i18n/msg_en.properties +++ b/src/main/resources/i18n/msg_en.properties @@ -88,7 +88,7 @@ todo.bd.order=The merchant managed by you is transferred. Please submit the mate app.message.title.payment=Payment Message app.message.body.payment=You have received a payment of app.message.title.risk=Risk Control Message -app.message.body.risk=You have received a risk control reminder. Please check the email for details. +app.message.body.risk=You have received a risk control reminder. Please handle as soon as possible. app.message.title.notice=System Message app.message.body.refund=Your refund request has bean sent,refund count is app.message.body.cashback=You got a cashback of diff --git a/src/main/resources/i18n/msg_zh.properties b/src/main/resources/i18n/msg_zh.properties index 44b3ca6ea..c700ff329 100644 --- a/src/main/resources/i18n/msg_zh.properties +++ b/src/main/resources/i18n/msg_zh.properties @@ -84,7 +84,7 @@ todo.bd.order=有商户被调单,请尽快提交材料 app.message.title.payment=到账通知 app.message.body.payment=您有一笔新的到账, app.message.title.risk=风控通知 -app.message.body.risk=您收到了一条风控提醒,详情请查看邮件 +app.message.body.risk=您收到了一条风控提醒,请及时处理 app.message.title.notice=系统通知 app.message.body.refund=退款申请已提交渠道方处理,退款金额 app.message.body.cashback=您获得了一笔ROYALPAY返现,金额 From 39d76ade6b49da9933978330df1a72c8459d861c Mon Sep 17 00:00:00 2001 From: lujian Date: Thu, 15 Nov 2018 18:41:34 +0800 Subject: [PATCH 22/62] [fix] --- .../riskbusiness/core/impl/RiskBusinessServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index a727e396e..1b77e3f0d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -108,6 +108,11 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Resource private APNSMessageHelper apnsMessageHelper; + @Resource + public void setAppMsgSenders(AppMsgSender[] senders) { + Arrays.stream(senders).forEach(appMsgSender -> senderMap.put(appMsgSender.devType(), appMsgSender)); + } + private ThreadPoolExecutor sendingAppleMsgPool = new ThreadPoolExecutor(10, 30, 5, TimeUnit.SECONDS, new LinkedBlockingQueue()); @Override From 4a563a148f329a839a272c7efe7e6c62d0a2117f Mon Sep 17 00:00:00 2001 From: lujian Date: Thu, 15 Nov 2018 19:20:34 +0800 Subject: [PATCH 23/62] [fix] --- .../riskbusiness/core/impl/RiskBusinessServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 1b77e3f0d..39edbadc2 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -331,9 +331,9 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo JSONObject type = new JSONObject(); type.put("send_type", "risk"); type.put("id", event.getString("risk_id")); - apnsMessageHelper.sendAppleMessageDetail( - LocaleSupport.localeMessage("app.message.title.risk"), LocaleSupport.localeMessage("app.message.body.risk"), - token, event, type); +// apnsMessageHelper.sendAppleMessageDetail( +// LocaleSupport.localeMessage("app.message.title.risk"), LocaleSupport.localeMessage("app.message.body.risk"), +// token, event, type); AppMsgSender sender = senderMap.get(devToken.getString("client_type")); if (token == null || sender == null) { continue; @@ -352,7 +352,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } catch (Exception e) { logger.error("出错了:" + e.getMessage()); appMessageLogMapper.updateStatus(log.getString("send_id"), 1, e.getMessage()); - throw new ServerErrorException("Send App " + devToken.getString("client_type") + " Failed", e); + throw new ServerErrorException("Send App " + devToken.getString("client_type") + " Failed" + ",token" + token, e); } } } From 06d4c3a51292fa587fee3f87d4ff657b8be78c7b Mon Sep 17 00:00:00 2001 From: lujian Date: Fri, 16 Nov 2018 16:43:36 +0800 Subject: [PATCH 24/62] [fix] --- .../core/impl/RiskBusinessServiceImpl.java | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 39edbadc2..46f665e31 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -321,39 +321,42 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo logger.debug("sendRiskAppMessage-" + client.getString("client_moniker") + "-" + "risk_id:"+event.getString("risk_id")); List tokens = clientDeviceTokenMapper.listTokensByClient_id(client.getIntValue("client_id")); for (JSONObject devToken : tokens) { - String token = devToken.getString("token"); - if (token == null) { - continue; - } - JSONObject log = saveAppMessageLog(devToken.getString("dev_id"), devToken.getIntValue("client_id"), "risk", token, - event.getString("risk_id")); - try { - JSONObject type = new JSONObject(); - type.put("send_type", "risk"); - type.put("id", event.getString("risk_id")); + Runnable task = () -> { + String token = devToken.getString("token"); + if (token == null || devToken.getString("client_type") == null) { + return; + } + JSONObject log = saveAppMessageLog(devToken.getString("dev_id"), devToken.getIntValue("client_id"), "risk" + devToken.getString("client_type"), token, + event.getString("risk_id")); + try { + JSONObject type = new JSONObject(); + type.put("send_type", "risk"); + type.put("id", event.getString("risk_id")); // apnsMessageHelper.sendAppleMessageDetail( // LocaleSupport.localeMessage("app.message.title.risk"), LocaleSupport.localeMessage("app.message.body.risk"), // token, event, type); - AppMsgSender sender = senderMap.get(devToken.getString("client_type")); - if (token == null || sender == null) { - continue; + AppMsgSender sender = senderMap.get(devToken.getString("client_type")); + if (StringUtils.isBlank(token) || sender == null) { + return; + } + JSONObject managerMsg = new JSONObject(); + managerMsg.put("title", LocaleSupport.localeMessage("app.message.title.risk")); + managerMsg.put("body", + LocaleSupport.localeMessage("app.message.body.risk")); + managerMsg.put("type", type); + managerMsg.put("data", new JSONObject()); + managerMsg.put("msgType", "risk"); + AppMessage appMessage = new AppManagerMessageBuilder(managerMsg).buildMessage(); + sender.sendMessage(appMessage, devToken); + log.put("status", 2); + appMessageLogMapper.update(log); + } catch (Exception e) { + logger.error("出错了:" + e.getMessage()); + appMessageLogMapper.updateStatus(log.getString("send_id"), 1, e.getMessage()); + throw new ServerErrorException("Send App " + devToken.getString("client_type") + " Failed" + ",token" + token, e); } - JSONObject managerMsg = new JSONObject(); - managerMsg.put("title", LocaleSupport.localeMessage("app.message.title.risk")); - managerMsg.put("body", - LocaleSupport.localeMessage("app.message.body.risk")); - managerMsg.put("type", type); - managerMsg.put("data", event); - managerMsg.put("msgType", "risk"); - AppMessage appMessage = new AppManagerMessageBuilder(managerMsg).buildMessage(); - sender.sendMessage(appMessage, devToken); - log.put("status", 2); - appMessageLogMapper.update(log); - } catch (Exception e) { - logger.error("出错了:" + e.getMessage()); - appMessageLogMapper.updateStatus(log.getString("send_id"), 1, e.getMessage()); - throw new ServerErrorException("Send App " + devToken.getString("client_type") + " Failed" + ",token" + token, e); - } + }; + sendingAppleMsgPool.execute(task); } } From 8580e7e4ce050915b565968dd7a6d3b8f4d6403f Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Sun, 18 Nov 2018 16:01:21 +0800 Subject: [PATCH 25/62] Update --- .../ui/static/payment/partner/templates/partner_pay_logs.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html index da618eaeb..71d3cadb5 100644 --- a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html +++ b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html @@ -32,8 +32,6 @@ ng-click="params.status='PARTIAL_REFUNDED';loadTradeLogs(1)">Partial Refund | Full Refund | - Yeepay

    From 3e814c663aa7705e7baeddfb95e40981bf9bdad1 Mon Sep 17 00:00:00 2001 From: luoyang Date: Mon, 19 Nov 2018 10:17:36 +0800 Subject: [PATCH 26/62] fix estimate monday --- .../core/impls/EstimateAnalysisServiceImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/EstimateAnalysisServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/EstimateAnalysisServiceImpl.java index c12c98bcb..2a8bd8270 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/EstimateAnalysisServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/EstimateAnalysisServiceImpl.java @@ -82,7 +82,15 @@ public class EstimateAnalysisServiceImpl implements EstimateAnalysisService { //今天 Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); - Date todayDate = new Date(); + + //如果是周一,显示周五的数据 + Calendar cal=Calendar.getInstance(); + cal.setTime(new Date()); + int week=cal.get(Calendar.DAY_OF_WEEK); + if (week ==2) { + cal.add(Calendar.DATE, -3); + } + Date todayDate = cal.getTime(); String dateStr = DateFormatUtils.format(todayDate, "yyyy/MM/dd"); if (estimateAnalysisMapper.checkDayIsCleanDay(dateStr) != null) { JSONObject today = getDaySettleInfo(todayDate); From f885797ac42349359b5da64beb0c24c565fef287 Mon Sep 17 00:00:00 2001 From: luoyang Date: Mon, 19 Nov 2018 11:08:16 +0800 Subject: [PATCH 27/62] fix estimate monday --- .../impls/EstimateAnalysisServiceImpl.java | 66 +++++++++++-------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/EstimateAnalysisServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/EstimateAnalysisServiceImpl.java index 2a8bd8270..5e5abe65e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/EstimateAnalysisServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/EstimateAnalysisServiceImpl.java @@ -90,10 +90,12 @@ public class EstimateAnalysisServiceImpl implements EstimateAnalysisService { if (week ==2) { cal.add(Calendar.DATE, -3); } - Date todayDate = cal.getTime(); + Date todayDate = new Date(); + Date todayClearDate = cal.getTime(); String dateStr = DateFormatUtils.format(todayDate, "yyyy/MM/dd"); if (estimateAnalysisMapper.checkDayIsCleanDay(dateStr) != null) { - JSONObject today = getDaySettleInfo(todayDate); + JSONObject todaySettle = getDaySettleInfo(todayDate); + JSONObject today = getDayClearInfo(todayClearDate, todaySettle); try { JSONObject realToday = todaySettleInfo(todayDate); today.put("t1", realToday.getBigDecimal("t1")); @@ -175,6 +177,41 @@ public class EstimateAnalysisServiceImpl implements EstimateAnalysisService { dayInfo.put("t1", 0); } + //T2 + maxDays = estimateAnalysisMapper.findLastCleanDays(end_date, 1); + end_date = maxDays.getString("date_str"); + cleanDays = estimateAnalysisMapper.findLastCleanDays(start_date, 1); + start_date = cleanDays.getString("date_str"); + JSONObject totalAmountT2 = estimateAnalysisMapper.findAllTransactionByDate(start_date, end_date, t2client); + if (totalAmountT2 != null) { + dayInfo.put("t2", totalAmountT2.getBigDecimal("total_amount")); + } else { + dayInfo.put("t2", 0); + } + + //T3 + maxDays = estimateAnalysisMapper.findLastCleanDays(end_date, 1); + end_date = maxDays.getString("date_str"); + cleanDays = estimateAnalysisMapper.findLastCleanDays(start_date, 1); + start_date = cleanDays.getString("date_str"); + JSONObject totalAmountT3 = estimateAnalysisMapper.findAllTransactionByDate(start_date, end_date, t3client); + if (totalAmountT3 != null) { + dayInfo.put("t3", totalAmountT3.getBigDecimal("total_amount")); + } else { + dayInfo.put("t3", 0); + } + dayInfo.put("estimate_date", endStr); + dayInfo.put("total", dayInfo.getBigDecimal("t1").add(dayInfo.getBigDecimal("t2")).add(dayInfo.getBigDecimal("t3"))); + return dayInfo; + } + + //把清算预估和到账金额分离 + public JSONObject getDayClearInfo(Date date, JSONObject dayInfo) { + dayInfo.put("platformGetSettleFee", BigDecimal.ZERO); + String endStr = DateFormatUtils.format(date, "yyyy/MM/dd"); + JSONObject maxDays = estimateAnalysisMapper.findMaxCleanDays(endStr); + String end_date = maxDays.getString("date_str"); + JSONObject cleanDays = estimateAnalysisMapper.findLastCleanDays(endStr, 1); List tencentSettle = platformSettlementMapper.findBySettleDate(new Date(maxDays.getDate("date_str").getTime() - 86400000L), "Wechat"); if (tencentSettle != null && tencentSettle.size()>0) { for (JSONObject logs : tencentSettle) { @@ -235,31 +272,6 @@ public class EstimateAnalysisServiceImpl implements EstimateAnalysisService { } cleanDays.clear(); - //T2 - maxDays = estimateAnalysisMapper.findLastCleanDays(end_date, 1); - end_date = maxDays.getString("date_str"); - cleanDays = estimateAnalysisMapper.findLastCleanDays(start_date, 1); - start_date = cleanDays.getString("date_str"); - JSONObject totalAmountT2 = estimateAnalysisMapper.findAllTransactionByDate(start_date, end_date, t2client); - if (totalAmountT2 != null) { - dayInfo.put("t2", totalAmountT2.getBigDecimal("total_amount")); - } else { - dayInfo.put("t2", 0); - } - - //T3 - maxDays = estimateAnalysisMapper.findLastCleanDays(end_date, 1); - end_date = maxDays.getString("date_str"); - cleanDays = estimateAnalysisMapper.findLastCleanDays(start_date, 1); - start_date = cleanDays.getString("date_str"); - JSONObject totalAmountT3 = estimateAnalysisMapper.findAllTransactionByDate(start_date, end_date, t3client); - if (totalAmountT3 != null) { - dayInfo.put("t3", totalAmountT3.getBigDecimal("total_amount")); - } else { - dayInfo.put("t3", 0); - } - dayInfo.put("estimate_date", endStr); - dayInfo.put("total", dayInfo.getBigDecimal("t1").add(dayInfo.getBigDecimal("t2")).add(dayInfo.getBigDecimal("t3"))); return dayInfo; } From 1b43e2ac4d355a29f46ff021cdc0eb1a1ab387b0 Mon Sep 17 00:00:00 2001 From: lujian Date: Mon, 19 Nov 2018 14:01:58 +0800 Subject: [PATCH 28/62] =?UTF-8?q?[fix]=E6=98=AF=E5=90=A6=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=95=86=E6=88=B7=E3=80=81=E8=B6=85=E6=9C=9F=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/impl/RiskBusinessServiceImpl.java | 33 ++++++++++++++-- .../core/impl/RiskUploadServiceIpml.java | 2 +- src/main/ui/static/analysis/risk_business.js | 39 ++++++++++++++++--- .../analysis/templates/audit_material.html | 6 +++ .../analysis/templates/new_riskEvent.html | 9 +++++ .../analysis/templates/riskEvent_detail.html | 22 ++++++++++- .../analysis/templates/risk_business.html | 13 ++++++- 7 files changed, 110 insertions(+), 14 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 46f665e31..7d7279375 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -17,6 +17,7 @@ import au.com.royalpay.payment.manage.notice.core.MailService; import au.com.royalpay.payment.manage.pushMessage.APNSMessageHelper; import au.com.royalpay.payment.manage.pushMessage.bean.AppManagerMessageBuilder; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; +import au.com.royalpay.payment.manage.riskbusiness.enums.RiskEmailStatusEnum; import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; import au.com.royalpay.payment.manage.signin.beans.TodoNotice; import au.com.royalpay.payment.manage.signin.core.ManagerTodoNoticeProvider; @@ -55,6 +56,7 @@ import org.thymeleaf.spring4.SpringTemplateEngine; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URL; +import java.text.ParseException; import java.util.*; import javax.annotation.Resource; import java.util.concurrent.LinkedBlockingQueue; @@ -138,6 +140,31 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } PageList riskEvents = riskEventMapper.listRisksByPage(params, new PageBounds(params.getInteger("page"), 10, Order.formString("create_time.desc"))); + + /** + * 以下为判断调单事件是否过期 + * 微信调单、支付宝调单、royalpay调单 + * 未处理、已发送、待审核、打回 + */ + Date currentDate = new Date(), replyDate; + Integer resultType, orderType; + boolean isPassTimeout = false; + for (JSONObject riskEvent : riskEvents) { + try { + replyDate = DateUtils.parseDate(riskEvent.getString("reply_email_date"), "yyyy-MM-dd"); + } catch (ParseException e) { + replyDate = currentDate; + e.printStackTrace(); + } + resultType = riskEvent.getInteger("result_type"); + orderType = riskEvent.getInteger("order_type"); + isPassTimeout = (currentDate.after(replyDate)) && + (!resultType.equals(RiskResultTypeEnum.MATERIAL_AUDIT_PASS.getResultType())) && + (!resultType.equals(RiskResultTypeEnum.ALREADY_HANDLED.getResultType())) && + (!orderType.equals(RiskOrderTypeEnum.WARNING_ORDER.getOrderType())) && + (!orderType.equals(RiskOrderTypeEnum.GENERAL_ORDER.getOrderType())); + riskEvent.put("pass_timeout", isPassTimeout); + } return PageListUtils.buildPageListResult(riskEvents); } @@ -164,9 +191,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo String realOrderIds = riskEvent.getString("real_order_ids"); JSONObject client = clientMapper.findClientByMonikerAll(riskEvent.getString("client_moniker")); List tradeLogs = new ArrayList<>(); - /** - * 通用号调单会有client为空的情况,所以无法查到订单信息 - */ + // 通用号调单会有client为空的情况,所以无法查到订单信息 if (client != null && StringUtils.isNotBlank(realOrderIds)) { String[] orderIdArray = realOrderIds.trim().split(","); JSONObject orderInfo = new JSONObject(); @@ -299,7 +324,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo try { String emailId = mailService.sendRiskEmail(title, emailsTos.isEmpty() ? "" : StringUtils.join(emailsTos, ","), emailsCcs.isEmpty() ? "" : StringUtils.join(emailsCcs, ","), "",content, null,event.getIntValue("order_type")); - event.put("email_status",1); + event.put("email_status", RiskEmailStatusEnum.ALREADY_SEND.getEmailStatus()); event.put("result_type", RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType()); event.put("submit_url",uploadUrl); Integer orderType = event.getInteger("order_type"); diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java index 6cea25854..1bd58955b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java @@ -40,7 +40,7 @@ public class RiskUploadServiceIpml implements RiskUploadService { @Override public void submitMaterial(JSONObject material) { JSONObject event = riskEventMapper.findById(material.getString("risk_id")); - material.putIfAbsent("update_time", DateFormatUtils.format(new Date(), "yyyy-MM-dd hh:mm:ss")); + material.put("update_time", DateFormatUtils.format(new Date(), "yyyy-MM-dd hh:mm:ss")); riskMaterialMapper.save(material); material.put("material_id",riskMaterialMapper.findAllMaterials(material.getString("risk_id")).get(0).getString("material_id")); for(int i=1;i<=10;i++){ diff --git a/src/main/ui/static/analysis/risk_business.js b/src/main/ui/static/analysis/risk_business.js index 113e07cc1..7bdc9f72d 100644 --- a/src/main/ui/static/analysis/risk_business.js +++ b/src/main/ui/static/analysis/risk_business.js @@ -167,7 +167,11 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], $scope.orderTypes = orderTypesMap; $scope.resultTypes = resultTypesMap; $scope.channelResults = channelResultArray; + if (riskEvent.data.is_send_client == 1) + riskEvent.data.is_send_client = true; $scope.riskEvent = riskEvent.data; + // 编辑表格的数据保存对象,重新从源数据复制,从而取消保存操作时不会更新视图 + $scope.riskEventEdit = angular.copy(riskEvent.data); //var index = $scope.riskEvent.order_ids.lastIndexOf(","); //$scope.riskEvent.order_ids = $scope.riskEvent.order_ids.substring(0, index) + "," + $scope.riskEvent.order_ids.substring(index + 1); // 获取数据库中对应的渠道字段 @@ -179,8 +183,28 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], } else { orderChannel = null; } - // 编辑表格的数据保存对象,重新从源数据复制,从而取消保存操作时不会更新视图 - $scope.riskEventEdit = angular.copy(riskEvent.data); + + /** + * order_ids在指定位置换行 + * @param str + * @param position + * @returns {*} + */ + $scope.splitStr = function (str, position) { + var strArr = str.split(","); + var resultStr = ''; + for (var i = 0; i < strArr.length; i++) { + resultStr += strArr[i]; + if (i == (strArr.length - 1)) + break; + if ((i + 1) % position == 0) + resultStr += ", "; + else + resultStr += ","; + } + return resultStr; + }; + $scope.riskEvent.order_ids = $scope.splitStr($scope.riskEvent.order_ids, 3); // order_type转换为string类型是因为前端select控件这样才会显示初值 $scope.riskEventEdit.order_type += ""; @@ -531,7 +555,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], }); }); }); - } + }; } ]); @@ -550,7 +574,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], {key: new Date().getTime(), value: ""}); // 用时间戳作为每个item的key // 增加新的input后允许删除 $scope.canMinus = true; - } + }; $scope.decrease = function($index) { // 如果input大于1,删除 @@ -561,7 +585,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], if ($scope.materials.length == 1) { $scope.canMinus = false; } - } + }; var array=new Array(); $scope.combineMaterials = function() { for (var i = 0; i < $scope.materials.length; i++) { @@ -571,8 +595,9 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], } console.log(JSON.stringify(array)); return JSON.stringify(array); - } + }; + $scope.is_send_client = false; $scope.save = function(form) { if (form.$invalid) { angular.forEach(form, function (item, key) { @@ -597,6 +622,8 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], $scope.riskEvent.alipay_materials = $scope.combineMaterials(); + $scope.riskEvent.is_send_client = $scope.is_send_client; + $http.post('/risk/business/events', $scope.riskEvent).then(function (resp) { commonDialog.alert({ title: 'Success', diff --git a/src/main/ui/static/analysis/templates/audit_material.html b/src/main/ui/static/analysis/templates/audit_material.html index b62e28732..d4e157704 100644 --- a/src/main/ui/static/analysis/templates/audit_material.html +++ b/src/main/ui/static/analysis/templates/audit_material.html @@ -156,4 +156,10 @@
    + diff --git a/src/main/ui/static/analysis/templates/new_riskEvent.html b/src/main/ui/static/analysis/templates/new_riskEvent.html index d1308f634..2376af142 100644 --- a/src/main/ui/static/analysis/templates/new_riskEvent.html +++ b/src/main/ui/static/analysis/templates/new_riskEvent.html @@ -233,6 +233,15 @@ +
    + +
    + +
    +
    + diff --git a/src/main/ui/static/analysis/templates/riskEvent_detail.html b/src/main/ui/static/analysis/templates/riskEvent_detail.html index cf87f3394..a95d9b951 100644 --- a/src/main/ui/static/analysis/templates/riskEvent_detail.html +++ b/src/main/ui/static/analysis/templates/riskEvent_detail.html @@ -142,6 +142,16 @@ +
    + +
    + +
    +
    +
    @@ -408,12 +418,13 @@ for="order-ids-input">Platform Transaction IDs
    - +

    +
    + +
    + +
    +
    +
    From 8cd3940c7c915d4c1e3ecd2a228170c00ee6daa2 Mon Sep 17 00:00:00 2001 From: lujian Date: Mon, 26 Nov 2018 14:30:57 +0800 Subject: [PATCH 46/62] =?UTF-8?q?[fix]=E9=A3=8E=E6=8E=A7=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appclient/core/RetailAppService.java | 2 + .../core/impls/RetailAppServiceImp.java | 21 +++++++ .../appclient/web/RetailAppController.java | 4 +- .../riskbusiness/RiskProcessLogMapper.java | 24 ++++++++ .../core/RiskBusinessService.java | 2 + .../core/RiskProcessLogService.java | 28 ++++++++++ .../core/impl/RiskBusinessServiceImpl.java | 55 +++++++++++++++---- .../core/impl/RiskProcessLogServiceImpl.java | 45 +++++++++++++++ .../core/impl/RiskUploadServiceIpml.java | 32 +++++++---- .../enums/RiskResultTypeEnum.java | 13 +++++ .../web/RiskBusinessController.java | 22 +++++--- .../web/RiskFileUploadController.java | 15 ++++- .../web/RiskProcessLogController.java | 33 +++++++++++ src/main/ui/static/analysis/risk_business.js | 40 +++++++++++++- .../analysis/templates/new_riskEvent.html | 8 ++- .../analysis/templates/riskEvent_detail.html | 11 ++++ 16 files changed, 319 insertions(+), 36 deletions(-) create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskProcessLogMapper.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskProcessLogService.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskProcessLogServiceImpl.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskProcessLogController.java diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java index 94850ee79..9b99846f7 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java @@ -167,4 +167,6 @@ public interface RetailAppService { JSONObject getStyle(); void cancelCouponAccuessLog(String accuess_id, String remark); + + void submitMaterial(JSONObject material, JSONObject device); } diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java index 4c69e53fc..ebe0154a5 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java @@ -33,6 +33,9 @@ import au.com.royalpay.payment.manage.notice.core.NoticePartner; import au.com.royalpay.payment.manage.openim.core.CustomerServiceService; import au.com.royalpay.payment.manage.pushMessage.APNSMessageHelper; import au.com.royalpay.payment.manage.pushMessage.bean.AppManagerMessageBuilder; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskProcessLogService; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskUploadService; +import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; import au.com.royalpay.payment.manage.signin.beans.ChangePwdBean; import au.com.royalpay.payment.manage.signin.core.SignInAccountService; import au.com.royalpay.payment.manage.signin.core.impls.SignInAccountServiceImpl; @@ -176,6 +179,10 @@ public class RetailAppServiceImp implements RetailAppService { private CouponAccuessLogMapper couponAccuessLogMapper; @Resource private CouponValidateService couponValidateService; + @Resource + private RiskProcessLogService riskProcessLogService; + @Resource + private RiskUploadService riskUploadService; private Map senderMap = new HashMap<>(); private final String fileName[] = { "client_bank_file", "client_id_file", "client_company_file" }; @@ -1861,4 +1868,18 @@ public class RetailAppServiceImp implements RetailAppService { return sourceStr; } + @Override + public void submitMaterial(JSONObject material, JSONObject device) { + riskUploadService.submitMaterial(material); + JSONObject account = clientAccountMapper.findById(device.getString("account_id")); + if (account == null) + account = new JSONObject(); + riskProcessLogService.addRiskProcessLog(material.getString("risk_id"), + account.getString("account_id"), + account.getString("display_name"), + RiskResultTypeEnum.WAIT_FOR_AUDIT.getRemark(), + RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType(), + RiskResultTypeEnum.WAIT_FOR_AUDIT.getResultType()); + } + } diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java index b2c1c30d8..740cd6c6b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java @@ -635,8 +635,8 @@ public class RetailAppController { * @param material */ @PostMapping(value = "/risk/business/events") - public void uploadMaterial(@RequestBody JSONObject material) { - riskUploadService.submitMaterial(material); + public void uploadMaterial(@RequestBody JSONObject material, @ModelAttribute(RETAIL_DEVICE) JSONObject device) { + retailAppService.submitMaterial(material, device); } @RequestMapping(value = "/risk/business/upload/files", method = RequestMethod.POST) diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskProcessLogMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskProcessLogMapper.java new file mode 100644 index 000000000..aeaf6848d --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskProcessLogMapper.java @@ -0,0 +1,24 @@ +package au.com.royalpay.payment.manage.mappers.riskbusiness; + +import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; +import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; +import cn.yixblog.support.mybatis.autosql.annotations.SqlType; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: + * @Author: lujian + * @Date: 2018/11/22 15:32 + */ +@AutoMapper(tablename = "risk_process_log", pkName = "risk_process_id") +public interface RiskProcessLogMapper { + + @AutoSql(type = SqlType.SELECT) + PageList getRiskProcessLogs(@Param("risk_id") String riskId, PageBounds pagination); + + @AutoSql(type = SqlType.INSERT) + void addRiskProcessLog(JSONObject log); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java index 9a426ed12..778eb6069 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java @@ -110,5 +110,7 @@ public interface RiskBusinessService { */ JSONObject getRiskEventMaterialsRemark(String riskId); + JSONObject riskEventMaterialPass(JSONObject params, JSONObject manager); + JSONObject updateIsSendClient(String riskId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskProcessLogService.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskProcessLogService.java new file mode 100644 index 000000000..2050feeb2 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskProcessLogService.java @@ -0,0 +1,28 @@ +package au.com.royalpay.payment.manage.riskbusiness.core; + +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; + +/** + * @Description: + * @Author: lujian + * @Date: 2018/11/22 15:40 + */ +public interface RiskProcessLogService { + + /** + * 获取事件处理流程 + * @param riskId + * @return + */ + PageList getRiskProcessLogs(String riskId); + + /** + * 新增处理流程 + * @param log + */ + void addRiskProcessLog(JSONObject log); + + void addRiskProcessLog(String riskId, String operatorId, String operator, String remark, int resultTypeFrom, int resultTypeTo); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 56792f71c..2ff7d6db5 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -17,6 +17,7 @@ import au.com.royalpay.payment.manage.notice.core.MailService; import au.com.royalpay.payment.manage.pushMessage.APNSMessageHelper; import au.com.royalpay.payment.manage.pushMessage.bean.AppManagerMessageBuilder; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskProcessLogService; import au.com.royalpay.payment.manage.riskbusiness.enums.RiskEmailStatusEnum; import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; import au.com.royalpay.payment.manage.signin.beans.TodoNotice; @@ -95,6 +96,9 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo private RoyalThreadPoolExecutor royalThreadPoolExecutor; private final String UPLOAD_MAIL_PREFIX = "UPLOAD_MAIL"; + @Resource + private RiskProcessLogService riskProcessLogService; + @Resource private RiskMaterialMapper riskMaterialMapper; @Resource @@ -271,6 +275,13 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo public void addRiskEvent(JSONObject params, JSONObject manager) { params = getEvent(params); riskEventMapper.save(params); + params = riskEventMapper.findAll(params).get(0); + riskProcessLogService.addRiskProcessLog(params.getString("risk_id"), + params.getString("fillin_id"), + params.getString("fillin_person"), + RiskResultTypeEnum.NOT_HANDLED.getRemark(), + RiskResultTypeEnum.NOT_HANDLED.getResultType(), + RiskResultTypeEnum.NOT_HANDLED.getResultType()); } @Override @@ -336,6 +347,12 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo event.put("result_type", RiskResultTypeEnum.ALREADY_HANDLED.getResultType()); } riskEventMapper.update(event); + riskProcessLogService.addRiskProcessLog(event.getString("risk_id"), + event.getString("fillin_id"), + event.getString("fillin_person"), + RiskResultTypeEnum.SEND_EMAIL_TO_BD.getRemark(), + RiskResultTypeEnum.NOT_HANDLED.getResultType(), + RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType()); if(event.getIntValue("is_send_client") == 1){ sendAppRiskMessage(event); } @@ -416,10 +433,17 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo try { String emailId = mailService.sendRiskEmail("You need to resubmit risk materials", emailsTos.isEmpty() ? "" : StringUtils.join(emailsTos, ","), emailsCcs.isEmpty() ? "" : StringUtils.join(emailsCcs, ","), "",content, null,event.getIntValue("order_type")); - event.put("email_status",2); + event.put("email_status",RiskEmailStatusEnum.BACK_AND_SEND.getEmailStatus()); event.put("result_type",RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType()); event.put("submit_url",uploadUrl); riskEventMapper.update(event); + // 日志记录 + riskProcessLogService.addRiskProcessLog(riskId, + event.getString("fillin_id"), + event.getString("fillin_person"), + RiskResultTypeEnum.MATERIAL_NOT_PASS.getRemark(), + RiskResultTypeEnum.WAIT_FOR_AUDIT.getResultType(), + RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType()); } catch (Exception e) { throw new EmailException("Email Sending Failed", e); } @@ -462,14 +486,13 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo expireDay = "3"; } )*/ - // 原来设定的过期时间是7天,现在改成半个月 - String expireDay = "180"; + // 原来设定的过期时间是7天 + String expireDay = "3650"; stringRedisTemplate.boundValueOps(getRiskUploadKey(codeKey)).set(codeKeyValue, Long.parseLong(expireDay), TimeUnit.DAYS); String uploadUrl = PlatformEnvironment.getEnv().concatUrl("/risk/upload/") + event.getString("risk_id") + "/" + codeKey; int orderType = event.getIntValue("order_type"); if (orderType == 1 || orderType == 2) uploadUrl = PlatformEnvironment.getEnv().concatUrl("/manage.html#/analysis/monitoring/") + event.getString("risk_id") + "/bd/detail?codeKey=" + codeKey; - //uploadUrl = "localhost:9009" + "/manage.html#/analysis/monitoring/" + event.getString("risk_id") + "/bd/detail"; List bds = clientBDMapper.listClientBDInfoAvailable(client.getIntValue("client_id"), new Date()); List bdNames = new ArrayList<>(); List bdEmails = new ArrayList<>(); @@ -509,6 +532,11 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } List orders = new ArrayList(); int isSendClient = event.getIntValue("is_send_client"); + ctx.setVariable("emailsTos", bdEmails); + if (isSendClient == 1) { + ctx.setVariable("emailsTos", clientEmails); + ctx.setVariable("emailsCcs", bdEmails); + } switch (event.getIntValue("order_type")){ case 1: case 2: @@ -521,7 +549,6 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } ctx.setVariable("orders", orders); ctx.setVariable("title","Your merchants needs to submit risk materials"); - ctx.setVariable("emailsTos", bdEmails); break; case 3: for(String orderId : realOrderIds){ @@ -548,12 +575,6 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo // ctx.setVariable("files",attachList); case 4: ctx.setVariable("title","RoyalPay风控调查 — " + client.getString("short_name")); - ctx.setVariable("emailsTos", bdEmails); - if (isSendClient == 1) { - ctx.setVariable("emailsTos", clientEmails); - ctx.setVariable("emailsCcs", bdEmails); - } - break; } return ctx; @@ -866,6 +887,18 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo return result; } + @Override + public JSONObject riskEventMaterialPass(JSONObject params, JSONObject manager) { + riskEventMapper.update(params); + riskProcessLogService.addRiskProcessLog(params.getString("risk_id"), + manager.getString("manager_id"), + manager.getString("display_name"), + RiskResultTypeEnum.MATERIAL_AUDIT_PASS.getRemark(), + params.getIntValue("result_type"), + RiskResultTypeEnum.MATERIAL_AUDIT_PASS.getResultType()); + return params; + } + @Override public JSONObject updateIsSendClient(String riskId) { JSONObject event = riskEventMapper.findById(riskId); diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskProcessLogServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskProcessLogServiceImpl.java new file mode 100644 index 000000000..2743fd4bd --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskProcessLogServiceImpl.java @@ -0,0 +1,45 @@ +package au.com.royalpay.payment.manage.riskbusiness.core.impl; + +import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskProcessLogMapper; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskProcessLogService; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.Order; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @Description: + * @Author: lujian + * @Date: 2018/11/22 15:46 + */ +@Service +public class RiskProcessLogServiceImpl implements RiskProcessLogService { + + @Resource + private RiskProcessLogMapper riskProcessLogMapper; + + @Override + public PageList getRiskProcessLogs(String riskId) { + return riskProcessLogMapper.getRiskProcessLogs(riskId, new PageBounds(Order.formString("create_time"))); + } + + @Override + public void addRiskProcessLog(JSONObject log) { + riskProcessLogMapper.addRiskProcessLog(log); + } + + @Override + public void addRiskProcessLog(String riskId, String operatorId, String operator, String remark, int resultTypeFrom, int resultTypeTo) { + JSONObject log = new JSONObject(); + log.put("risk_id", riskId); + log.put("operator_id", operatorId); + log.put("operator", operator); + log.put("remark", remark); + log.put("result_type_from", resultTypeFrom); + log.put("result_type_to", resultTypeTo); + riskProcessLogMapper.addRiskProcessLog(log); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java index 65faa5f9e..e53ecf4d0 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskUploadServiceIpml.java @@ -7,6 +7,7 @@ import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskMaterialMapper; import au.com.royalpay.payment.manage.mappers.system.ClientMapper; import au.com.royalpay.payment.manage.notice.core.MailService; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskProcessLogService; import au.com.royalpay.payment.manage.riskbusiness.core.RiskUploadService; import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; import au.com.royalpay.payment.tools.exceptions.BadRequestException; @@ -17,6 +18,7 @@ import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.thymeleaf.context.Context; import org.thymeleaf.spring4.SpringTemplateEngine; @@ -34,15 +36,22 @@ public class RiskUploadServiceIpml implements RiskUploadService { @Resource private RiskEventMapper riskEventMapper; @Resource + private RiskProcessLogService riskProcessLogService; + @Resource private StringRedisTemplate stringRedisTemplate; private final String UPLOAD_MAIL_PREFIX = "UPLOAD_MAIL"; @Override public void submitMaterial(JSONObject material) { - JSONObject event = riskEventMapper.findById(material.getString("risk_id")); + String riskId = material.getString("risk_id"); + JSONObject event = riskEventMapper.findById(riskId); + Integer resultType = event.getInteger("result_type"); + if (!resultType.equals(RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType()) && !resultType.equals(RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType())) { + throw new BadRequestException("Committed Already"); + } material.put("update_time", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")); riskMaterialMapper.save(material); - material.put("material_id",riskMaterialMapper.findAllMaterials(material.getString("risk_id")).get(0).getString("material_id")); + material.put("material_id",riskMaterialMapper.findAllMaterials(riskId).get(0).getString("material_id")); for(int i=1;i<=10;i++){ if(material.containsKey("file"+i+"_url")){ List urls = (List)material.get("file"+i+"_url"); @@ -67,16 +76,17 @@ public class RiskUploadServiceIpml implements RiskUploadService { @Override public void checkUploadMailKey(String codeKey,String risk_id) { JSONObject event = riskEventMapper.findById(risk_id); + //到期日前一天的下午6点前url可用 - try { - String reply = DateFormatUtils.format(DateUtils.addDays(event.getDate("reply_email_date"),-1),"yyyy-MM-dd 18:00:00"); - if(new Date().after( DateUtils.parseDate(reply,new String[]{"yyyy-MM-dd HH:mm:ss"}))){ - deleteUploadMailKey(codeKey); - throw new BadRequestException("Url expired"); - } - } catch (ParseException e) { - e.printStackTrace(); - } +// try { +// String reply = DateFormatUtils.format(DateUtils.addDays(event.getDate("reply_email_date"),-1),"yyyy-MM-dd 18:00:00"); +// if(new Date().after( DateUtils.parseDate(reply,new String[]{"yyyy-MM-dd HH:mm:ss"}))){ +// deleteUploadMailKey(codeKey); +// throw new BadRequestException("Url expired"); +// } +// } catch (ParseException e) { +// e.printStackTrace(); +// } if (StringUtils.isNotEmpty(codeKey)) { String redisUpload = stringRedisTemplate.boundValueOps(getRiskUploadKey(codeKey)).get(); diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskResultTypeEnum.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskResultTypeEnum.java index 2938586d8..9aeb054c7 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskResultTypeEnum.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskResultTypeEnum.java @@ -15,6 +15,15 @@ public enum RiskResultTypeEnum { private Integer resultType; + private static final String[] REMARK_ARR = { + "风控事件已创建", + "已发送邮件,资料完善中", + "资料已提交,等待审核", + "材料审核通过", + "材料打回", + "已处理" + }; + RiskResultTypeEnum(Integer resultType) { this.resultType = resultType; } @@ -26,4 +35,8 @@ public enum RiskResultTypeEnum { public void setResultType(Integer resultType) { this.resultType = resultType; } + + public String getRemark() { + return REMARK_ARR[resultType]; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java index 2629b5a9a..7827b312e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java @@ -6,23 +6,17 @@ import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; import au.com.royalpay.payment.manage.riskbusiness.bean.RiskEventQuery; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; import au.com.royalpay.payment.manage.riskbusiness.core.RiskMaterialService; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskProcessLogService; import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; -import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; import com.alibaba.fastjson.JSONObject; -import com.sun.org.apache.xerces.internal.impl.dv.xs.BooleanDV; -import com.sun.org.apache.xpath.internal.operations.Bool; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; + import java.util.List; /** @@ -43,6 +37,9 @@ public class RiskBusinessController { @Autowired private ClientManager clientManager; + @Autowired + private RiskProcessLogService riskProcessLogService; + @GetMapping(value = "events") public JSONObject getRiskEvents(RiskEventQuery riskEventQuery, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { JSONObject params = riskEventQuery.toJSON(); @@ -55,6 +52,7 @@ public class RiskBusinessController { JSONObject riskEvent = riskBusinessService.getRiskEventDetail(riskId); List tradeLogs = riskBusinessService.getRiskEventOrderList(riskEvent); riskEvent.put("tradeLogs", tradeLogs); + riskEvent.put("process_logs", riskProcessLogService.getRiskProcessLogs(riskId)); return riskEvent; } @@ -71,6 +69,12 @@ public class RiskBusinessController { riskBusinessService.updateRiskEvent(params); } + @PutMapping(value = "events/pass") + public void riskEventMaterialPass(@RequestBody JSONObject params, + @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + riskBusinessService.riskEventMaterialPass(params, manager); + } + @GetMapping(value = "/{risk_id}/download/materialsAsZIP") public void downloadComplianceZip(@PathVariable("risk_id") String riskId, HttpServletResponse response) throws Exception { riskBusinessService.downloadAuditMaterialZiP(riskId, response); @@ -129,8 +133,8 @@ public class RiskBusinessController { params.put("result_type", RiskResultTypeEnum.ALREADY_HANDLED.getResultType()); } riskBusinessService.updateRiskEvent(params); - } + @RequestMapping(value = "/{risk_id}/urge",method = RequestMethod.PUT) public void urgeEmail(@PathVariable String risk_id) throws IOException { riskBusinessService.sendUrgeEmail(risk_id); diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskFileUploadController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskFileUploadController.java index 2145b046d..63da4f111 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskFileUploadController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskFileUploadController.java @@ -1,7 +1,10 @@ package au.com.royalpay.payment.manage.riskbusiness.web; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskProcessLogService; import au.com.royalpay.payment.manage.riskbusiness.core.RiskUploadService; +import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; +import au.com.royalpay.payment.tools.CommonConsts; import com.alibaba.fastjson.JSONObject; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -15,6 +18,8 @@ public class RiskFileUploadController { private RiskUploadService riskUploadService; @Resource private RiskBusinessService riskBusinessService; + @Resource + private RiskProcessLogService riskProcessLogService; /** * 上传材料的链接 @@ -41,9 +46,17 @@ public class RiskFileUploadController { * @param material */ @RequestMapping(value = "/{codeKey}", method = RequestMethod.POST) - public void upload(@PathVariable String codeKey, @RequestBody JSONObject material) { + public void upload(@PathVariable String codeKey, + @RequestBody JSONObject material, + @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { // riskUploadService.checkUploadMailKey(codeKey, material.getString("risk_id")); riskUploadService.submitMaterial(material); + riskProcessLogService.addRiskProcessLog(material.getString("risk_id"), + manager.getString("manager_id"), + manager.getString("display_name"), + RiskResultTypeEnum.WAIT_FOR_AUDIT.getRemark(), + RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType(), + RiskResultTypeEnum.WAIT_FOR_AUDIT.getResultType()); riskUploadService.deleteUploadMailKey(codeKey); } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskProcessLogController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskProcessLogController.java new file mode 100644 index 000000000..cdfc2ba39 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskProcessLogController.java @@ -0,0 +1,33 @@ +package au.com.royalpay.payment.manage.riskbusiness.web; + +import au.com.royalpay.payment.manage.riskbusiness.core.RiskProcessLogService; +import com.alibaba.fastjson.JSONObject; +import com.google.gson.JsonObject; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.xml.bind.util.JAXBSource; +import java.util.List; + +/** + * @Description: + * @Author: lujian + * @Date: 2018/11/22 15:52 + */ +@RestController +@RequestMapping(value = "/risk/business/process/logs") +public class RiskProcessLogController { + + @Resource + private RiskProcessLogService riskProcessLogService; + + @GetMapping(value = "/{risk_id}") + public List getRiskProcessLogs(@PathVariable("risk_id") String riskId) { + return riskProcessLogService.getRiskProcessLogs(riskId); + } + + @PostMapping + public void addRiskProcessLog(@RequestBody JSONObject log) { + riskProcessLogService.addRiskProcessLog(log); + } +} diff --git a/src/main/ui/static/analysis/risk_business.js b/src/main/ui/static/analysis/risk_business.js index 0cf9eac60..7b4c1ff50 100644 --- a/src/main/ui/static/analysis/risk_business.js +++ b/src/main/ui/static/analysis/risk_business.js @@ -170,6 +170,11 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], if (riskEvent.data.is_send_client == 1) riskEvent.data.is_send_client = true; $scope.riskEvent = riskEvent.data; + + $http.get('/risk/business/process/logs/' + $scope.riskEvent.risk_id).then(function (resp) { + $scope.riskEvent.process_logs = resp.data; + }); + // 编辑表格的数据保存对象,重新从源数据复制,从而取消保存操作时不会更新视图 $scope.riskEventEdit = angular.copy(riskEvent.data); //var index = $scope.riskEvent.order_ids.lastIndexOf(","); @@ -333,6 +338,31 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], $scope.material={}; $scope.material.update_time=$filter('date')(new Date(), 'yyyy-MM-dd HH:mm:ss'); $scope.material.risk_id = $scope.riskEvent.risk_id; + // $scope.uploadFile = function(files, index) { + // if (files && files.length) { + // var urls = new Array(); + // var value = 0; + // var progressKey = 'fileProgress' + (index + 1); + // $scope[progressKey] = {value: 0}; + // for (var i = 0; i < files.length; i++) { + // var file = files[i]; + // Upload.upload({ + // url: '/attachment/riskFiles', + // data: {file: file} + // }).then(function (resp) { + // urls.push(resp.data.url); + // }, function (resp) { + // delete $scope[progressKey]; + // alert('Upload Failed'); + // }, function (evt) { + // value += parseInt(100 * evt.loaded / evt.total ); + // $scope[progressKey].value = value/(files.length*2); + // }) + // } + // var fileKey = 'file' + (index + 1) +'_url'; + // $scope.material[fileKey] = urls; + // } + // }; $scope.uploadFile1 = function (files) { if (files && files.length) { var urls = new Array(); @@ -540,7 +570,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], // 材料审核 $scope.auditMaterial = function(auditType) { - var url = '/risk/business/events'; + var url = '/risk/business/events/pass'; var warningMessageHTML = '是否确定通过该材料?'; if (auditType == 3) { commonDialog.confirm({ @@ -656,7 +686,13 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], $scope.riskEvent.is_send_client = $scope.is_send_client; + var saveRiskBtn = document.getElementById('save-risk-btn'); + var saveRiskBtnInnerHtmlBak = saveRiskBtn.innerHTML; + saveRiskBtn.disabled = true; + saveRiskBtn.innerHTML = " Processing"; $http.post('/risk/business/events', $scope.riskEvent).then(function (resp) { + saveRiskBtn.innerHTML = saveRiskBtnInnerHtmlBak; + saveRiskBtn.disabled = false; commonDialog.alert({ title: 'Success', content: 'Register new riskEvent successfully', @@ -664,6 +700,8 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], }); $state.go('^',{}, {reload: true}); }, function (resp) { + saveRiskBtn.innerHTML = saveRiskBtnInnerHtmlBak; + saveRiskBtn.disabled = false; commonDialog.alert({ title: 'Error', content: resp.data.message, diff --git a/src/main/ui/static/analysis/templates/new_riskEvent.html b/src/main/ui/static/analysis/templates/new_riskEvent.html index 36f27ed82..b678c4570 100644 --- a/src/main/ui/static/analysis/templates/new_riskEvent.html +++ b/src/main/ui/static/analysis/templates/new_riskEvent.html @@ -246,11 +246,17 @@
    -
    +
    + cancel +
    diff --git a/src/main/ui/static/analysis/templates/riskEvent_detail.html b/src/main/ui/static/analysis/templates/riskEvent_detail.html index a95d9b951..08917465a 100644 --- a/src/main/ui/static/analysis/templates/riskEvent_detail.html +++ b/src/main/ui/static/analysis/templates/riskEvent_detail.html @@ -1,4 +1,15 @@
    +
    +
    + +
    + + +
    + +
    +
    +
    -
    -
    -

    1、物流公司发货单据照片 - 要求:每笔交易对应的物流单必须提供,且单据必须清晰可见
    - Photos of logistics companies’ goods-delivery documents - Requirement: The logistics order record corresponding to each transaction must be provided, and details of records should be clearly visible. -

    -

    1.请解释相应的消费场景/业务模式,例如网站商城,扫码支付, 消费者到店支付等;
    - Please explain the relative payment scenario/business activities, for example, online store, QR code payment, payment at the store, etc; -

    -
    -
    -   
    -
    - - - -
    -
    -
    -
    -
    -

    2、用户购买虚拟物品需要提供聊天记录、订单信息、发货凭证截图、虚拟物品最终消费场景(例如何种游戏、软件)、提供消费场景网址/下载链接 - 要求:每笔交易对应的截图必须清晰可见
    - Users need to provide chat records, order information, screenshots of delivery documents, final consumption scenarios of virtual goods (such as games, software); provide consumer scene URL / download link. - Requirement: The screenshot corresponding to each transaction must be clearly visible. -

    -

    2.提供相应购物清单,订单小票(请提供与被查交易订单号相匹配的交易时间及金额的发票);
    - Provide related shopping lists, invoices. (Please provide the invoices, amount of which matches that of the abnormal transaction); -

    -
    -
    -   
    -
    - - - -
    -
    -
    -
    +
    -

    3、购物小票/发票存根照片 - 照片应清晰,必须显示商户名称、商户地址、购物时间、物品名称 - 购物金额等
    - Photos of shopping receipts/ invoice stubs - Requirement: The photos should be clear and must show Merchant name, Business address, Transaction time, Product information, Quantity purchased, etc. -

    -

    3.提供相应的发货证明,报关单(若有消费者在国内购买,请提供物流单据或报关单);
    - Relative proof of delivery, customs declaration (If the consumer purchased from China, please provide shipping receipt or customs declaration); -

    +

      
    -
    -
    -

    4、显示商户门牌号码和店头名称的照片 - 要求:清晰可见,至少一张
    - Photos of Merchant Street number & Merchant name - Requirement: At least one visible photo -

    -

    4.提供您的门店照片(门店照及店铺内的照片各一张, 一张可以看到商户名的门头照,一张可以看到相关商品或服务的店内照片);
    - Photos of the store ( one of each front-store and in-store); -

    -
    -
    -   
    -
    - - - -
    -
    - -
    -
    -
    -

    5、显示商户营业场景所场内部情况(如店内商品陈列、收银台等)的照片 - 要求:照片清晰,且能清楚显示商户实际售卖物品或服务,至少三张
    - Photos of internal environment of merchant business (such as in-store merchandise display, checkout counter, etc.) - Requirements: The photos (at least three) showing merchant activities including actual selling-goods or services obviously -

    -

    5.其他可以还原交易背景的资料,如和消费者的聊天记录等,来佐证被查单号交易的真实性;
    - Other materials that can verify the payment scenario, for example, chatting history, to prove the truth of the transactions; -

    -
    -
    -   
    -
    - - - -
    -
    - -
    -
    -
    -

    6、其他图片
    - Other pictures -

    -
    -
    -   
    -
    - - - -
    -
    - -
    diff --git a/src/main/ui/static/analysis/templates/riskEvent_detail_bd.html b/src/main/ui/static/analysis/templates/riskEvent_detail_bd.html index 78aa1bf82..8ce630ed2 100644 --- a/src/main/ui/static/analysis/templates/riskEvent_detail_bd.html +++ b/src/main/ui/static/analysis/templates/riskEvent_detail_bd.html @@ -57,200 +57,55 @@
    -
    -
    -

    - 1、物流公司发货单据照片 - 要求:每笔交易对应的物流单必须提供,且单据必须清晰可见
    - Photos of logistics companies’ goods-delivery documents - Requirement: The logistics order record corresponding to each transaction must be provided, - and details of records should be clearly visible. -

    -

    - 1.请解释相应的消费场景/业务模式,例如网站商城,扫码支付, 消费者到店支付等;
    - Please explain the relative payment scenario/business activities, - for example, online store, QR code payment, payment at the store, etc; -

    -
    -
    -
    - -
    -   
    -
    - {{file1Progress.value}}% - -
    -
    -
    -
    -
    -

    - 2、用户购买虚拟物品需要提供聊天记录、订单信息、发货凭证截图、 - 虚拟物品最终消费场景(例如何种游戏、软件)、提供消费场景网址/下载链接 - 要求:每笔交易对应的截图必须清晰可见
    - Users need to provide chat records, order information, screenshots of delivery documents, - final consumption scenarios of virtual goods (such as games, software); - provide consumer scene URL / download link. - Requirement: The screenshot corresponding to each transaction must be clearly visible. -

    -

    - 2.提供相应购物清单,订单小票(请提供与被查交易订单号相匹配的交易时间及金额的发票);
    - Provide related shopping lists, invoices. - (Please provide the invoices, amount of which matches that of the abnormal transaction); -

    -
    -
    -
    - -
    -   
    -
    - {{file2Progress.value}}% - -
    -
    - -
    -
    -
    -

    - 3、购物小票/发票存根照片 - 照片应清晰,必须显示商户名称、商户地址、购物时间、物品名称 - 购物金额等
    - Photos of shopping receipts/ invoice stubs - Requirement: The photos should be clear and must show Merchant name, - Business address, Transaction time, Product information, Quantity purchased, etc. -

    -

    - 3.提供相应的发货证明,报关单(若有消费者在国内购买,请提供物流单据或报关单);
    - Relative proof of delivery, customs declaration - (If the consumer purchased from China, please provide shipping receipt or customs declaration); -

    -
    -
    -
    - -
    -   
    -
    - {{file3Progress.value}}% - -
    -
    -
    -
    +
    -

    - 4、显示商户门牌号码和店头名称的照片 - 要求:清晰可见,至少一张
    - Photos of Merchant Street number & Merchant name - Requirement: At least one visible photo -

    -

    - 4.提供您的门店照片(门店照及店铺内的照片各一张, 一张可以看到商户名的门头照,一张可以看到相关商品或服务的店内照片);
    - Photos of the store ( one of each front-store and in-store); -

    +

    {{item.question}}

      
    - {{file4Progress.value}}% - -
    -
    + {{item.fileProgressValue}}% -
    -
    -
    -

    - 5、显示商户营业场景所场内部情况(如店内商品陈列、收银台等)的照片 - 要求:照片清晰,且能清楚显示商户实际售卖物品或服务,至少三张
    - Photos of internal environment of merchant business - (such as in-store merchandise display, checkout counter, etc.) - Requirements: The photos (at least three) - showing merchant activities including actual selling-goods or services obviously -

    -

    - 5.其他可以还原交易背景的资料,如和消费者的聊天记录等,来佐证被查单号交易的真实性;
    - Other materials that can verify the payment scenario, for example, - chatting history, to prove the truth of the transactions; -

    -
    -
    -
    - -
    -   
    -
    - {{file5Progress.value}}% - + +
    -
    -
    -
    -

    6、其他图片
    - Other pictures -

    -
    -
    -
    - -
    -   
    -
    - {{file6Progress.value}}% - -
    -
    -
    -
    - Submit
    From 50aae1323a3e00ef3eaec4ef412850dea3ce7325 Mon Sep 17 00:00:00 2001 From: lujian Date: Tue, 27 Nov 2018 10:52:28 +0800 Subject: [PATCH 48/62] =?UTF-8?q?[fix]=E9=87=8D=E5=A4=8D=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/riskbusiness/core/RiskBusinessService.java | 4 +++- .../riskbusiness/core/impl/RiskBusinessServiceImpl.java | 9 ++++++++- .../manage/riskbusiness/web/RiskBusinessController.java | 5 ++--- .../static/analysis/templates/riskEvent_detail_bd.html | 8 ++++++++ src/main/ui/static/analysis/templates/risk_business.html | 4 ++-- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java index 778eb6069..abb23270c 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java @@ -68,8 +68,10 @@ public interface RiskBusinessService { /** * 发送拒绝邮件 * @param riskId + * @param refuseDescription + * @throws IOException */ - void sendRefuseEmail(String riskId) throws IOException; + void sendRefuseEmail(String riskId, String refuseDescription) throws IOException; /** * 发送提醒邮件 diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 79f301f7c..177ad51f0 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -17,6 +17,7 @@ import au.com.royalpay.payment.manage.notice.core.MailService; import au.com.royalpay.payment.manage.pushMessage.APNSMessageHelper; import au.com.royalpay.payment.manage.pushMessage.bean.AppManagerMessageBuilder; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; +import au.com.royalpay.payment.manage.riskbusiness.core.RiskMaterialService; import au.com.royalpay.payment.manage.riskbusiness.core.RiskProcessLogService; import au.com.royalpay.payment.manage.riskbusiness.enums.RiskEmailStatusEnum; import au.com.royalpay.payment.manage.riskbusiness.enums.RiskResultTypeEnum; @@ -102,6 +103,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Resource private RiskMaterialMapper riskMaterialMapper; @Resource + private RiskMaterialService riskMaterialService; + @Resource private RiskFileMapper riskFileMapper; @Resource private ClientDeviceTokenMapper clientDeviceTokenMapper; @@ -424,8 +427,11 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } @Override - public void sendRefuseEmail(String riskId) throws IOException { + public void sendRefuseEmail(String riskId, String refuseDescription) throws IOException { JSONObject event = getRiskEventDetail(riskId); + if (RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType().intValue() == event.getIntValue("result_type")) { + throw new BadRequestException("Refused Already!"); + } Context ctx = getMailContext(event); ctx.setVariable("refuse",true); ctx.setVariable("refuse_description", riskMaterialMapper.findAllMaterials(riskId).get(0).getString("refuse_description")); @@ -441,6 +447,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo event.put("result_type",RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType()); event.put("submit_url",uploadUrl); riskEventMapper.update(event); + riskMaterialService.updateRiskMaterial(riskId, refuseDescription); // 日志记录 riskProcessLogService.addRiskProcessLog(riskId, event.getString("fillin_id"), diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java index 7827b312e..a0159e385 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java @@ -87,9 +87,8 @@ public class RiskBusinessController { } @RequestMapping(value = "/{risk_id}/refuse",method = RequestMethod.PUT) - public void refuseEmail(@PathVariable String risk_id, @RequestBody JSONObject otherParams) throws IOException { - riskMaterialService.updateRiskMaterial(risk_id, otherParams.getString("refuse_description")); - riskBusinessService.sendRefuseEmail(risk_id); + public void refuseEmail(@PathVariable("risk_id") String riskId, @RequestBody JSONObject otherParams) throws IOException { + riskBusinessService.sendRefuseEmail(riskId, otherParams.getString("refuse_description")); } @GetMapping(value = "/{risk_id}/material") diff --git a/src/main/ui/static/analysis/templates/riskEvent_detail_bd.html b/src/main/ui/static/analysis/templates/riskEvent_detail_bd.html index 8ce630ed2..eebc8afcf 100644 --- a/src/main/ui/static/analysis/templates/riskEvent_detail_bd.html +++ b/src/main/ui/static/analysis/templates/riskEvent_detail_bd.html @@ -57,6 +57,14 @@
    +
    + +
    +
    +

    +
    +
    +

    {{item.question}}

    diff --git a/src/main/ui/static/analysis/templates/risk_business.html b/src/main/ui/static/analysis/templates/risk_business.html index 6648f3db0..09df3b0c5 100644 --- a/src/main/ui/static/analysis/templates/risk_business.html +++ b/src/main/ui/static/analysis/templates/risk_business.html @@ -160,13 +160,13 @@ - New Event + New Event
    From 799cc6da489d48e9fb8f0d23303c4681b8133bf3 Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Tue, 27 Nov 2018 17:14:29 +0800 Subject: [PATCH 49/62] email update --- .../listeners/AfterPaymentFinishListener.java | 2 +- src/main/resources/application-dev.properties | 2 +- src/main/resources/application.properties | 3 +- .../mappers/riskbusiness/RiskEventMapper.xml | 160 +++++++++++++++++- src/main/ui/static/analysis/risk_business.js | 65 ++++++- .../analysis/templates/risk_business.html | 108 +++++++++--- 6 files changed, 302 insertions(+), 38 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java b/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java index 0ac43fd05..b52e8387b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java +++ b/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java @@ -28,7 +28,7 @@ public class AfterPaymentFinishListener implements ApplicationListener - - AND re.receive_email_date = #{receive_email_date} + + AND re.receive_email_date >= #{receive_email_date_begin} - - AND re.reply_email_date = #{reply_email_date} + + AND re.receive_email_date <= #{receive_email_date_end} + + + + AND re.reply_email_date >= #{reply_email_date_begin} + + + + AND re.reply_email_date <= #{reply_email_date_begin} @@ -123,4 +131,146 @@ - \ No newline at end of file + + + + + diff --git a/src/main/ui/static/analysis/risk_business.js b/src/main/ui/static/analysis/risk_business.js index f98346da7..e05f95423 100644 --- a/src/main/ui/static/analysis/risk_business.js +++ b/src/main/ui/static/analysis/risk_business.js @@ -128,8 +128,8 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], }]); - app.controller('riskBusinessCtrl', ['$scope', '$state', '$http', '$uibModal', '$filter', 'commonDialog', 'industryMap', - function ($scope, $state, $http, $uibModal, $filter, commonDialog, industryMap) { + app.controller('riskBusinessCtrl', ['$scope', '$state', '$http', '$uibModal', '$filter', 'commonDialog', 'industryMap','chartParser', + function ($scope, $state, $http, $uibModal, $filter, commonDialog, industryMap, chartParser) { $scope.orderTypes = orderTypesMap; $scope.orderTypesForBD = orderTypesMapForBD; $scope.resultTypes = resultTypesMap; @@ -139,13 +139,20 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], $scope.amountSection = amountSectionMap; $scope.pagination = {}; $scope.params = {}; - + var industries = new Array(); + angular.forEach($scope.industries, function (industry) { + industries.push(industry.label); + }); + industries.push('未知行业'); + console.log(industries); // 加载风险注册事件 $scope.loadRiskEvents = function (page) { var params = angular.copy($scope.params); params.page = page || $scope.pagination.page || 1; - params.replyEmailDate = $filter('date')(params.replyEmailDate, 'yyyy-MM-dd'); - params.receiveEmailDate = $filter('date')(params.receiveEmailDate, 'yyyy-MM-dd'); + params.replyEmailDateBegin = $filter('date')(params.replyEmailDateBegin, 'yyyy-MM-dd'); + params.replyEmailDateEnd = $filter('date')(params.replyEmailDateEnd, 'yyyy-MM-dd'); + params.receiveEmailDateBegin = $filter('date')(params.receiveEmailDateBegin, 'yyyy-MM-dd'); + params.receiveEmailDateEnd = $filter('date')(params.receiveEmailDateEnd, 'yyyy-MM-dd'); if (params.section != null) { var sectionArray = params.section.split('-'); params.startAmount = sectionArray[0]; @@ -155,6 +162,54 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], $scope.riskEvents = resp.data.data; $scope.pagination = resp.data.pagination; }); + $http.get('/risk/business/events/analysis/industry', {params: params}).then(function (resp) { + $scope.riskEventsByIndustry = resp.data; + $scope.risk_industry_chart = chartParser.parse(industryAmount(industries),$scope.riskEventsByIndustry); + }); + + }; + + var industryAmount = function (industries) { + return { + chart: { + tooltip: { + trigger: 'item', + formatter: "{a}
    {b} : {c}" + }, + // color: colors, + legend: { + orient: 'vertical', + left: 'right', + data: industries + } + }, + series: [{ + basic: { + name: '风控事件单量', type: 'pie', + radius: '80%', + center: ['50%', '60%'], + label:{ //饼图图形上的文本标签 + normal:{ + show:true, + position:'outer', //标签的位置 + textStyle : { + fontWeight : 300 , + fontSize : 16 //文字的字体大小 + }, + formatter:'{d}%' + } + }, + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + }, + column: {key: 'amount', name: 'industry'} + }] + } }; $scope.loadRiskEvents(1); diff --git a/src/main/ui/static/analysis/templates/risk_business.html b/src/main/ui/static/analysis/templates/risk_business.html index 09df3b0c5..6f21c1e85 100644 --- a/src/main/ui/static/analysis/templates/risk_business.html +++ b/src/main/ui/static/analysis/templates/risk_business.html @@ -108,39 +108,75 @@
    -
    + + +
    +
    +

    RiskEvent Analysis

    +
    + +
    +
    +

    行业占比

    +
    +
    +
    +

    金额分布

    +
    +
    +
    +
    + +
    From d643f8cea7883d9f251199be94dede12f46b625d Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Wed, 28 Nov 2018 16:44:38 +0800 Subject: [PATCH 50/62] =?UTF-8?q?=E9=A3=8E=E6=8E=A7=20e-charts=E5=88=86?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/payment/TransactionMapper.java | 4 + .../mappers/riskbusiness/RiskEventMapper.java | 4 + .../riskbusiness/RiskOrdersMapper.java | 16 +++ .../riskbusiness/bean/RiskEventQuery.java | 56 ++++++++ .../core/RiskBusinessService.java | 16 +++ .../core/impl/RiskBusinessServiceImpl.java | 85 +++++++++++- .../web/RiskBusinessController.java | 18 +++ .../mappers/riskbusiness/RiskEventMapper.xml | 131 ++++++++++++------ src/main/ui/static/analysis/risk_business.js | 50 ++++++- .../analysis/templates/risk_business.html | 6 +- 10 files changed, 342 insertions(+), 44 deletions(-) create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskOrdersMapper.java diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java index 8f4ab97b4..9a47c34f4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java @@ -38,6 +38,10 @@ public interface TransactionMapper { @AdvanceSelect(addonWhereClause = "refund_id is null and system_generate=0 and transaction_type = 'Credit'") JSONObject findIncomeByOrderId(@Param("order_id") String orderId); + @AutoSql(type = SqlType.SELECT) + @AdvanceSelect(addonWhereClause = "transaction_type = 'Credit'") + JSONObject findByOrderId(@Param("order_id") String orderId); + @AutoSql(type = SqlType.SELECT) @AdvanceSelect(addonWhereClause = "refund_id is null and system_generate=1") JSONObject findSystemIncomeByOrderId(@Param("order_id") String orderId); diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java index 200a00356..3cfed3757 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java @@ -28,6 +28,10 @@ public interface RiskEventMapper { PageList listRisksByPage(JSONObject params, PageBounds pageBounds); + List analysisByIndustry(JSONObject params); + + List analysisByAmount(JSONObject params); + @AutoSql(type = SqlType.SELECT) JSONObject findById(@Param("risk_id") String riskId); diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskOrdersMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskOrdersMapper.java new file mode 100644 index 000000000..ddf743854 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskOrdersMapper.java @@ -0,0 +1,16 @@ +package au.com.royalpay.payment.manage.mappers.riskbusiness; + +import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; +import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; +import cn.yixblog.support.mybatis.autosql.annotations.SqlType; +import com.alibaba.fastjson.JSONObject; +import org.apache.ibatis.annotations.Param; + +@AutoMapper(tablename = "risk_orders", pkName = "risk_order_id") +public interface RiskOrdersMapper { + @AutoSql(type= SqlType.INSERT) + void save(JSONObject params); + + @AutoSql(type = SqlType.DELETE) + void clearOrders(@Param("risk_id") String riskId); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/bean/RiskEventQuery.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/bean/RiskEventQuery.java index 29b3bb14f..53d5e7246 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/bean/RiskEventQuery.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/bean/RiskEventQuery.java @@ -38,9 +38,17 @@ public class RiskEventQuery { // 收到调单邮件日期 private String receiveEmailDate; + private String receiveEmailDateBegin; + + private String receiveEmailDateEnd; + // 邮件回复截止日期 private String replyEmailDate; + private String replyEmailDateBegin; + + private String replyEmailDateEnd; + private Integer page = 1; // 金额区间 @@ -135,6 +143,38 @@ public class RiskEventQuery { this.replyEmailDate = replyEmailDate; } + public String getReceiveEmailDateBegin() { + return receiveEmailDateBegin; + } + + public void setReceiveEmailDateBegin(String receiveEmailDateBegin) { + this.receiveEmailDateBegin = receiveEmailDateBegin; + } + + public String getReceiveEmailDateEnd() { + return receiveEmailDateEnd; + } + + public void setReceiveEmailDateEnd(String receiveEmailDateEnd) { + this.receiveEmailDateEnd = receiveEmailDateEnd; + } + + public String getReplyEmailDateBegin() { + return replyEmailDateBegin; + } + + public void setReplyEmailDateBegin(String replyEmailDateBegin) { + this.replyEmailDateBegin = replyEmailDateBegin; + } + + public String getReplyEmailDateEnd() { + return replyEmailDateEnd; + } + + public void setReplyEmailDateEnd(String replyEmailDateEnd) { + this.replyEmailDateEnd = replyEmailDateEnd; + } + public Integer getPage() { return page; } @@ -184,6 +224,22 @@ public class RiskEventQuery { params.put("reply_email_date", replyEmailDate); } + if (receiveEmailDateBegin != null) { + params.put("receive_email_date_begin", receiveEmailDateBegin); + } + + if (receiveEmailDateEnd != null) { + params.put("receive_email_date_end", receiveEmailDateEnd); + } + + if (replyEmailDateBegin != null) { + params.put("reply_email_date_begin", replyEmailDateBegin); + } + + if (replyEmailDateEnd != null) { + params.put("reply_email_date_end", replyEmailDateEnd); + } + if (page != null && page > 0) { params.put("page", page); } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java index abb23270c..74a62881f 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java @@ -27,6 +27,20 @@ public interface RiskBusinessService { */ JSONObject getRiskEventsByPage(JSONObject params, JSONObject manager); + /** + * 风险事件按行业分析 + * @param params + * @return + */ + List analysisByIndustry(JSONObject params, JSONObject manager); + + /** + * 风险事件列表按金额分析 + * @param params + * @return + */ + List analysisByAmount(JSONObject params, JSONObject manager); + /** * 风险事件详情 * @param riskId @@ -115,4 +129,6 @@ public interface RiskBusinessService { JSONObject riskEventMaterialPass(JSONObject params, JSONObject manager); JSONObject updateIsSendClient(String riskId); + + void completeOrderAmount(); } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 177ad51f0..e7b9798fc 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -10,6 +10,7 @@ import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper; import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskEventMapper; import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskFileMapper; import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskMaterialMapper; +import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskOrdersMapper; import au.com.royalpay.payment.manage.mappers.system.ClientDeviceTokenMapper; import au.com.royalpay.payment.manage.mappers.system.ClientMapper; import au.com.royalpay.payment.manage.mappers.system.ClientBDMapper; @@ -107,6 +108,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Resource private RiskFileMapper riskFileMapper; @Resource + private RiskOrdersMapper riskOrdersMapper; + @Resource private ClientDeviceTokenMapper clientDeviceTokenMapper; @Resource private AppMessageLogMapper appMessageLogMapper; @@ -179,6 +182,49 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo return PageListUtils.buildPageListResult(riskEvents); } + @Override + public List analysisByIndustry(JSONObject params, JSONObject manager) { + List industryAnalysis = riskEventMapper.analysisByIndustry(params); + for(JSONObject industry:industryAnalysis){ + if(StringUtils.isBlank(industry.getString("industry"))){ + industry.put("industry","未知行业"); + } + } + return industryAnalysis; + } + + private List industryArray(){ + List industryArray = new ArrayList<>(); + industryArray.add("鞋包服饰"); + industryArray.add("机票行业"); + industryArray.add("软件服务"); + industryArray.add("旅游票务"); + industryArray.add("国际租车"); + industryArray.add("医疗服务(出国)"); + industryArray.add("医疗服务(不出国)"); + industryArray.add("留学教育(网络教育)"); + industryArray.add("留学教育(一年及以下)"); + industryArray.add("其它货物贸易行业"); + industryArray.add("文具/办公用品"); + industryArray.add("综合商城"); + industryArray.add("酒店行业"); + industryArray.add("教育行业"); + industryArray.add("国际物流"); + industryArray.add("数码电器"); + industryArray.add("母婴"); + industryArray.add("化妆品"); + industryArray.add("食品"); + industryArray.add("留学教育(一年以上)"); + industryArray.add("其它服务行业"); + industryArray.add("未知行业"); + return industryArray; + } + + @Override + public List analysisByAmount(JSONObject params, JSONObject manager) { + return riskEventMapper.analysisByAmount(params); + } + @Override public JSONObject getRiskEventDetail(String riskId) { @@ -266,7 +312,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo // 将订单order_id存入数据库方便后面快速查询 JSONObject orderInfo = transactionList.get(0); realOrderIdList.add(orderInfo.getString("order_id")); - orderAmountList.add(orderInfo.getString("transaction_amount")); + orderAmountList.add(orderInfo.getString("clearing_amount")); } params.put("order_amounts", StringUtils.join(orderAmountList, ",")); params.put("real_order_ids", StringUtils.join(realOrderIdList, ",")); @@ -278,6 +324,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo public void addRiskEvent(JSONObject params, JSONObject manager) { params = getEvent(params); riskEventMapper.save(params); + setRiskOrders(params); params = riskEventMapper.findAll(params).get(0); riskProcessLogService.addRiskProcessLog(params.getString("risk_id"), params.getString("fillin_id"), @@ -287,10 +334,27 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo RiskResultTypeEnum.NOT_HANDLED.getResultType()); } + private void setRiskOrders(JSONObject params){ + if(StringUtils.isNotBlank(params.getString("order_ids"))){ + String riskId = params.getString("risk_id"); + String orderIds = params.getString("real_order_ids"); + for(String orderId : orderIds.split(",")){ + JSONObject order = transactionMapper.findByOrderId(orderId); + JSONObject riskOrder = new JSONObject(); + riskOrder.put("risk_id",riskId); + riskOrder.put("order_id",orderId); + riskOrder.put("clearing_amount",order.getString("clearing_amount")); + riskOrdersMapper.save(riskOrder); + } + } + } + @Override public void updateRiskEvent(JSONObject params) { params = getEvent(params); riskEventMapper.update(params); + riskOrdersMapper.clearOrders(params.getString("risk_id")); + setRiskOrders(params); } @Override @@ -930,4 +994,23 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo event = riskEventMapper.findById(riskId); return event; } + + @Override + public void completeOrderAmount() { + List riskEventList = getRiskEvents(null); + for(JSONObject riskEvent:riskEventList){ + if(riskEvent.getIntValue("order_type")==4 || StringUtils.isBlank(riskEvent.getString("real_order_ids"))){ + continue; + } + String[] order_ids=riskEvent.getString("real_order_ids").split(","); + for(String orderId : order_ids){ + JSONObject transaction = transactionMapper.findByOrderId(orderId); + JSONObject riskOrder = new JSONObject(); + riskOrder.put("risk_id",riskEvent.getString("risk_id")); + riskOrder.put("order_id",transaction.getString("order_id")); + riskOrder.put("clearing_amount",transaction.getString("clearing_amount")); + riskOrdersMapper.save(riskOrder); + } + } + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java index a0159e385..b589de9fb 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java @@ -46,6 +46,18 @@ public class RiskBusinessController { return riskBusinessService.getRiskEventsByPage(params, manager); } + @GetMapping(value = "events/analysis/industry") + public List analysisByIndustry(RiskEventQuery riskEventQuery, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + JSONObject params = riskEventQuery.toJSON(); + return riskBusinessService.analysisByIndustry(params, manager); + } + + @GetMapping(value = "events/analysis/amount") + public List analysisByAmount(RiskEventQuery riskEventQuery, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + JSONObject params = riskEventQuery.toJSON(); + return riskBusinessService.analysisByAmount(params, manager); + } + @GetMapping(value = "events/{risk_id}") public JSONObject getRiskEventDetail(@PathVariable("risk_id") String riskId, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { @@ -160,5 +172,11 @@ public class RiskBusinessController { public JSONObject updateRiskEventIsSendClient(@RequestParam("risk_id") String riskId) { return riskBusinessService.updateIsSendClient(riskId); } + + @GetMapping(value = "/complete/event/order_amount") + public String completeOrderAmount() { + riskBusinessService.completeOrderAmount(); + return "SUCCESS"; + } } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml index 663a6004a..e188bec19 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml @@ -33,26 +33,11 @@ LEFT JOIN sys_clients sc ON re.client_moniker = sc.client_moniker - RIGHT JOIN( - SELECT distinct re.risk_id - FROM - risk_event re, - risk_event_help reh - - reh.risk_event_help_id < (LENGTH(re.order_amounts) - LENGTH(REPLACE(re.order_amounts, ',' , ''))) + 1 - - AND cast(SUBSTRING_INDEX(SUBSTRING_INDEX(order_amounts,',',reh.risk_event_help_id + 1),',',-1) as signed) >= #{start_amount} - - - - AND cast(SUBSTRING_INDEX(SUBSTRING_INDEX(order_amounts,',',reh.risk_event_help_id + 1),',',-1) as signed) <= #{end_amount} - - - - ) temp - on re.risk_id = temp.risk_id + RIGHT JOIN + (SELECT DISTINCT(risk_id) FROM risk_orders + WHERE #{start_amount} <= clearing_amount AND #{end_amount} > clearing_amount) ro + ON re.risk_id = ro.risk_id - INNER JOIN( SELECT DISTINCT client_id @@ -184,24 +169,10 @@ LEFT JOIN sys_clients sc ON re.client_moniker = sc.client_moniker - RIGHT JOIN( - SELECT distinct re.risk_id - FROM - risk_event re, - risk_event_help reh - - reh.risk_event_help_id < (LENGTH(re.order_amounts) - LENGTH(REPLACE(re.order_amounts, ',' , ''))) + 1 - - AND cast(SUBSTRING_INDEX(SUBSTRING_INDEX(order_amounts,',',reh.risk_event_help_id + 1),',',-1) as signed) >= #{start_amount} - - - - AND cast(SUBSTRING_INDEX(SUBSTRING_INDEX(order_amounts,',',reh.risk_event_help_id + 1),',',-1) as signed) <= #{end_amount} - - - - ) temp - on re.risk_id = temp.risk_id + RIGHT JOIN + (SELECT DISTINCT(risk_id) FROM risk_orders + WHERE #{start_amount} <= clearing_amount AND #{end_amount} > clearing_amount) ro + ON re.risk_id = ro.risk_id @@ -270,7 +241,89 @@ GROUP BY sc.industry - + diff --git a/src/main/ui/static/analysis/risk_business.js b/src/main/ui/static/analysis/risk_business.js index e05f95423..bfeeba04d 100644 --- a/src/main/ui/static/analysis/risk_business.js +++ b/src/main/ui/static/analysis/risk_business.js @@ -166,6 +166,10 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], $scope.riskEventsByIndustry = resp.data; $scope.risk_industry_chart = chartParser.parse(industryAmount(industries),$scope.riskEventsByIndustry); }); + $http.get('/risk/business/events/analysis/amount', {params: params}).then(function (resp) { + $scope.riskEventsByAmount = resp.data; + $scope.risk_amount_chart = chartParser.parse(intervalsAmount(),$scope.riskEventsByAmount); + }); }; @@ -187,7 +191,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], basic: { name: '风控事件单量', type: 'pie', radius: '80%', - center: ['50%', '60%'], + center: ['50%', '58%'], label:{ //饼图图形上的文本标签 normal:{ show:true, @@ -212,6 +216,50 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], } }; + var intervalsAmount = function () { + return { + chart: { + tooltip: { + trigger: 'item', + formatter: "{a}
    {b} : {c}" + }, + // color: colors, + legend: { + orient: 'vertical', + left: 'right', + data: [ '0-500','500-1000','1000-1500','1500-2000','2000-2500','2500-3000','3000-3500','3500-4000','4000-4500','4500-5000','5000-5500','5500-6000', + '6000-6500','6500-7000','7000-7500','7500-8000','8000-8500','8500-9000','>9000'] + } + }, + series: [{ + basic: { + name: '风控事件单量', type: 'pie', + radius: '80%', + center: ['50%', '58%'], + label:{ //饼图图形上的文本标签 + normal:{ + show:true, + position:'outer', //标签的位置 + textStyle : { + fontWeight : 300 , + fontSize : 16 //文字的字体大小 + }, + formatter:'{d}%' + } + }, + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + }, + column: {key: 'amount', name: 'intervals'} + }] + } + }; + $scope.loadRiskEvents(1); } ]); diff --git a/src/main/ui/static/analysis/templates/risk_business.html b/src/main/ui/static/analysis/templates/risk_business.html index 6f21c1e85..8c06c882d 100644 --- a/src/main/ui/static/analysis/templates/risk_business.html +++ b/src/main/ui/static/analysis/templates/risk_business.html @@ -303,12 +303,12 @@

    行业占比

    + ng-class="{nodata:risk_industry_chart.nodata}">

    金额分布

    -
    +
    From 5dd947a9db7d9a05345d2f54bfb01afb7af02614 Mon Sep 17 00:00:00 2001 From: lujian Date: Wed, 28 Nov 2018 18:55:01 +0800 Subject: [PATCH 51/62] =?UTF-8?q?[fix]=E6=96=B0=E5=A2=9E=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/merchants/core/ClientManager.java | 2 + .../core/impls/ClientManagerImpl.java | 11 ++ .../web/PartnerManageController.java | 5 + .../resources/templates/success_new_v2.html | 153 ++++++++++++++++++ .../static/payment/partner/partner-manage.js | 16 ++ .../templates/partner_payment_info.html | 35 +++- 6 files changed, 216 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/templates/success_new_v2.html diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java index 20e94280d..82976ea57 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java @@ -247,6 +247,8 @@ public interface ClientManager { void changePaymentPage(JSONObject manager, String clientMoniker, String paypad_version); + void changePaymentSuccessPage(JSONObject manager, String clientMoniker, String paysuccess_version); + void changePaymentPage(JSONObject account, String paypad_version); void changeManualSettle(JSONObject account , int client_id, boolean manual_settle,String operator_id,int type,String operation); diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index 093767660..f783c9beb 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -3032,6 +3032,17 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid clientModifySupport.processClientConfigModify(new PaypadVersionModify(manager, clientMoniker, paypad_version)); } + @Override + public void changePaymentSuccessPage(JSONObject manager, String clientMoniker, String paysuccess_version) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + checkOrgPermission(manager, client); + client.put("paysuccess_version", paysuccess_version); + clientMapper.update(client); + } + @Override public void changePaymentPage(JSONObject account, String paypad_version) { int clientId = account.getIntValue("client_id"); diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java index fee7980d0..7bb29b70d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java @@ -298,6 +298,11 @@ public class PartnerManageController { clientManager.changePaymentPage(manager, clientMoniker, pass.getString("paypad_version")); } + @ManagerMapping(value = "/{clientMoniker}/paysuccess_version", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR, ManagerRole.BD_USER}) + public void changePaymentSuccessPage(@PathVariable String clientMoniker, @RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.changePaymentSuccessPage(manager, clientMoniker, pass.getString("paysuccess_version")); + } + @ManagerMapping(value = "/{clientMoniker}/trade_logs", method = RequestMethod.GET, role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT, ManagerRole.DIRECTOR, ManagerRole.FINANCIAL_STAFF}) public JSONObject listPartnerTradeLogs(@PathVariable String clientMoniker, TradeLogQuery query, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) throws Exception { return tradeLogService.listPartnerTradeLogs(manager, null, clientMoniker, query, null); diff --git a/src/main/resources/templates/success_new_v2.html b/src/main/resources/templates/success_new_v2.html new file mode 100644 index 000000000..e1ffeeccd --- /dev/null +++ b/src/main/resources/templates/success_new_v2.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + Pay Successful + Payment Failed + Order Closed + Not Pay + + + + + + + + + + +
    +

    + + 支付成功 +

    + 支付失败 + 已关闭 + 未支付 + +
    +
    +
    +
    +
    商户:
    +
    ${client.short_name}
    +
    +
    +
    支付金额:
    +
    +
    +
    +
    输入金额:
    +
    +
    +
    +
    手续费:
    +
    +
    +
    +
    汇率:
    +
    ${order.exchange_rate}
    +
    +
    +
    时间:
    +
    +
    +
    +
    单号:
    +
    +
    +
    +
    流水号:
    +
    +
    +
    +
    备注:
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    + + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    恭喜您!获得一笔鼓励金
    +
    活动期间任意消费满10澳币,获取随机鼓励金
    +
    +
    0.00
    +
    点击翻倍
    +
    +
    +
    +
    +
    X 1
    + 查看累积金额 +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    恭喜您!获得积分奖励
    +
    使用RoyalPay任意消费满10澳币,获取相应积分
    +
    + +
    +
    +
    +
    +
    +20积分
    + 查看累积积分 +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js index bbb99024e..7e9d00720 100644 --- a/src/main/ui/static/payment/partner/partner-manage.js +++ b/src/main/ui/static/payment/partner/partner-manage.js @@ -1805,6 +1805,22 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter }) }; + // 更改支付成功页 + $scope.changePaySuccessPage = function () { + if (!$scope.paymentInfo) { + return; + } + $http.put('/sys/partners/' + $scope.partner.client_moniker + '/paysuccess_version', {paysuccess_version: $scope.paymentInfo.paysuccess_version}).then(function () { + $scope.loadPartnerPaymentInfo(); + }, function (resp) { + commonDialog.alert({ + title: 'failed to change Payment Success Page Version', + content: resp.data.message, + type: 'error' + }) + }) + }; + $scope.toggleRequireCustInfo = function () { if (!$scope.paymentInfo) { return; diff --git a/src/main/ui/static/payment/partner/templates/partner_payment_info.html b/src/main/ui/static/payment/partner/templates/partner_payment_info.html index 3cdc89959..581f53caa 100644 --- a/src/main/ui/static/payment/partner/templates/partner_payment_info.html +++ b/src/main/ui/static/payment/partner/templates/partner_payment_info.html @@ -466,18 +466,41 @@
    Payment Page
    -
    -
    - -
    +
    +
    + +
    +
    + +
    + + +
    +
    +
    + +
    +
    - - + +
    +
    + +
    + + +
    From baa99631d14ea19e959fd53ceef97ee43d117616 Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Thu, 29 Nov 2018 10:12:53 +0800 Subject: [PATCH 52/62] =?UTF-8?q?info=E9=82=AE=E7=AE=B1=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment/manage/notice/core/impls/MailServiceImp.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/notice/core/impls/MailServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/notice/core/impls/MailServiceImp.java index cb639e796..7fc1e71ff 100644 --- a/src/main/java/au/com/royalpay/payment/manage/notice/core/impls/MailServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/notice/core/impls/MailServiceImp.java @@ -127,7 +127,7 @@ public class MailServiceImp implements MailService { noticeBean.setFiles(files.toString()); } noticeBean.setSenderAddress("info@royalpay.com.au"); - noticeBean.setPassword("Vaba6439"); + noticeBean.setPassword("Rpay2018"); String postUrl = mailHost + "/mail?" + generateMailSignParam(); @@ -162,7 +162,7 @@ public class MailServiceImp implements MailService { noticeBean.setMailClients(mailClients); noticeBean.setContent(content); noticeBean.setSenderAddress("info@royalpay.com.au"); - noticeBean.setPassword("Vaba6439"); + noticeBean.setPassword("Rpay2018"); String postUrl = mailHost + "/mail/single?" + generateMailSignParam(); HttpRequestResult result = null; try { From f8f2d4b254901969fe32ae9053085c6e51b937f1 Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Thu, 29 Nov 2018 10:20:23 +0800 Subject: [PATCH 53/62] update --- .../payment/manage/task/CustomerImpressionTask.java | 10 +++++----- .../payment/manage/task/UpdatePartnerPasswordTask.java | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/task/CustomerImpressionTask.java b/src/main/java/au/com/royalpay/payment/manage/task/CustomerImpressionTask.java index 265908393..f4b7c7e74 100644 --- a/src/main/java/au/com/royalpay/payment/manage/task/CustomerImpressionTask.java +++ b/src/main/java/au/com/royalpay/payment/manage/task/CustomerImpressionTask.java @@ -48,7 +48,7 @@ public class CustomerImpressionTask { } for (List splitClients : splitList) { Runnable task = () -> splitClients.forEach((p) -> { - System.out.println("当前执行到" + p.getIntValue("client_id")); +// System.out.println("当前执行到" + p.getIntValue("client_id")); customerImpressionService.generateTag(p.getIntValue("client_id")); }); generatePool.execute(task); @@ -56,8 +56,8 @@ public class CustomerImpressionTask { }); } - @Scheduled(cron = "0/1 * * * * ?") - public void customerImpressionGenerateInfo() { - synchronizedScheduler.executeProcess("manage_task:CustomerImpression", 1_000, () -> customerImpressionService.generateInfo()); - } +// @Scheduled(cron = "0/1 * * * * ?") +// public void customerImpressionGenerateInfo() { +// synchronizedScheduler.executeProcess("manage_task:CustomerImpression", 1_000, () -> customerImpressionService.generateInfo()); +// } } diff --git a/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java b/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java index 5c7152c06..c063e1e95 100644 --- a/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java +++ b/src/main/java/au/com/royalpay/payment/manage/task/UpdatePartnerPasswordTask.java @@ -15,7 +15,7 @@ import java.util.Arrays; import java.util.List; @Component -@ConditionalOnProperty(value = "app.run-tasks", havingValue = "false") +@ConditionalOnProperty(value = "app.run-tasks", havingValue = "true") public class UpdatePartnerPasswordTask { private Logger logger = LoggerFactory.getLogger(getClass()); @Resource From a2ce6d03872dc76b8b0e85a8f463337cd2a5d3cf Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Thu, 29 Nov 2018 16:31:05 +0800 Subject: [PATCH 54/62] =?UTF-8?q?=E9=80=9A=E7=9F=A5=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=8D=E5=B0=8F=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment/manage/merchants/core/impls/ClientManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index f783c9beb..bc15a15cf 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -972,7 +972,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid username += "0"; } } - sendInitEmail(client, username, pwd); + sendInitEmail(client, username.toLowerCase(), pwd); // sendInitEmail(manager, client, username, pwd); } From bff6bcdcb256ef9ff0f2ab33d93ea12e9cfdfa64 Mon Sep 17 00:00:00 2001 From: lujian Date: Thu, 29 Nov 2018 19:43:31 +0800 Subject: [PATCH 55/62] =?UTF-8?q?[fix]=E9=82=AE=E4=BB=B6=E8=8B=B1=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/impl/RiskBusinessServiceImpl.java | 3 ++- .../templates/mail/risk_upload_mail.html | 21 +++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index e7b9798fc..8d04c9cd9 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -490,12 +490,14 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo } + @Transactional @Override public void sendRefuseEmail(String riskId, String refuseDescription) throws IOException { JSONObject event = getRiskEventDetail(riskId); if (RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType().intValue() == event.getIntValue("result_type")) { throw new BadRequestException("Refused Already!"); } + riskMaterialService.updateRiskMaterial(riskId, refuseDescription); Context ctx = getMailContext(event); ctx.setVariable("refuse",true); ctx.setVariable("refuse_description", riskMaterialMapper.findAllMaterials(riskId).get(0).getString("refuse_description")); @@ -511,7 +513,6 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo event.put("result_type",RiskResultTypeEnum.MATERIAL_NOT_PASS.getResultType()); event.put("submit_url",uploadUrl); riskEventMapper.update(event); - riskMaterialService.updateRiskMaterial(riskId, refuseDescription); // 日志记录 riskProcessLogService.addRiskProcessLog(riskId, event.getString("fillin_id"), diff --git a/src/main/resources/templates/mail/risk_upload_mail.html b/src/main/resources/templates/mail/risk_upload_mail.html index ce7150e06..72bf251a9 100644 --- a/src/main/resources/templates/mail/risk_upload_mail.html +++ b/src/main/resources/templates/mail/risk_upload_mail.html @@ -3,7 +3,7 @@ Dear :

    - ,您提交的风控材料已被拒绝。 + ,您提交的风控材料已被拒绝 拒绝理由: @@ -12,7 +12,18 @@ 下午5:00(悉尼时间)前提供腾讯被查商户 ()的以下材料:

    + +

    + Your submission of risk materials has been rejected. + + Reasons for rejection:. + + Please submit the following risk materials of merchant PINE + before 29/11/2018(Sydney time). +

    +

    1、请提供以下被查单号的小票, 物流单据(如有邮寄产品的情况), 以及消费者与买家的聊天记录等来佐证被查交易单号。 被查交易单号如下:

    +

    1. Please submit the materials including invoices, courier receipts (if have posted products), and chatting records or scene of consumption which can prove the facticity of the following reviewed orders. The reviewed orders as follows:

    @@ -42,8 +53,14 @@

    2、

    如果提交的材料不齐, 则有关停支付的风险。感谢,辛苦。

    -

    Submit Risk Materials

    材料请通过APP在规定时间内进行上传,或请联系BD,由BD在后台进行上传。

    +

    + If you can not provide qualified materials on time, the payment channels would be suspended or restricted with amount limit. Please be sure to assist the investigation. Thanks. +

    +

    + The materials can be uploaded by RoyalPay APP within the required time, or contact with BD. +

    +

    Submit Risk Materials

    尊敬的RoyalPay商户 :
    From dbe47fbd67ebb8c29c182a2b68dfdbea28c0132b Mon Sep 17 00:00:00 2001 From: lujian Date: Thu, 29 Nov 2018 20:18:45 +0800 Subject: [PATCH 56/62] =?UTF-8?q?[fix]=E6=B3=A8=E9=87=8A=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E9=A1=B5=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/partner_payment_info.html | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/main/ui/static/payment/partner/templates/partner_payment_info.html b/src/main/ui/static/payment/partner/templates/partner_payment_info.html index 581f53caa..b7a2a6c5e 100644 --- a/src/main/ui/static/payment/partner/templates/partner_payment_info.html +++ b/src/main/ui/static/payment/partner/templates/partner_payment_info.html @@ -484,25 +484,26 @@
    -
    - -
    - -
    -
    - -
    - - -
    -
    -
    + + + + + + + + + + + + + + + + + + + + From 3f55c636a621d6fe099ab3c326233047d53dbfc5 Mon Sep 17 00:00:00 2001 From: "taylor.dang" Date: Thu, 29 Nov 2018 23:50:44 +0800 Subject: [PATCH 57/62] yeepay --- src/main/ui/static/payment/partner/partner-manage.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js index 7e9d00720..4e675f3bc 100644 --- a/src/main/ui/static/payment/partner/partner-manage.js +++ b/src/main/ui/static/payment/partner/partner-manage.js @@ -2061,6 +2061,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter $scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t1.JDpay); $scope.rate.hf_rate_value = parseFloat($scope.sysRateConfig.t1.HFpay); $scope.rate.Rpay_rate_value = parseFloat($scope.sysRateConfig.t1.Rpay); + $scope.rate.yeepay_rate_value = parseFloat($scope.sysRateConfig.t1.Yeepay); break; } case '2': { @@ -2071,6 +2072,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter $scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t2.JDpay); $scope.rate.hf_rate_value = parseFloat($scope.sysRateConfig.t2.HFpay); $scope.rate.Rpay_rate_value = parseFloat($scope.sysRateConfig.t2.Rpay); + $scope.rate.yeepay_rate_value = parseFloat($scope.sysRateConfig.t2.Yeepay); break; } case '3': { @@ -2081,6 +2083,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter $scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t3.JDpay); $scope.rate.hf_rate_value = parseFloat($scope.sysRateConfig.t3.HFpay); $scope.rate.Rpay_rate_value = parseFloat($scope.sysRateConfig.t3.Rpay); + $scope.rate.yeepay_rate_value = parseFloat($scope.sysRateConfig.t3.Yeepay); break; } } From c0db3b484a76fd6d40f37849c427c99d74af9f9c Mon Sep 17 00:00:00 2001 From: lujian Date: Fri, 30 Nov 2018 14:53:01 +0800 Subject: [PATCH 58/62] =?UTF-8?q?[fix]=E6=94=AF=E4=BB=98=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E9=A1=B5=E6=A0=B7=E5=BC=8F=E5=BE=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/templates/success_new_v2.html | 153 ------------------ .../ui/static/templates/payment/success.css | 4 +- 2 files changed, 2 insertions(+), 155 deletions(-) delete mode 100644 src/main/resources/templates/success_new_v2.html diff --git a/src/main/resources/templates/success_new_v2.html b/src/main/resources/templates/success_new_v2.html deleted file mode 100644 index e1ffeeccd..000000000 --- a/src/main/resources/templates/success_new_v2.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - - Pay Successful - Payment Failed - Order Closed - Not Pay - - - - - - - - - - -
    -

    - - 支付成功 -

    - 支付失败 - 已关闭 - 未支付 - -
    -
    -
    -
    -
    商户:
    -
    ${client.short_name}
    -
    -
    -
    支付金额:
    -
    -
    -
    -
    输入金额:
    -
    -
    -
    -
    手续费:
    -
    -
    -
    -
    汇率:
    -
    ${order.exchange_rate}
    -
    -
    -
    时间:
    -
    -
    -
    -
    单号:
    -
    -
    -
    -
    流水号:
    -
    -
    -
    -
    备注:
    -
    -
    -
    -
    - - - -
    -
    -
    -
    -
    - - - -
    - -
    -
    -
    -
    -
    -
    -
    -
    恭喜您!获得一笔鼓励金
    -
    活动期间任意消费满10澳币,获取随机鼓励金
    -
    -
    0.00
    -
    点击翻倍
    -
    -
    -
    -
    -
    X 1
    - 查看累积金额 -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    恭喜您!获得积分奖励
    -
    使用RoyalPay任意消费满10澳币,获取相应积分
    -
    - -
    -
    -
    -
    -
    +20积分
    - 查看累积积分 -
    -
    -
    -
    - - \ No newline at end of file diff --git a/src/main/ui/static/templates/payment/success.css b/src/main/ui/static/templates/payment/success.css index 6a1060353..89a829205 100644 --- a/src/main/ui/static/templates/payment/success.css +++ b/src/main/ui/static/templates/payment/success.css @@ -1,5 +1,5 @@ .pagehead { - padding: 20px 0; + padding: 10px 0; color: white; background-color: #09bb07; } @@ -39,7 +39,7 @@ } .afterhr { - padding: 8px 0; + padding: 5px 0; content: " "; position: relative; bottom: 0; From adc00b6c1f33af26ebb0c42be59621eea43ab88b Mon Sep 17 00:00:00 2001 From: luoyang Date: Fri, 30 Nov 2018 16:18:31 +0800 Subject: [PATCH 59/62] add docs/wechat sdk --- src/document/cn/apis.js | 7 +++++-- src/document/en/apis.js | 9 +++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/document/cn/apis.js b/src/document/cn/apis.js index c01faa190..62e59e011 100644 --- a/src/document/cn/apis.js +++ b/src/document/cn/apis.js @@ -763,8 +763,11 @@ * 强烈建议获得支付结果后再调用RoyalPay订单查询API确认完成支付后再进行后续流程,避免因超时自动撤单导致资金损失
    *
    * 关于客户端和支付宝整合的更多信息: 支付宝SDK文档
    - * SDK for Android
    - * SDK for iOS + * 关于客户端和微信整合的更多信息: 微信SDK文档
    + * Alipay SDK for Android
    + * Alipay SDK for iOS + * Wechat SDK for Android
    + * Wechat SDK for iOS * * @apiVersion 1.0.0 * @apiGroup SDKPayment diff --git a/src/document/en/apis.js b/src/document/en/apis.js index b70133991..4a4e466b0 100644 --- a/src/document/en/apis.js +++ b/src/document/en/apis.js @@ -778,8 +778,13 @@ * It is strongly advised to request RoyalPay order query Api to confirm that the order has been paid in order to cancelling order by system at the same time.
    *
    * More information for integration with Alipay: Alipay SDK Document
    - * SDK for Android
    - * SDK for iOS + * * * 关于客户端和微信整合的更多信息: Wechat SDK Document
    + + * Alipay SDK for Android
    + * Alipay SDK for iOS + * Wechat SDK for Android
    + * Wechat SDK for iOS + * * @apiVersion 1.0.0 * @apiGroup SDKPayment * @apiHeader Accept application/json From dfea8382722342463a6299cfac3597849221aa69 Mon Sep 17 00:00:00 2001 From: luoyang Date: Fri, 30 Nov 2018 16:21:10 +0800 Subject: [PATCH 60/62] fix --- src/document/cn/apis.js | 2 +- src/document/en/apis.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/document/cn/apis.js b/src/document/cn/apis.js index 62e59e011..4d530daae 100644 --- a/src/document/cn/apis.js +++ b/src/document/cn/apis.js @@ -765,7 +765,7 @@ * 关于客户端和支付宝整合的更多信息: 支付宝SDK文档
    * 关于客户端和微信整合的更多信息: 微信SDK文档
    * Alipay SDK for Android
    - * Alipay SDK for iOS + * Alipay SDK for iOS
    * Wechat SDK for Android
    * Wechat SDK for iOS * diff --git a/src/document/en/apis.js b/src/document/en/apis.js index 4a4e466b0..0d005b361 100644 --- a/src/document/en/apis.js +++ b/src/document/en/apis.js @@ -781,7 +781,7 @@ * * * 关于客户端和微信整合的更多信息: Wechat SDK Document
    * Alipay SDK for Android
    - * Alipay SDK for iOS + * Alipay SDK for iOS
    * Wechat SDK for Android
    * Wechat SDK for iOS * From 4539136699c2e9017b7963dfb87f06e449186b40 Mon Sep 17 00:00:00 2001 From: luoyang Date: Fri, 30 Nov 2018 16:24:48 +0800 Subject: [PATCH 61/62] fix --- src/document/en/apis.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/document/en/apis.js b/src/document/en/apis.js index 0d005b361..f29081340 100644 --- a/src/document/en/apis.js +++ b/src/document/en/apis.js @@ -778,7 +778,7 @@ * It is strongly advised to request RoyalPay order query Api to confirm that the order has been paid in order to cancelling order by system at the same time.
    *
    * More information for integration with Alipay: Alipay SDK Document
    - * * * 关于客户端和微信整合的更多信息: Wechat SDK Document
    + * More information for integration with Wehcat: Wechat SDK Document
    * Alipay SDK for Android
    * Alipay SDK for iOS
    From 2a31151322272686c4808bc8a26463880de07ba0 Mon Sep 17 00:00:00 2001 From: luoyang Date: Mon, 3 Dec 2018 09:24:29 +0800 Subject: [PATCH 62/62] fix yeepay client_rate --- .../ui/static/payment/partner/templates/partner_new_rate.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/ui/static/payment/partner/templates/partner_new_rate.html b/src/main/ui/static/payment/partner/templates/partner_new_rate.html index 189a97ab1..f9400f322 100644 --- a/src/main/ui/static/payment/partner/templates/partner_new_rate.html +++ b/src/main/ui/static/payment/partner/templates/partner_new_rate.html @@ -166,12 +166,12 @@
    + min="0.6" max="5.0" step="0.1" id="yeepay_rate_value_input" required>
    %
    - No more than 2.2% + No more than 5.0%
    No less than 0.6%