From 172a8914212540a9b08bc11c748b627537a1a520 Mon Sep 17 00:00:00 2001 From: yangkai Date: Mon, 29 Oct 2018 15:26:26 +0800 Subject: [PATCH 1/4] fix --- .../static/config/sysconfigs/templates/permission_config.html | 4 ++-- .../config/sysconfigs/templates/permission_functions.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/ui/static/config/sysconfigs/templates/permission_config.html b/src/main/ui/static/config/sysconfigs/templates/permission_config.html index 059b734e1..b1a48b69f 100644 --- a/src/main/ui/static/config/sysconfigs/templates/permission_config.html +++ b/src/main/ui/static/config/sysconfigs/templates/permission_config.html @@ -87,9 +87,9 @@
权限
-
+
-
+
diff --git a/src/main/ui/static/config/sysconfigs/templates/permission_functions.html b/src/main/ui/static/config/sysconfigs/templates/permission_functions.html index 4ddeb6c0c..99637583e 100644 --- a/src/main/ui/static/config/sysconfigs/templates/permission_functions.html +++ b/src/main/ui/static/config/sysconfigs/templates/permission_functions.html @@ -12,7 +12,7 @@
-
+ From c789897636c8758e5db354381be11e8ed76d60c2 Mon Sep 17 00:00:00 2001 From: luoyang Date: Tue, 30 Oct 2018 09:36:19 +0800 Subject: [PATCH 2/4] fix manage.html & menu_html --- src/main/ui/manage.html | 28 +++++++++-- .../ui/static/analysis/channels_analysis.js | 2 +- .../ui/static/analysis/refund_analysis.js | 2 +- .../static/analysis/trans-analysis-monthly.js | 2 +- src/main/ui/static/analysis/trans-analysis.js | 4 +- .../transaction/analysis-transaction.js | 8 +-- .../templates/analysis_transaction.html | 30 +++++------ .../ui/static/menu/templates/main_menu.html | 50 +++++++++++++++++-- 8 files changed, 93 insertions(+), 33 deletions(-) diff --git a/src/main/ui/manage.html b/src/main/ui/manage.html index 8f6e7fcae..a9fa07fc1 100644 --- a/src/main/ui/manage.html +++ b/src/main/ui/manage.html @@ -313,12 +313,12 @@ margin-bottom: 10%;"/>
  • - 商户活跃度(原统计) + 商户活跃度
  • - 商户交易额统计(原统计) + 商户交易额统计
  • @@ -338,8 +338,28 @@ margin-bottom: 10%;"/>
  • - - 原统计 + + 交易数据|Transaction Data + +
  • +
  • + + Gateway统计 + +
  • +
  • + + 退款统计|Refund Analysis + +
  • +
  • + + 支付通道|Channels Analysis + +
  • +
  • + + 交易金额分析
  • diff --git a/src/main/ui/static/analysis/channels_analysis.js b/src/main/ui/static/analysis/channels_analysis.js index 7cf052150..c9153a7db 100644 --- a/src/main/ui/static/analysis/channels_analysis.js +++ b/src/main/ui/static/analysis/channels_analysis.js @@ -6,7 +6,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' var app = angular.module('channelsAnalysisApp', ['ui.bootstrap', 'ui.router', 'frapontillo.bootstrap-switch']); var colors = ['#00c0ef', '#00a65a', '#ff851b', '#f39c12', '#d81b60', '#605ca8', '#dd4b39', '#008080', '#8B008B', '#D2691E', '#708090']; app.config(['$stateProvider', function ($stateProvider) { - $stateProvider.state('analysis_transaction.channelsAnalysis', { + $stateProvider.state('analysis_channelsAnalysis', { url: '/channelsAnalysis', templateUrl: '/static/analysis/templates/channels_analysis.html', controller: 'channelsCtrl' diff --git a/src/main/ui/static/analysis/refund_analysis.js b/src/main/ui/static/analysis/refund_analysis.js index 870bbf544..f77ba79e2 100644 --- a/src/main/ui/static/analysis/refund_analysis.js +++ b/src/main/ui/static/analysis/refund_analysis.js @@ -3,7 +3,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' var app = angular.module('refundAnalysisApp', ['ui.bootstrap', 'ui.router', 'frapontillo.bootstrap-switch']); var colors = ['#00c0ef', '#00a65a', '#ff851b', '#f39c12', '#d81b60', '#605ca8', '#dd4b39', '#008080', '#8B008B', '#D2691E', '#708090']; app.config(['$stateProvider', function ($stateProvider) { - $stateProvider.state('analysis_transaction.refundAnalysis', { + $stateProvider.state('analysis_refundAnalysis', { url: '/refunds', templateUrl: '/static/analysis/templates/refund_analysis.html', controller: 'refundListCtrl' diff --git a/src/main/ui/static/analysis/trans-analysis-monthly.js b/src/main/ui/static/analysis/trans-analysis-monthly.js index c1bccba7c..9353218cc 100644 --- a/src/main/ui/static/analysis/trans-analysis-monthly.js +++ b/src/main/ui/static/analysis/trans-analysis-monthly.js @@ -15,7 +15,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts','./transaction/an { key: 'day', label: '按日统计', - sref:"analysis_transaction.transanalysis" + sref:"analysis_transanalysis" }, { key: 'month', diff --git a/src/main/ui/static/analysis/trans-analysis.js b/src/main/ui/static/analysis/trans-analysis.js index 2087785c3..7bccea5a0 100644 --- a/src/main/ui/static/analysis/trans-analysis.js +++ b/src/main/ui/static/analysis/trans-analysis.js @@ -3,7 +3,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts','./transaction/an var colors = ['#00c0ef', '#00a65a', '#ff851b', '#f39c12', '#d81b60', '#605ca8', '#dd4b39', '#008080', '#8B008B', '#D2691E', '#708090']; var app = angular.module('transAnalysis', ['ui.bootstrap', 'ui.router', 'ngEcharts']); app.config(['$stateProvider', function ($stateProvider) { - $stateProvider.state('analysis_transaction.transanalysis', { + $stateProvider.state('analysis_transanalysis', { url: '/analysis/transaction', templateUrl: '/static/analysis/templates/trans_analysis.html', controller: 'transAnalysisCtrl' @@ -15,7 +15,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts','./transaction/an { key: 'day', label: '按日统计', - sref:"analysis_transaction.transanalysis" + sref:"analysis_transanalysis" }, { key: 'month', diff --git a/src/main/ui/static/analysis/transaction/analysis-transaction.js b/src/main/ui/static/analysis/transaction/analysis-transaction.js index dafc91ff2..7e4caa701 100644 --- a/src/main/ui/static/analysis/transaction/analysis-transaction.js +++ b/src/main/ui/static/analysis/transaction/analysis-transaction.js @@ -10,11 +10,11 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts'], function (angul url: '/analysis/transaction', templateUrl: '/static/analysis/transaction/templates/analysis_transaction.html', controller: 'analysisTransactionCtrl' - }).state('analysis_transaction.gateway', { - url: '/gateway', + }).state('analysis_gateway', { + url: '/analysis/transaction/gateway', templateUrl: '/static/dashboard/templates/dashboard_gateway.html', controller: 'gatewayTransCtrl' - }).state('analysis_transaction.amountlsAnalysis', { + }).state('analysis_amountlsAnalysis', { url: '/amountRangeAnalysis', templateUrl: '/static/analysis/templates/transaction_amount_Analysis.html', controller: 'transactionAmountCtrl' @@ -159,7 +159,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts'], function (angul }]); app.controller('analysisTransactionCtrl', ['$scope','$state', function ($scope,$state) { if($state.is('analysis_transaction')){ - $state.go('.transanalysis'); + $state.go('analysis_transanalysis'); } }]); diff --git a/src/main/ui/static/analysis/transaction/templates/analysis_transaction.html b/src/main/ui/static/analysis/transaction/templates/analysis_transaction.html index bb2327797..dd409ca64 100644 --- a/src/main/ui/static/analysis/transaction/templates/analysis_transaction.html +++ b/src/main/ui/static/analysis/transaction/templates/analysis_transaction.html @@ -4,34 +4,34 @@
    + + + +
    From 28d94d9a64de97e7f3b4ddb6c27ef332df5c60b8 Mon Sep 17 00:00:00 2001 From: luoyang Date: Tue, 30 Oct 2018 11:45:28 +0800 Subject: [PATCH 3/4] add clearManager --- .../payment/manage/signin/core/SignInAccountService.java | 2 ++ .../manage/signin/core/impls/ManagerAccountServiceImpl.java | 4 ++++ .../manage/signin/core/impls/SignInAccountServiceImpl.java | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/src/main/java/au/com/royalpay/payment/manage/signin/core/SignInAccountService.java b/src/main/java/au/com/royalpay/payment/manage/signin/core/SignInAccountService.java index 0cdaa4683..e9b82b21e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/signin/core/SignInAccountService.java +++ b/src/main/java/au/com/royalpay/payment/manage/signin/core/SignInAccountService.java @@ -11,6 +11,8 @@ public interface SignInAccountService { JSONObject getManager(String accountId); + void clearManager(String accountId); + JSONObject getClient(String accountId); void clearAccountCache(String accountId); diff --git a/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/ManagerAccountServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/ManagerAccountServiceImpl.java index d99faacd6..078087413 100644 --- a/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/ManagerAccountServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/ManagerAccountServiceImpl.java @@ -6,6 +6,7 @@ import au.com.royalpay.payment.manage.mappers.system.OrgMapper; import au.com.royalpay.payment.manage.organizations.core.OrgManager; import au.com.royalpay.payment.manage.signin.beans.ManagerInfo; import au.com.royalpay.payment.manage.signin.core.ManagerAccountsService; +import au.com.royalpay.payment.manage.signin.core.SignInAccountService; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.NotFoundException; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; @@ -37,6 +38,8 @@ public class ManagerAccountServiceImpl implements ManagerAccountsService { @Resource private OrgManager orgManager; + @Resource + private SignInAccountService signInAccountService; @Override public PageList listManagers(JSONObject loginManager,JSONObject params) { @@ -105,6 +108,7 @@ public class ManagerAccountServiceImpl implements ManagerAccountsService { } obj.put("manager_id", userId); managerMapper.update(obj); + signInAccountService.clearManager(userId); } @Override diff --git a/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/SignInAccountServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/SignInAccountServiceImpl.java index fd785877d..5b790db1c 100644 --- a/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/SignInAccountServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/SignInAccountServiceImpl.java @@ -129,6 +129,12 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati return manager; } + @Override + @CacheEvict(value = ":login:managers:", key = "''+#accountId") + public void clearManager(String accountId) { + + } + @Override @Cacheable(value = ":login:clients:", key = "''+#accountId") public JSONObject getClient(String accountId) { From 4927d0998eebad7f4f45151e6338a272a13270d8 Mon Sep 17 00:00:00 2001 From: "james.zhao" Date: Tue, 30 Oct 2018 17:19:06 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=95=86=E6=88=B7=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=B7=BB=E5=8A=A0remark=E5=92=8Cgateway?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/impls/TradeLogServiceImpl.java | 4 ++- .../mappers/payment/TransactionMapper.xml | 32 +++++++++++++++++- src/main/resources/jasper/trans_excel.jasper | Bin 46921 -> 47357 bytes 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java index aa9b9984c..6e57d28d5 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java @@ -483,7 +483,9 @@ public class TradeLogServiceImpl implements TradeLogService { logs.stream().forEach(p -> { String login_id = p.getString("login_id"); if (StringUtils.isNotEmpty(login_id)) { - p.put("order_detail", (StringUtils.isEmpty(p.getString("order_detail")) ? "" : p.getString("order_detail")) + "(alipay_id:" + login_id + ")"); + p.put("order_detail", (StringUtils.isEmpty(p.getString("order_detail")) ? "" : login_id+":"+p.getString("order_detail"))); + }else{ + p.put("order_detail", (StringUtils.isEmpty(p.getString("order_detail")) ? "" : p.getString("order_detail"))); } }); } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml index 7886a2c6a..055d985b9 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml @@ -64,6 +64,36 @@ WHEN 2 THEN 'Preauthorised' END) clear_status, o.order_detail,o.display_amount,o.channel,o.currency,o.pre_authorization, + CASE o.gateway + WHEN 0 + THEN 'Retail In-Store' + WHEN 1 + THEN 'Retail In-Store' + WHEN 2 + THEN 'QR Code' + WHEN 3 + THEN 'Online API' + WHEN 4 + THEN 'WeChat HTML5' + WHEN 5 + THEN 'Retail API' + WHEN 6 + THEN 'Retail API' + WHEN 7 + THEN 'QR Code' + WHEN 8 + THEN 'Mobile H5' + WHEN 9 + THEN 'Third Party Gateway' + WHEN 10 + THEN 'APP' + WHEN 12 + THEN 'MICROAPP' + WHEN 13 + THEN 'Native QR Code' + WHEN 14 + THEN 'Share Link' + END AS gateway, CASE o.channel WHEN 'Alipay' THEN ra.login_id WHEN 'AlipayOnline' THEN ra.login_email @@ -926,4 +956,4 @@ select sum(if(temp.transaction_type='Credit',temp.clearing_amount*d.proportion, order by period_start - \ No newline at end of file + diff --git a/src/main/resources/jasper/trans_excel.jasper b/src/main/resources/jasper/trans_excel.jasper index 714241425107fd5de44573d33dd1002c25814f96..ddf12f23f6c587848c6e5d43b4b5003fe7cd3043 100644 GIT binary patch literal 47357 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 Wq?ncI@I3qT$ZFgo(5gRTjQ=0?{n_*Y literal 46921 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 YgFc+^9=3Iw``P1a>{8#WKTgd3U*RB4nE(I)