From d466f2fc0f1d86a0638af2a60e259382b22b5805 Mon Sep 17 00:00:00 2001 From: liuxinxin Date: Wed, 11 Dec 2019 13:49:42 +0800 Subject: [PATCH] =?UTF-8?q?[R]KCY=E8=AE=A4=E8=AF=81Web=E7=AB=AF=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/ClientComplianceApply.java | 2 + .../core/impl/ClientComplianceApplyImpl.java | 32 +++- .../web/ComplianceAuditController.java | 7 + .../system/ClientComplianceCompanyMapper.java | 4 + .../manage/merchants/core/ClientManager.java | 4 + .../core/impls/ClientManagerImpl.java | 26 +++ .../core/impls/SignInAccountServiceImpl.java | 16 +- .../manage/signin/web/SignInController.java | 1 + src/main/ui/static/boot/indexMainApp.js | 14 +- .../payment/partner/partner_compliance.js | 41 +++++ .../templates/client_kyc_files_to_auth.html | 151 ++++++++++++++++++ .../templates/compliance_files_advice.html | 10 ++ .../partner_detail_for_compliance.html | 3 + .../sys/templates/partner_kyc_flies_auth.html | 2 +- 14 files changed, 300 insertions(+), 13 deletions(-) create mode 100644 src/main/ui/static/payment/partner/templates/client_kyc_files_to_auth.html diff --git a/src/main/java/au/com/royalpay/payment/manage/complianceAudit/core/ClientComplianceApply.java b/src/main/java/au/com/royalpay/payment/manage/complianceAudit/core/ClientComplianceApply.java index e11b14a4c..1c1efdaf5 100644 --- a/src/main/java/au/com/royalpay/payment/manage/complianceAudit/core/ClientComplianceApply.java +++ b/src/main/java/au/com/royalpay/payment/manage/complianceAudit/core/ClientComplianceApply.java @@ -14,6 +14,8 @@ public interface ClientComplianceApply { JSONObject complianceAuthFile(JSONObject client); + JSONObject kycAuthFile(JSONObject client); + void passComplianceFile(JSONObject manager,int clientId,JSONObject passInfo); void refuseComplianceFile(JSONObject manager,int clientId,JSONObject refuseInfo); diff --git a/src/main/java/au/com/royalpay/payment/manage/complianceAudit/core/impl/ClientComplianceApplyImpl.java b/src/main/java/au/com/royalpay/payment/manage/complianceAudit/core/impl/ClientComplianceApplyImpl.java index ca70877fd..30a20f497 100644 --- a/src/main/java/au/com/royalpay/payment/manage/complianceAudit/core/impl/ClientComplianceApplyImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/complianceAudit/core/impl/ClientComplianceApplyImpl.java @@ -80,6 +80,37 @@ public class ClientComplianceApplyImpl implements ClientComplianceApply }; + @Override + public JSONObject kycAuthFile(JSONObject client) + { + String[] fileKeys = {"client_bank_file", "kyc_utility_bill_file", "client_id_file"}; + if (client == null) { + throw new InvalidShortIdException(); + } + List clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id")); + JSONObject fileJson = new JSONObject(); + if (clientFiles != null && clientFiles.size() > 0) { + for (String fileKey : fileKeys) { + List clientFileUrl = clientFiles.stream() + .filter(json -> (fileKey.equals(json.getString("file_name")))) + .sorted((log1, log2) -> log2.getDate("last_update_date").compareTo(log1.getDate("last_update_date"))) + .map(json -> { + JSONObject params = new JSONObject(); + params.put("file_id", json.getString("file_id")); + params.put("status", json.getString("status")); + params.put("file_value", json.getString("file_value")); + return params; + }) + .collect(Collectors.toList()); + if (clientFileUrl != null && clientFileUrl.size() > 0) { + fileJson.put(fileKey, clientFileUrl); + } + } + } + return fileJson; + + }; + @Override public void passComplianceFile(JSONObject manager, int clientId, JSONObject passInfo) { JSONObject complianceDetail = clientComplianceCompanyMapper.findFileByClientId(clientId); @@ -123,7 +154,6 @@ public class ClientComplianceApplyImpl implements ClientComplianceApply } if (complianceDetail.getIntValue("status") == 2) { throw new BadRequestException("已打回,请避免重复操作"); - } complianceDetail.put("description",refuseInfo.getString("description")); complianceDetail.put("operator_id", manager.getString("manager_id")); diff --git a/src/main/java/au/com/royalpay/payment/manage/complianceAudit/web/ComplianceAuditController.java b/src/main/java/au/com/royalpay/payment/manage/complianceAudit/web/ComplianceAuditController.java index 4d2f1abb0..e75f4db95 100644 --- a/src/main/java/au/com/royalpay/payment/manage/complianceAudit/web/ComplianceAuditController.java +++ b/src/main/java/au/com/royalpay/payment/manage/complianceAudit/web/ComplianceAuditController.java @@ -50,4 +50,11 @@ public class ComplianceAuditController return clientManager.getComplianceFilesForBD(client); } + @RequestMapping(value = "/kyc/clientViewFiles/{clientMoniker}",method = RequestMethod.GET) + @RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT}) + public JSONObject searchKycFiles(@PathVariable String clientMoniker) { + JSONObject client = clientMapper.findClientByMoniker(clientMoniker); + return clientManager.getKycFilesForBD(client); + } + } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientComplianceCompanyMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientComplianceCompanyMapper.java index fc04c8c55..f8c8ebb5e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientComplianceCompanyMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientComplianceCompanyMapper.java @@ -30,6 +30,10 @@ public interface ClientComplianceCompanyMapper { @AdvanceSelect(addonWhereClause = "type = 2") JSONObject findKycFileByClientId(@Param("client_id") int client_id); + @AutoSql(type = SqlType.SELECT) + @AdvanceSelect(addonWhereClause = "type = 2 and status in(0,1,9)") + JSONObject findKycFileComplete(@Param("client_id") int client_id); + PageList listClientCompliances(JSONObject params, PageBounds pageBounds); List listNeedHelpClients(JSONObject params); 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 52f4aec4d..1c22aa5bc 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 @@ -505,6 +505,8 @@ public interface ClientManager { JSONObject getComplianceFilesForBD(JSONObject account); + JSONObject getKycFilesForBD(JSONObject account); + /** * 获取商户所有增值服务 * @@ -513,6 +515,8 @@ public interface ClientManager { */ JSONObject partnerIncrementalService(String clientMoniker); + boolean isPartnerKycfilesComplete(String clientMoniker); + /** * 保存/修改增值服务配置 * 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 a9e414d16..d7352ea12 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 @@ -2287,6 +2287,18 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid return file; } + @Override + public JSONObject getKycFilesForBD(JSONObject account) { + JSONObject client = getClientInfo(account.getIntValue("client_id")); + if (client == null) { + throw new InvalidShortIdException(); + } + JSONObject file = clientComplianceApply.kycAuthFile(client); + file.put("file_company", clientComplianceCompanyMapper.findKycFileByClientId(account.getIntValue("client_id"))); + file.put("client", client); + return file; + } + @Override @Transactional public void updateClientBDUsers(JSONObject manager, String clientMoniker, JSONObject data) throws Exception { @@ -6221,6 +6233,20 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid }}; } + @Override + public boolean isPartnerKycfilesComplete(String clientMoniker) { + boolean lessKycFiles = true; + JSONObject client = clientMapper.findClientByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + JSONObject KycFilesAuth = clientComplianceCompanyMapper.findKycFileComplete(client.getIntValue("client_id")); + if(KycFilesAuth != null){ + lessKycFiles = false; + } + return lessKycFiles; + } + @Override public JSONObject partnerIncrementalServiceInfo(String clientMoniker,String channel){ JSONObject client = clientMapper.findClientByMoniker(clientMoniker); 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 478bb2877..74bb84a63 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 @@ -746,7 +746,12 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati @Override public JSONObject checkKycFileStatus(JSONObject client) { JSONObject result = new JSONObject(); - result.put("client_less_file", false); + boolean lessKycFiles = true; + JSONObject KycFilesAuth = clientComplianceCompanyMapper.findKycFileComplete(client.getIntValue("client_id")); + if(KycFilesAuth != null){ + lessKycFiles = false; + } + result.put("client_less_file", lessKycFiles); List clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id")); boolean clientFilesIsLess = false; for (int i = 0; i < KYC_FILE_KEYS.length; i++) { @@ -794,10 +799,8 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati } fileJson.put("file_write", true); result.put(fileKey,fileJson); - clientFilesIsLess = true; } }else { - clientFilesIsLess = true; for (int c = 0; c < KYC_FILE_KEYS.length; c++) { String key = KYC_FILE_KEYS[c]; JSONObject fileJson = new JSONObject(); @@ -808,12 +811,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati } } } - if ((client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") == 1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4 ) { - if (clientFilesIsLess) { - result.put("client_less_file", clientFilesIsLess); - whenClientLessFile(client, result); - } - } + return result; } diff --git a/src/main/java/au/com/royalpay/payment/manage/signin/web/SignInController.java b/src/main/java/au/com/royalpay/payment/manage/signin/web/SignInController.java index b7e7a3f67..7522bf9b0 100644 --- a/src/main/java/au/com/royalpay/payment/manage/signin/web/SignInController.java +++ b/src/main/java/au/com/royalpay/payment/manage/signin/web/SignInController.java @@ -191,6 +191,7 @@ public class SignInController { @PartnerMapping(value = "/current_partner", method = RequestMethod.GET) public JSONObject partnerLoginStatus(@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject partner) { partner.put("has_incremental_setvice",clientManager.partnerIncrementalService(partner.getString("client_moniker")).getJSONArray("all_service").size()>0); + partner.put("lessKycFiles",clientManager.isPartnerKycfilesComplete(partner.getString("client_moniker"))); return partner; } diff --git a/src/main/ui/static/boot/indexMainApp.js b/src/main/ui/static/boot/indexMainApp.js index 252bf4eb6..814906a71 100644 --- a/src/main/ui/static/boot/indexMainApp.js +++ b/src/main/ui/static/boot/indexMainApp.js @@ -52,7 +52,10 @@ define(['angular', 'angularSanitize', 'angularAnimate', 'angularMessages', 'uiRo resolve: { file: ['$http', function ($http) { return $http.get('/client/partner_info/compliance/clientViewFiles'); - }] + }], + kycFile: ['$http', function ($http) { + return $http.get('/client/partner_info/kyc/clientViewFiles'); + }] } @@ -63,6 +66,11 @@ define(['angular', 'angularSanitize', 'angularAnimate', 'angularMessages', 'uiRo $scope.ComplianceToperfect(); complianceNoticeCount++; } + if($scope.currentUser.lessKycFiles && complianceNoticeCount==0 && $scope.currentUser.role!=3) + { + $scope.ComplianceToperfect(); + complianceNoticeCount++; + } connectWebSocket(); if ($scope.currentUser.role == 1 || $scope.currentUser.role == 2) { $scope.getAgStatus(); @@ -477,8 +485,10 @@ define(['angular', 'angularSanitize', 'angularAnimate', 'angularMessages', 'uiRo }) } }]); - app.controller('partnerFilesCtrl', ['$scope', '$http', '$sce', 'file', function ($scope, $http, $sce, file) { + app.controller('partnerFilesCtrl', ['$scope', '$http', '$sce', 'file', 'kycFile', function ($scope, $http, $sce, file , kycFile) { $scope.file = angular.copy(file); + $scope.kycFile = angular.copy(kycFile); + debugger; }]); app.factory('myLoginLogView', ['$uibModal', function ($uibModal) { return { diff --git a/src/main/ui/static/payment/partner/partner_compliance.js b/src/main/ui/static/payment/partner/partner_compliance.js index 4349bc0c1..f03c14d31 100644 --- a/src/main/ui/static/payment/partner/partner_compliance.js +++ b/src/main/ui/static/payment/partner/partner_compliance.js @@ -33,6 +33,15 @@ define(['angular', 'static/commons/commons', 'uiBootstrap', 'uiRouter', 'ngBootS url: '/partners/KycFilesAuth', templateUrl: 'static/sys/templates/partner_kyc_flies_auth.html', controller: 'kycFilesAuthForClientCtrl' + }).state('kyc_files_detail', { + url: '/{client_moniker}/kyc_files_detail', + templateUrl: '/static/payment/partner/templates/client_kyc_files_to_auth.html', + controller: 'partnerKycFilesDetail', + resolve: { + file: ['$http','$stateParams',function ($http, $stateParams) { + return $http.get('/compliance/audit/kyc/clientViewFiles/'+ $stateParams.client_moniker); + }] + } }) }]); @@ -112,6 +121,38 @@ define(['angular', 'static/commons/commons', 'uiBootstrap', 'uiRouter', 'ngBootS }; }]); + app.controller('partnerKycFilesDetail', ['$rootScope', '$scope', '$http', '$state', '$uibModal', 'commonDialog', 'file', function ($rootScope, $scope, $http, $state, $uibModal, commonDialog, file) { + $scope.file = file.data || {}; + debugger; + $scope.partner = $scope.file.client; + + $scope.passPartnerComplianceFiles = function () { + commonDialog.confirm({ + title: 'Confirm!', + content: '确认是否通过商户合规文件?' + }).then(function () { + $http.put('/compliance/audit/'+$scope.file.client.client_id+'/pass/complianceFile',{}).then(function (resp) { + $state.reload(); + }, function (resp) { + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); + }) + }) + } + + + $scope.refusePartnerComplianceFiles = function (obj) { + var partner = angular.copy(obj); + $uibModal.open({ + templateUrl: '/static/payment/partner/templates/refuse_reason.html', + controller: 'refusePartnerComplianceFilesCtrl', + resolve: { + partner: partner + } + }) + }; + }]); + + app.controller('refusePartnerComplianceFilesCtrl', ['$scope', '$http', '$state', 'partner', function ($scope, $http, $state, partner) { $scope.partner = angular.copy(partner); $scope.partner.description = ""; diff --git a/src/main/ui/static/payment/partner/templates/client_kyc_files_to_auth.html b/src/main/ui/static/payment/partner/templates/client_kyc_files_to_auth.html new file mode 100644 index 000000000..0bee58b09 --- /dev/null +++ b/src/main/ui/static/payment/partner/templates/client_kyc_files_to_auth.html @@ -0,0 +1,151 @@ + + +
+
+
+ +
+
+
diff --git a/src/main/ui/static/payment/partner/templates/compliance_files_advice.html b/src/main/ui/static/payment/partner/templates/compliance_files_advice.html index f6c7938b5..d47978378 100644 --- a/src/main/ui/static/payment/partner/templates/compliance_files_advice.html +++ b/src/main/ui/static/payment/partner/templates/compliance_files_advice.html @@ -1,5 +1,6 @@ + +
+
+
+

前去补充合规文件:点击前往

+

前去补充KYC文件:点击前往

+
+
+